C++ named requirements: LegacyBidirectionalIterator
A LegacyBidirectionalIterator is a LegacyForwardIterator that can be moved in both directions (i.e. incremented and decremented).
If a LegacyBidirectionalIterator
it originates from a Container, then
it's value_type is the same as the container's, so dereferencing (*it) obtains the container's value_type.
It satisfies LegacyBidirectionalIterator if
- The type
b, iterators of type
reference,the type denoted by
The following expressions must be valid and have their specified effects
|a--||convertible to const It&||It temp = a;
A mutable LegacyBidirectionalIterator is a LegacyBidirectionalIterator that additionally satisfies the LegacyOutputIterator requirements.
The begin iterator is not decrementable and the behavior is undefined if --container.begin() is evaluated.
A bidirectional iterator does not have to be dereferenceable to be decrementable (in particular, the end iterator is not dereferenceable but is decrementable)
For the definition of std::iterator_traits, the following exposition-only concept is defined.
where the exposition-only concept
 See also
| specifies that a |
|Iterator library||provides definitions for iterators, iterator traits, adaptors, and utility functions|