1 <?xml version=
"1.0" encoding=
"utf-8" ?>
2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en" lang=
"en">
5 <meta http-equiv=
"Content-Type" content=
"text/html; charset=utf-8" />
6 <meta name=
"generator" content=
"Docutils 0.5: http://docutils.sourceforge.net/" />
7 <title>Bidirectional Traversal Concept
</title>
8 <link rel=
"stylesheet" href=
"../../../rst.css" type=
"text/css" />
11 <div class=
"document" id=
"bidirectional-traversal-concept">
12 <h1 class=
"title">Bidirectional Traversal Concept
</h1>
14 <!-- Copyright David Abrahams 2006. Distributed under the Boost -->
15 <!-- Software License, Version 1.0. (See accompanying -->
16 <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
17 <p>A class or built-in type
<tt class=
"docutils literal"><span class=
"pre">X
</span></tt> models the
<em>Bidirectional Traversal
</em>
18 concept if, in addition to
<tt class=
"docutils literal"><span class=
"pre">X
</span></tt> meeting the requirements of Forward
19 Traversal Iterator, the following expressions are valid and respect
20 the stated semantics.
</p>
21 <table border=
"1" class=
"docutils">
27 <thead valign=
"bottom">
28 <tr><th class=
"head" colspan=
"3">Bidirectional Traversal Iterator Requirements (in addition to Forward Traversal
31 <tr><th class=
"head">Expression
</th>
32 <th class=
"head">Return Type
</th>
33 <th class=
"head">Assertion/Semantics /
34 Pre-/Post-condition
</th>
38 <tr><td><tt class=
"docutils literal"><span class=
"pre">--r
</span></tt></td>
39 <td><tt class=
"docutils literal"><span class=
"pre">X
&</span></tt></td>
41 <tt class=
"docutils literal"><span class=
"pre">s
</span></tt> such that
<tt class=
"docutils literal"><span class=
"pre">r
</span>
42 <span class=
"pre">==
</span> <span class=
"pre">++s
</span></tt>. post:
43 <tt class=
"docutils literal"><span class=
"pre">s
</span></tt> is
45 <tt class=
"docutils literal"><span class=
"pre">--(++r)
</span> <span class=
"pre">==
</span> <span class=
"pre">r
</span></tt>.
46 <tt class=
"docutils literal"><span class=
"pre">--r
</span> <span class=
"pre">==
</span> <span class=
"pre">--s
</span></tt>
47 implies
<tt class=
"docutils literal"><span class=
"pre">r
</span> <span class=
"pre">==
</span>
48 <span class=
"pre">s
</span></tt>.
<tt class=
"docutils literal"><span class=
"pre">&r
</span> <span class=
"pre">==
</span> <span class=
"pre">&--r
</span></tt>.
</td>
50 <tr><td><tt class=
"docutils literal"><span class=
"pre">r--
</span></tt></td>
51 <td>convertible to
<tt class=
"docutils literal"><span class=
"pre">const
</span> <span class=
"pre">X
&</span></tt></td>
52 <td><pre class=
"first last literal-block">
61 <tr><td><tt class=
"docutils literal"><span class=
"pre">iterator_traversal
<X
>::type
</span></tt></td>
63 <tt class=
"docutils literal"><span class=
"pre">bidirectional_traversal_tag
</span></tt></td>
71 <a class=
"reference external" href=
"BidirectionalTraversal.rst">View document source
</a>.
72 Generated by
<a class=
"reference external" href=
"http://docutils.sourceforge.net/">Docutils
</a> from
<a class=
"reference external" href=
"http://docutils.sourceforge.net/rst.html">reStructuredText
</a> source.