concept input_or_output_iterator =
requires(I i) {
{ *i } -> /*can-reference*/;
} &&
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 /*can-reference*/ is satisfied if and only if the type is referenceable.
[edit] Notesinput_or_output_iterator
itself only specifies operations for dereferencing and incrementing an iterator. Most algorithms will require additional operations, for example:
sentinel_for
);indirectly_readable
and input_iterator
);indirectly_writable
and output_iterator
);forward_iterator
, bidirectional_iterator
, random_access_iterator
).Unlike the LegacyIterator requirements, the input_or_output_iterator
concept does not require copyability.
*i is required to be equality-preserving, although the increment operations required by weakly_incrementable
are not.
A minimum iterator.
#include <cstddef> #include <iterator> struct SimpleIterator { using difference_type = std::ptrdiff_t; int operator*(); SimpleIterator& operator++(); void operator++(int) { ++*this; } }; static_assert(std::input_or_output_iterator<SimpleIterator>);
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4