[iterator.concept.forward]
24 Iterators library [iterators]
24.3 Iterator requirements [iterator.requirements]
24.3.4 Iterator concepts [iterator.concepts]
24.3.4.11 Concept forward_iterator [iterator.concept.forward]
The forward_iterator concept adds copyability, equality comparison, and the multi-pass guarantee, specified below.
The domain of == for forward iterators is that of iterators over the same underlying sequence.
However, value-initialized iterators of the same type may be compared and shall compare equal to other value-initialized iterators of the same type.
Pointers and references obtained from a forward iterator into a range [i, s) shall remain valid while [i, s) continues to denote a range.
Two dereferenceable iterators a and b of type X offer the multi-pass guarantee if
- a == b implies ++a == ++b and
- the expression ((void)[](X x){++x;}(a), *a) is equivalent to the expression *a.