std:: output_iterator

From cppreference.com
Iterator library
Iterator concepts
output_iterator
(C++20)

Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
Defined in header <iterator>
template < class I, class T >

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 */

} ;
(since C++20)

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.

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 ; .

Equality preservation

Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).

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.

See also

specifies that objects of a type can be incremented and dereferenced
(concept)