[iterator.concept.bidir] (original) (raw)
23 Iterators library [iterators]
23.3 Iterator requirements [iterator.requirements]
23.3.4 Iterator concepts [iterator.concepts]
23.3.4.12 Concept bidirectional_iterator [iterator.concept.bidir]
The bidirectional_iterator concept adds the ability to move an iterator backward as well as forward.
A bidirectional iterator r is decrementable if and only if there exists some q such that++q == r.
Decrementable iterators r shall be in the domain of the expressions--r and r--.
Let a and b be equal objects of type I.
I models bidirectional_iterator only if:
- If a and b are decrementable, then all of the following are true:
- addressof(--a) == addressof(a)
- bool(a-- == b)
- after evaluating both a-- and --b,bool(a == b) is still true
- bool(++(--a) == b)
- If a and b are incrementable, thenbool(--(++a) == b).