Files
2025-10-25 03:02:53 +03:00

2.5 KiB

[iterator.concept.output]

24 Iterators library [iterators]

24.3 Iterator requirements [iterator.requirements]

24.3.4 Iterator concepts [iterator.concepts]

24.3.4.10 Concept output_iterator [iterator.concept.output]

1

#

The output_iterator concept defines requirements for a type that can be used to write values (from the requirement forindirectly_writable ([iterator.concept.writable])) and which can be both pre- and post-incremented.

[Note 1:

Output iterators are not required to model equality_comparable.

— end note]

template<class I, class T>concept output_iterator =input_or_output_iterator &&indirectly_writable<I, T> &&requires(I i, T&& t) {*i++ = std::forward(t); // not required to be equality-preserving};

2

#

Let E be an expression such that decltype((E)) is T, and let i be a dereferenceable object of type I.

I and T model output_iterator<I, T> only if*i++ = E; has effects equivalent to:*i = E;++i;

3

#

Recommended practice: The implementation of an algorithm on output iterators should never attempt to pass through the same iterator twice; such an algorithm should be a single-pass algorithm.