25
Iterators library
[iterators]
25.3
Iterator requirements
[iterator.requirements]
25.3.4
Iterator concepts
[iterator.concepts]
25.3.4.6
Concept
input_
or_
output_
iterator
[iterator.concept.iterator]
1
#
The
input_
or_
output_
iterator
concept forms the basis of the iterator concept taxonomy; every iterator models
input_
or_
output_
iterator
.
This concept specifies operations for dereferencing and incrementing an iterator
.
Most algorithms will require additional operations to compare iterators with sentinels (
[iterator.
concept.
sentinel]
), to read (
[iterator.
concept.
input]
) or write (
[iterator.
concept.
output]
) values, or to provide a richer set of iterator movements (
[iterator.
concept.
forward]
,
[iterator.
concept.
bidir]
,
[iterator.
concept.
random.
access]
)
.
template
<
class
I
>
concept
input_
or_
output_
iterator
=
requires
(
I i
)
{
{
*
i
}
-
>
can-reference
;
}
&
&
weakly_
incrementable
<
I
>
;
2
#
[
Note
1
:
Unlike the
Cpp17Iterator
requirements, the
input_
or_
output_
iterator
concept does not require copyability
.
—
end note
]