ConceptC++ Concept Web

Concept BasicOutputIterator

concept BasicOutputIterator<typename X>
  : IteratorAssociatedTypes<X>, CopyConstructible<X>
{
  requires Assignable<reference, value_type>;
 
  typename postincrement_result = X;
  requires Dereferenceable<postincrement_result&>,
           Assignable<Dereferenceable<postincrement_result&>::reference,
                      value_type>,
           Convertible<postincrement_result, const 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<value_type, Value>
concept_map OutputIterator<X, Value> {
  typedef Value                       value_type;
  typedef X::reference                reference;
  typedef X::postincrement_result     postincrement_result;
};