std::input_or_output_iterator
Defined in header <iterator>
|
||
template <class I> concept input_or_output_iterator = |
(since C++20) | |
The input_or_output_iterator
concept forms the basis of the iterator concept taxonomy; every iterator type satisfies the input_or_output_iterator
requirements.
The exposition-only concept dereferenceable
is satisfied if and only if the expression *std::declval<T&>() is valid and has a referenceable type (in particular, not void).
Equality preservation
Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).
Notes
input_or_output_iterator
itself only specifies operations for dereferencing and incrementing an iterator. Most algorithms will require additional operations, for example:
- comparing iterators with sentinels (see
sentinel_for
); - reading values from an iterator (see
indirectly_readable
andinput_iterator
) - writing values to an iterator (see
indirectly_writable
andoutput_iterator
) - a richer set of iterator movements (see
forward_iterator
,bidirectional_iterator
,random_access_iterator
)
Unlike the LegacyIterator requirements, the input_or_output_iterator
concept does not require copyability.