1234567891011121314151617181920212223242526272829303132333435363738394041 |
- .. Copyright David Abrahams 2006. Distributed under the Boost
- .. Software License, Version 1.0. (See accompanying
- .. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Bidirectional Traversal Concept
- ...............................
- A class or built-in type ``X`` models the *Bidirectional Traversal*
- concept if, in addition to ``X`` meeting the requirements of Forward
- Traversal Iterator, the following expressions are valid and respect
- the stated semantics.
- +--------------------------------------------------------------------------------------+
- |Bidirectional Traversal Iterator Requirements (in addition to Forward Traversal |
- |Iterator) |
- +--------------------------------+-------------------------------+---------------------+
- |Expression |Return Type |Assertion/Semantics /|
- | | |Pre-/Post-condition |
- +================================+===============================+=====================+
- |``--r`` |``X&`` |pre: there exists |
- | | |``s`` such that ``r |
- | | |== ++s``. post: |
- | | |``s`` is |
- | | |dereferenceable. |
- | | |``--(++r) == r``. |
- | | |``--r == --s`` |
- | | |implies ``r == |
- | | |s``. ``&r == &--r``. |
- +--------------------------------+-------------------------------+---------------------+
- |``r--`` |convertible to ``const X&`` |:: |
- | | | |
- | | | { |
- | | | X tmp = r; |
- | | | --r; |
- | | | return tmp; |
- | | | } |
- +--------------------------------+-------------------------------+---------------------+
- |``iterator_traversal<X>::type`` |Convertible to | |
- | |``bidirectional_traversal_tag``| |
- | | | |
- +--------------------------------+-------------------------------+---------------------+
|