42 lines
3.0 KiB
ReStructuredText
42 lines
3.0 KiB
ReStructuredText
.. 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``| |
|
|
| | | |
|
|
+--------------------------------+-------------------------------+---------------------+
|