std::output_iterator
<iterator>
concept output_iterator =
std::input_or_output_iterator <I> &&
std::indirectly_writable <I, T> &&
requires(I i, T&& t) {
*i++ = std::forward <T>(t); /* not required to be equality-preserving */
The output_iterator
concept is a refinement of input_or_output_iterator
, adding the requirement that it can be used to write values of type and value category encoded by T
(via indirectly_writable
). equality_comparable
is not required.
[edit] Semantic requirements
Let E
be an expression such that decltype((E)) is T
, and i
be a dereferenceable object of type I
. std::output_iterator<I, T> is modeled only if all the concepts it subsumes are modeled, and *i++ = E; has effects equivalent to *i = E; ++i;.
[edit] Equality preservation
Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).
[edit] Notes
Unlike the LegacyOutputIterator requirements, the output_iterator
concept does not require that the iterator category tag be defined.
Algorithms on output iterators should be single pass.