27
Iterators library
[iterators]
27.2
Iterator requirements
[iterator.requirements]
27.2.2
Iterator
[iterator.iterators]
1
#
The
Iterator
requirements form the basis of the iterator concept taxonomy; every iterator satisfies the
Iterator
requirements
.
This set of requirements specifies operations for dereferencing and incrementing an iterator
.
Most algorithms will require additional operations to read (
[input.iterators]
) or write (
[output.iterators]
) values, or to provide a richer set of iterator movements (
[forward.iterators]
,
[bidirectional.iterators]
,
[random.access.iterators]
)
.
2
#
A type
X
satisfies the
Iterator
requirements if:
(2.1)
X
satisfies the
CopyConstructible
,
CopyAssignable
, and
Destructible
requirements (
[utility.arg.requirements]
) and lvalues of type
X
are swappable (
[swappable.requirements]
), and
(2.2)
the expressions in Table
89
are valid and have the indicated semantics
.
Table
89
— Iterator requirements
Expression
Return type
Operational
Assertion/note
semantics
pre-/post-condition
*r
unspecified
Requires:
r
is dereferenceable
.
++r
X&