ConceptC++ Concept Web

Concept BasicOutputIterator

concept BasicOutputIterator<typename X>
  : IteratorAssociatedTypes, CopyConstructible
{
  requires Assignable;
 
  typename postincrement_result = X;
  requires Dereferenceable,
           Assignable<Dereferenceable::reference,
                      value_type>,
           Convertibleconst X&>;
 
  reference operator*(X&);
  X& operator++(X&);
  postincrement_result operator++(X&, int);
};

Where Defined

#include <iterator>

Description

The BasicOutputIterator concept describes an output iterator that has one, fixed value type. Unlike OutputIterator, BasicOutputIterator is a part of the iterator refinement hierarchy.

X& operator++(X& r);

Postcondition: &r == &++r.

postincrement_result operator++(X& r, int); 

Effects: equivalent to

{ X tmp = r; 
++r; 
return tmp; }   

Every BasicOutputIterator is an OutputIterator for value types Assignable to its value_type. This allows algorithms specified with OutputIterator (the less restrictive concept) to work with iterators that have concept maps for the more common BasicOutputIterator concept.

template<BasicOutputIterator X, typename Value>
requires Assignable
concept_map OutputIterator {
  typedef Value                       value_type;
  typedef X::reference                reference;
  typedef X::postincrement_result     postincrement_result;
};