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 or write values, or to provide a richer set of iterator movements ([forward.iterators], [bidirectional.iterators], [random.access.iterators]).
A type X satisfies the Iterator requirements if:
X satisfies the CopyConstructible, CopyAssignable, and Destructible requirements ([utility.arg.requirements]) and lvalues of type X are swappable, and
the expressions in Table 94 are valid and have the indicated semantics.
Expression | Return type | Operational | Assertion/note |
semantics | pre-/post-condition | ||
*r | unspecified | Requires: r is dereferenceable. | |
++r | X& |