Difference between revisions of "cpp/iterator/output iterator"
m (→Semantic requirements: note subsumed concepts) |
|||
Line 14: | Line 14: | ||
{{dcl end}} | {{dcl end}} | ||
− | The {{tt|output_iterator}} concept is a refinement of {{lconcept|input_or_output_iterator}}, adding the requirement that it can be used to write | + | The {{tt|output_iterator}} concept is a refinement of {{lconcept|input_or_output_iterator}}, adding the requirement that it can be used to write values of type and value category encoded by {{tt|T}} (via {{lconcept|indirectly_writable}}). {{lconcept|equality_comparable}} is not required. |
===Semantic requirements=== | ===Semantic requirements=== |
Revision as of 02:33, 5 April 2021
Defined in header <iterator>
|
||
template <class I, class T> concept output_iterator = |
(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.
Contents |
Semantic requirements
Let E
be an expression such that decltype((E)) is T
, and i
be a dereferenceable object of type I
. 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
(C++20) |
specifies that objects of a type can be incremented and dereferenced (concept) |