• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Traversal</title>
5<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../../index.html" title="Chapter 1. Boost.Iterator">
8<link rel="up" href="../concepts.html" title="Iterator Concepts">
9<link rel="prev" href="../concepts.html" title="Iterator Concepts">
10<link rel="next" href="../generic.html" title="Generic Iterators">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
15<td align="center"><a href="../../../../../../index.html">Home</a></td>
16<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="../concepts.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../generic.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h3 class="title">
27<a name="iterator.concepts.traversal"></a><a class="link" href="traversal.html" title="Traversal">Traversal</a>
28</h3></div></div></div>
29<div class="toc"><dl class="toc">
30<dt><span class="section"><a href="traversal.html#iterator.concepts.traversal.incrementable">Incrementable
31        Iterator Concept</a></span></dt>
32<dt><span class="section"><a href="traversal.html#iterator.concepts.traversal.single_pass">Single Pass
33        Iterator Concept</a></span></dt>
34<dt><span class="section"><a href="traversal.html#iterator.concepts.traversal.forward">Forward Traversal
35        Concept</a></span></dt>
36<dt><span class="section"><a href="traversal.html#iterator.concepts.traversal.bidirectional">Bidirectional
37        Traversal Concept</a></span></dt>
38<dt><span class="section"><a href="traversal.html#iterator.concepts.traversal.random_access">Random Access
39        Traversal Concept</a></span></dt>
40</dl></div>
41<div class="section">
42<div class="titlepage"><div><div><h4 class="title">
43<a name="iterator.concepts.traversal.incrementable"></a><a class="link" href="traversal.html#iterator.concepts.traversal.incrementable" title="Incrementable Iterator Concept">Incrementable
44        Iterator Concept</a>
45</h4></div></div></div>
46<p>
47          A class or built-in type <code class="computeroutput"><span class="identifier">X</span></code>
48          models the <span class="bold"><strong>Incrementable Iterator</strong></span> concept
49          if, in addition to <code class="computeroutput"><span class="identifier">X</span></code> being
50          Assignable and Copy Constructible, the following expressions are valid
51          and respect the stated semantics.
52        </p>
53<div class="table">
54<a name="iterator.concepts.traversal.incrementable.incrementable_iterator_requireme"></a><p class="title"><b>Table 1.5. Incrementable Iterator Requirements (in addition to Assignable,
55          Copy Constructible)</b></p>
56<div class="table-contents"><table class="table" summary="Incrementable Iterator Requirements (in addition to Assignable,
57          Copy Constructible)">
58<colgroup>
59<col>
60<col>
61<col>
62</colgroup>
63<thead><tr>
64<th>
65                  <p>
66                    Expression
67                  </p>
68                </th>
69<th>
70                  <p>
71                    Return Type
72                  </p>
73                </th>
74<th>
75                  <p>
76                    Assertion/Semantics
77                  </p>
78                </th>
79</tr></thead>
80<tbody>
81<tr>
82<td>
83                  <p>
84                    <code class="computeroutput"><span class="special">++</span><span class="identifier">r</span></code>
85                  </p>
86                </td>
87<td>
88                  <p>
89                    <code class="computeroutput"><span class="identifier">X</span><span class="special">&amp;</span></code>
90                  </p>
91                </td>
92<td>
93                  <p>
94                    <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">r</span>
95                    <span class="special">==</span> <span class="special">&amp;++</span><span class="identifier">r</span></code>
96                  </p>
97                </td>
98</tr>
99<tr>
100<td>
101                  <p>
102                    <code class="computeroutput"><span class="identifier">r</span><span class="special">++</span></code>
103                  </p>
104                </td>
105<td>
106                  <p>
107                    <code class="computeroutput"><span class="identifier">X</span></code>
108                  </p>
109                </td>
110<td>
111<pre class="programlisting"><span class="special">{</span>
112  <span class="identifier">X</span> <span class="identifier">tmp</span> <span class="special">=</span> <span class="identifier">r</span><span class="special">;</span>
113  <span class="special">++</span><span class="identifier">r</span><span class="special">;</span>
114  <span class="keyword">return</span> <span class="identifier">tmp</span><span class="special">;</span>
115<span class="special">}</span>
116</pre>
117                </td>
118</tr>
119<tr>
120<td>
121                  <p>
122                    <code class="computeroutput"><span class="identifier">iterator_traversal</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
123                  </p>
124                </td>
125<td>
126                  <p>
127                    Convertible to <code class="computeroutput"><span class="identifier">incrementable_traversal_tag</span></code>
128                  </p>
129                </td>
130<td>
131                </td>
132</tr>
133</tbody>
134</table></div>
135</div>
136<br class="table-break">
137</div>
138<div class="section">
139<div class="titlepage"><div><div><h4 class="title">
140<a name="iterator.concepts.traversal.single_pass"></a><a class="link" href="traversal.html#iterator.concepts.traversal.single_pass" title="Single Pass Iterator Concept">Single Pass
141        Iterator Concept</a>
142</h4></div></div></div>
143<p>
144          A class or built-in type <code class="computeroutput"><span class="identifier">X</span></code>
145          models the <span class="bold"><strong>Single Pass Iterator</strong></span> concept
146          if the following expressions are valid and respect the stated semantics.
147        </p>
148<div class="table">
149<a name="iterator.concepts.traversal.single_pass.single_pass_iterator_requirement"></a><p class="title"><b>Table 1.6. Single Pass Iterator Requirements (in addition to Incrementable
150          Iterator and Equality Comparable)</b></p>
151<div class="table-contents"><table class="table" summary="Single Pass Iterator Requirements (in addition to Incrementable
152          Iterator and Equality Comparable)">
153<colgroup>
154<col>
155<col>
156<col>
157</colgroup>
158<thead><tr>
159<th>
160                  <p>
161                    Expression
162                  </p>
163                </th>
164<th>
165                  <p>
166                    Return Type
167                  </p>
168                </th>
169<th>
170                  <p>
171                    Assertion/Semantics / Pre-/Post-condition
172                  </p>
173                </th>
174</tr></thead>
175<tbody>
176<tr>
177<td>
178                  <p>
179                    <code class="computeroutput"><span class="special">++</span><span class="identifier">r</span></code>
180                  </p>
181                </td>
182<td>
183                  <p>
184                    <code class="computeroutput"><span class="identifier">X</span><span class="special">&amp;</span></code>
185                  </p>
186                </td>
187<td>
188                  <p>
189                    pre:<br> <code class="computeroutput"><span class="identifier">r</span></code>
190                    is dereferenceable;<br> post:<br> <code class="computeroutput"><span class="identifier">r</span></code>
191                    is dereferenceable or<br> <code class="computeroutput"><span class="identifier">r</span></code>
192                    is past-the-end
193                  </p>
194                </td>
195</tr>
196<tr>
197<td>
198                  <p>
199                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">==</span>
200                    <span class="identifier">b</span></code>
201                  </p>
202                </td>
203<td>
204                  <p>
205                    convertible to <code class="computeroutput"><span class="keyword">bool</span></code>
206                  </p>
207                </td>
208<td>
209                  <p>
210                    <code class="computeroutput"><span class="special">==</span></code> is an equivalence
211                    relation over its domain
212                  </p>
213                </td>
214</tr>
215<tr>
216<td>
217                  <p>
218                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">!=</span>
219                    <span class="identifier">b</span></code>
220                  </p>
221                </td>
222<td>
223                  <p>
224                    convertible to <code class="computeroutput"><span class="keyword">bool</span></code>
225                  </p>
226                </td>
227<td>
228                  <p>
229                    <code class="computeroutput"><span class="special">!(</span><span class="identifier">a</span>
230                    <span class="special">==</span> <span class="identifier">b</span><span class="special">)</span></code>
231                  </p>
232                </td>
233</tr>
234<tr>
235<td>
236                  <p>
237                    <code class="computeroutput"><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;::</span><span class="identifier">difference_type</span></code>
238                  </p>
239                </td>
240<td>
241                  <p>
242                    A signed integral type representing the distance between iterators
243                  </p>
244                </td>
245<td>
246                </td>
247</tr>
248<tr>
249<td>
250                  <p>
251                    <code class="computeroutput"><span class="identifier">iterator_traversal</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
252                  </p>
253                </td>
254<td>
255                  <p>
256                    Convertible to<code class="computeroutput"><span class="identifier">single_pass_traversal_tag</span></code>
257                  </p>
258                </td>
259<td>
260                </td>
261</tr>
262</tbody>
263</table></div>
264</div>
265<br class="table-break">
266</div>
267<div class="section">
268<div class="titlepage"><div><div><h4 class="title">
269<a name="iterator.concepts.traversal.forward"></a><a class="link" href="traversal.html#iterator.concepts.traversal.forward" title="Forward Traversal Concept">Forward Traversal
270        Concept</a>
271</h4></div></div></div>
272<p>
273          A class or built-in type <code class="computeroutput"><span class="identifier">X</span></code>
274          models the <span class="bold"><strong>Forward Traversal</strong></span> concept if,
275          in addition to <code class="computeroutput"><span class="identifier">X</span></code> meeting
276          the requirements of Default Constructible and Single Pass Iterator, the
277          following expressions are valid and respect the stated semantics.
278        </p>
279<div class="table">
280<a name="iterator.concepts.traversal.forward.forward_traversal_iterator_requi"></a><p class="title"><b>Table 1.7. Forward Traversal Iterator Requirements (in addition to Default
281          Constructible and Single Pass Iterator)</b></p>
282<div class="table-contents"><table class="table" summary="Forward Traversal Iterator Requirements (in addition to Default
283          Constructible and Single Pass Iterator)">
284<colgroup>
285<col>
286<col>
287<col>
288</colgroup>
289<thead><tr>
290<th>
291                  <p>
292                    Expression
293                  </p>
294                </th>
295<th>
296                  <p>
297                    Return Type
298                  </p>
299                </th>
300<th>
301                  <p>
302                    Assertion/Note
303                  </p>
304                </th>
305</tr></thead>
306<tbody>
307<tr>
308<td>
309                  <p>
310                    <code class="computeroutput"><span class="identifier">X</span> <span class="identifier">u</span><span class="special">;</span></code>
311                  </p>
312                </td>
313<td>
314                  <p>
315                    <code class="computeroutput"><span class="identifier">X</span><span class="special">&amp;</span></code>
316                  </p>
317                </td>
318<td>
319                  <p>
320                    note: <code class="computeroutput"><span class="identifier">u</span></code> may have
321                    a singular value.
322                  </p>
323                </td>
324</tr>
325<tr>
326<td>
327                  <p>
328                    <code class="computeroutput"><span class="special">++</span><span class="identifier">r</span></code>
329                  </p>
330                </td>
331<td>
332                  <p>
333                    <code class="computeroutput"><span class="identifier">X</span><span class="special">&amp;</span></code>
334                  </p>
335                </td>
336<td>
337                  <p>
338                    <code class="computeroutput"><span class="identifier">r</span> <span class="special">==</span>
339                    <span class="identifier">s</span></code> and <code class="computeroutput"><span class="identifier">r</span></code> is dereferenceable implies
340                    <code class="computeroutput"><span class="special">++</span><span class="identifier">r</span>
341                    <span class="special">==</span> <span class="special">++</span><span class="identifier">s</span><span class="special">.</span></code>
342                  </p>
343                </td>
344</tr>
345<tr>
346<td>
347                  <p>
348                    <code class="computeroutput"><span class="identifier">iterator_traversal</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
349                  </p>
350                </td>
351<td>
352                  <p>
353                    Convertible to <code class="computeroutput"><span class="identifier">forward_traversal_tag</span></code>
354                  </p>
355                </td>
356<td>
357                </td>
358</tr>
359</tbody>
360</table></div>
361</div>
362<br class="table-break">
363</div>
364<div class="section">
365<div class="titlepage"><div><div><h4 class="title">
366<a name="iterator.concepts.traversal.bidirectional"></a><a class="link" href="traversal.html#iterator.concepts.traversal.bidirectional" title="Bidirectional Traversal Concept">Bidirectional
367        Traversal Concept</a>
368</h4></div></div></div>
369<p>
370          A class or built-in type <code class="computeroutput"><span class="identifier">X</span></code>
371          models the <span class="bold"><strong>Bidirectional Traversal</strong></span> concept
372          if, in addition to <code class="computeroutput"><span class="identifier">X</span></code> meeting
373          the requirements of Forward Traversal Iterator, the following expressions
374          are valid and respect the stated semantics.
375        </p>
376<div class="table">
377<a name="iterator.concepts.traversal.bidirectional.bidirectional_traversal_iterator"></a><p class="title"><b>Table 1.8. Bidirectional Traversal Iterator Requirements (in addition to Forward
378          Traversal Iterator)</b></p>
379<div class="table-contents"><table class="table" summary="Bidirectional Traversal Iterator Requirements (in addition to Forward
380          Traversal Iterator)">
381<colgroup>
382<col>
383<col>
384<col>
385</colgroup>
386<thead><tr>
387<th>
388                  <p>
389                    Expression
390                  </p>
391                </th>
392<th>
393                  <p>
394                    Return Type
395                  </p>
396                </th>
397<th>
398                  <p>
399                    Assertion/Semantics/Pre-/Post-condition
400                  </p>
401                </th>
402</tr></thead>
403<tbody>
404<tr>
405<td>
406                  <p>
407                    <code class="computeroutput"><span class="special">--</span><span class="identifier">r</span></code>
408                  </p>
409                </td>
410<td>
411                  <p>
412                    <code class="computeroutput"><span class="identifier">X</span><span class="special">&amp;</span></code>
413                  </p>
414                </td>
415<td>
416                  <p>
417                    pre: there exists <code class="computeroutput"><span class="identifier">s</span></code>
418                    such that <code class="computeroutput"><span class="identifier">r</span> <span class="special">==</span> <span class="special">++</span><span class="identifier">s</span></code>.<br> post: <code class="computeroutput"><span class="identifier">s</span></code> is dereferenceable. <code class="computeroutput"><span class="special">--(++</span><span class="identifier">r</span><span class="special">)</span> <span class="special">==</span>
419                    <span class="identifier">r</span></code>. <code class="computeroutput"><span class="special">--</span><span class="identifier">r</span> <span class="special">==</span>
420                    <span class="special">--</span><span class="identifier">s</span></code>
421                    implies <code class="computeroutput"><span class="identifier">r</span> <span class="special">==</span>
422                    <span class="identifier">s</span></code>. <code class="computeroutput"><span class="special">&amp;</span><span class="identifier">r</span> <span class="special">==</span>
423                    <span class="special">&amp;--</span><span class="identifier">r</span></code>.
424                  </p>
425                </td>
426</tr>
427<tr>
428<td>
429                  <p>
430                    <code class="computeroutput"><span class="identifier">r</span><span class="special">--</span></code>
431                  </p>
432                </td>
433<td>
434                  <p>
435                    convertible to <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">X</span><span class="special">&amp;</span></code>
436                  </p>
437                </td>
438<td>
439<pre class="programlisting"><span class="special">{</span>
440  <span class="identifier">X</span> <span class="identifier">tmp</span> <span class="special">=</span> <span class="identifier">r</span><span class="special">;</span>
441  <span class="special">--</span><span class="identifier">r</span><span class="special">;</span>
442  <span class="keyword">return</span> <span class="identifier">tmp</span><span class="special">;</span>
443<span class="special">}</span>
444</pre>
445                </td>
446</tr>
447<tr>
448<td>
449                  <p>
450                    <code class="computeroutput"><span class="identifier">iterator_traversal</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
451                  </p>
452                </td>
453<td>
454                  <p>
455                    Convertible to <code class="computeroutput"><span class="identifier">bidirectional_traversal_tag</span></code>
456                  </p>
457                </td>
458<td>
459                </td>
460</tr>
461</tbody>
462</table></div>
463</div>
464<br class="table-break">
465</div>
466<div class="section">
467<div class="titlepage"><div><div><h4 class="title">
468<a name="iterator.concepts.traversal.random_access"></a><a class="link" href="traversal.html#iterator.concepts.traversal.random_access" title="Random Access Traversal Concept">Random Access
469        Traversal Concept</a>
470</h4></div></div></div>
471<p>
472          A class or built-in type <code class="computeroutput"><span class="identifier">X</span></code>
473          models the <span class="bold"><strong>Random Access Traversal</strong></span> concept
474          if the following expressions are valid and respect the stated semantics.
475          In the table below, <code class="computeroutput"><span class="identifier">Distance</span></code>
476          is <code class="computeroutput"><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;::</span><span class="identifier">difference_type</span></code> and <code class="computeroutput"><span class="identifier">n</span></code>
477          represents a constant object of type <code class="computeroutput"><span class="identifier">Distance</span></code>.
478        </p>
479<div class="table">
480<a name="iterator.concepts.traversal.random_access.random_access_traversal_iterator"></a><p class="title"><b>Table 1.9. Random Access Traversal Iterator Requirements (in addition to Bidirectional
481          Traversal)</b></p>
482<div class="table-contents"><table class="table" summary="Random Access Traversal Iterator Requirements (in addition to Bidirectional
483          Traversal)">
484<colgroup>
485<col>
486<col>
487<col>
488<col>
489</colgroup>
490<thead><tr>
491<th>
492                  <p>
493                    Expression
494                  </p>
495                </th>
496<th>
497                  <p>
498                    Return Type
499                  </p>
500                </th>
501<th>
502                  <p>
503                    Operational Semantics
504                  </p>
505                </th>
506<th>
507                  <p>
508                    Assertion/Precondition
509                  </p>
510                </th>
511</tr></thead>
512<tbody>
513<tr>
514<td>
515                  <p>
516                    <code class="computeroutput"><span class="identifier">r</span> <span class="special">+=</span>
517                    <span class="identifier">n</span></code>
518                  </p>
519                </td>
520<td>
521                  <p>
522                    <code class="computeroutput"><span class="identifier">X</span><span class="special">&amp;</span></code>
523                  </p>
524                </td>
525<td>
526<pre class="programlisting"><span class="special">{</span>
527  <span class="identifier">Distance</span> <span class="identifier">m</span> <span class="special">=</span> <span class="identifier">n</span><span class="special">;</span>
528  <span class="keyword">if</span> <span class="special">(</span><span class="identifier">m</span> <span class="special">&gt;=</span> <span class="number">0</span><span class="special">)</span>
529    <span class="keyword">while</span> <span class="special">(</span><span class="identifier">m</span><span class="special">--)</span>
530      <span class="special">++</span><span class="identifier">r</span><span class="special">;</span>
531  <span class="keyword">else</span>
532    <span class="keyword">while</span> <span class="special">(</span><span class="identifier">m</span><span class="special">++)</span>
533      <span class="special">--</span><span class="identifier">r</span><span class="special">;</span>
534  <span class="keyword">return</span> <span class="identifier">r</span><span class="special">;</span>
535<span class="special">}</span>
536</pre>
537                </td>
538<td>
539                </td>
540</tr>
541<tr>
542<td>
543                  <p>
544                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">+</span>
545                    <span class="identifier">n</span></code>, <code class="computeroutput"><span class="identifier">n</span>
546                    <span class="special">+</span> <span class="identifier">a</span></code>
547                  </p>
548                </td>
549<td>
550                  <p>
551                    <code class="computeroutput"><span class="identifier">X</span></code>
552                  </p>
553                </td>
554<td>
555<pre class="programlisting"><span class="special">{</span>
556  <span class="identifier">X</span> <span class="identifier">tmp</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
557  <span class="keyword">return</span> <span class="identifier">tmp</span><span class="special">+=</span> <span class="identifier">n</span><span class="special">;</span>
558<span class="special">}</span>
559</pre>
560                </td>
561<td>
562                </td>
563</tr>
564<tr>
565<td>
566                  <p>
567                    <code class="computeroutput"><span class="identifier">r</span> <span class="special">-=</span>
568                    <span class="identifier">n</span></code>
569                  </p>
570                </td>
571<td>
572                  <p>
573                    <code class="computeroutput"><span class="identifier">X</span><span class="special">&amp;</span></code>
574                  </p>
575                </td>
576<td>
577                  <p>
578                    <code class="computeroutput"><span class="keyword">return</span> <span class="identifier">r</span>
579                    <span class="special">+=</span> <span class="special">-</span><span class="identifier">n</span></code>
580                  </p>
581                </td>
582<td>
583                </td>
584</tr>
585<tr>
586<td>
587                  <p>
588                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">-</span>
589                    <span class="identifier">n</span></code>
590                  </p>
591                </td>
592<td>
593                  <p>
594                    <code class="computeroutput"><span class="identifier">X</span></code>
595                  </p>
596                </td>
597<td>
598<pre class="programlisting"><span class="special">{</span>
599  <span class="identifier">X</span> <span class="identifier">tmp</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
600  <span class="keyword">return</span> <span class="identifier">tmp</span><span class="special">-=</span> <span class="identifier">n</span><span class="special">;</span>
601<span class="special">}</span>
602</pre>
603                </td>
604<td>
605                </td>
606</tr>
607<tr>
608<td>
609                  <p>
610                    <code class="computeroutput"><span class="identifier">b</span> <span class="special">-</span>
611                    <span class="identifier">a</span></code>
612                  </p>
613                </td>
614<td>
615                  <p>
616                    <code class="computeroutput"><span class="identifier">Distance</span></code>
617                  </p>
618                </td>
619<td>
620                  <p>
621                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">&lt;</span>
622                    <span class="identifier">b</span> <span class="special">?</span>
623                    <span class="identifier">distance</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">)</span>
624                    <span class="special">:</span> <span class="special">-</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">a</span><span class="special">)</span></code>
625                  </p>
626                </td>
627<td>
628                  <p>
629                    pre: there exists a value <code class="computeroutput"><span class="identifier">n</span></code>
630                    of <code class="computeroutput"><span class="identifier">Distance</span></code> such
631                    that <code class="computeroutput"><span class="identifier">a</span> <span class="special">+</span>
632                    <span class="identifier">n</span> <span class="special">==</span>
633                    <span class="identifier">b</span></code>. <code class="computeroutput"><span class="identifier">b</span>
634                    <span class="special">==</span> <span class="identifier">a</span>
635                    <span class="special">+</span> <span class="special">(</span><span class="identifier">b</span> <span class="special">-</span>
636                    <span class="identifier">a</span><span class="special">)</span></code>.
637                  </p>
638                </td>
639</tr>
640<tr>
641<td>
642                  <p>
643                    <code class="computeroutput"><span class="identifier">a</span><span class="special">[</span><span class="identifier">n</span><span class="special">]</span></code>
644                  </p>
645                </td>
646<td>
647                  <p>
648                    convertible to T
649                  </p>
650                </td>
651<td>
652                  <p>
653                    <code class="computeroutput"><span class="special">*(</span><span class="identifier">a</span>
654                    <span class="special">+</span> <span class="identifier">n</span><span class="special">)</span></code>
655                  </p>
656                </td>
657<td>
658                  <p>
659                    pre: a is a <span class="bold"><strong>Readable Iterator</strong></span>
660                  </p>
661                </td>
662</tr>
663<tr>
664<td>
665                  <p>
666                    <code class="computeroutput"><span class="identifier">a</span><span class="special">[</span><span class="identifier">n</span><span class="special">]</span>
667                    <span class="special">=</span> <span class="identifier">v</span></code>
668                  </p>
669                </td>
670<td>
671                  <p>
672                    convertible to T
673                  </p>
674                </td>
675<td>
676                  <p>
677                    <code class="computeroutput"><span class="special">*(</span><span class="identifier">a</span>
678                    <span class="special">+</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">=</span>
679                    <span class="identifier">v</span></code>
680                  </p>
681                </td>
682<td>
683                  <p>
684                    pre: a is a <span class="bold"><strong>Writable iterator</strong></span>
685                  </p>
686                </td>
687</tr>
688<tr>
689<td>
690                  <p>
691                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">&lt;</span>
692                    <span class="identifier">b</span></code>
693                  </p>
694                </td>
695<td>
696                  <p>
697                    convertible to <code class="computeroutput"><span class="keyword">bool</span></code>
698                  </p>
699                </td>
700<td>
701                  <p>
702                    <code class="computeroutput"><span class="identifier">b</span> <span class="special">-</span>
703                    <span class="identifier">a</span> <span class="special">&gt;</span>
704                    <span class="number">0</span></code>
705                  </p>
706                </td>
707<td>
708                  <p>
709                    <code class="computeroutput"><span class="special">&lt;</span></code> is a total
710                    ordering relation
711                  </p>
712                </td>
713</tr>
714<tr>
715<td>
716                  <p>
717                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">&gt;</span>
718                    <span class="identifier">b</span></code>
719                  </p>
720                </td>
721<td>
722                  <p>
723                    convertible to <code class="computeroutput"><span class="keyword">bool</span></code>
724                  </p>
725                </td>
726<td>
727                  <p>
728                    <code class="computeroutput"><span class="identifier">b</span> <span class="special">&lt;</span>
729                    <span class="identifier">a</span></code>
730                  </p>
731                </td>
732<td>
733                  <p>
734                    <code class="computeroutput"><span class="special">&gt;</span></code> is a total
735                    ordering relation
736                  </p>
737                </td>
738</tr>
739<tr>
740<td>
741                  <p>
742                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">&gt;=</span>
743                    <span class="identifier">b</span></code>
744                  </p>
745                </td>
746<td>
747                  <p>
748                    convertible to <code class="computeroutput"><span class="keyword">bool</span></code>
749                  </p>
750                </td>
751<td>
752                  <p>
753                    <code class="computeroutput"><span class="special">!(</span><span class="identifier">a</span>
754                    <span class="special">&lt;</span> <span class="identifier">b</span><span class="special">)</span></code>
755                  </p>
756                </td>
757<td>
758                </td>
759</tr>
760<tr>
761<td>
762                  <p>
763                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">&lt;=</span>
764                    <span class="identifier">b</span></code>
765                  </p>
766                </td>
767<td>
768                  <p>
769                    convertible to <code class="computeroutput"><span class="keyword">bool</span></code>
770                  </p>
771                </td>
772<td>
773                  <p>
774                    <code class="computeroutput"><span class="special">!(</span><span class="identifier">a</span>
775                    <span class="special">&gt;</span> <span class="identifier">b</span><span class="special">)</span></code>
776                  </p>
777                </td>
778<td>
779                </td>
780</tr>
781<tr>
782<td>
783                  <p>
784                    <code class="computeroutput"><span class="identifier">iterator_traversal</span><span class="special">&lt;</span><span class="identifier">X</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
785                  </p>
786                </td>
787<td>
788                  <p>
789                    convertible to <code class="computeroutput"><span class="identifier">random_access_traversal_tag</span></code>
790                  </p>
791                </td>
792<td>
793                </td>
794<td>
795                </td>
796</tr>
797</tbody>
798</table></div>
799</div>
800<br class="table-break">
801</div>
802</div>
803<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
804<td align="left"></td>
805<td align="right"><div class="copyright-footer">Copyright © 2003, 2005 David Abrahams Jeremy Siek Thomas
806      Witt<p>
807        Distributed under the Boost Software License, Version 1.0. (See accompanying
808        file LICENSE_1_0.txt or copy at &lt;ulink url="http://www.boost.org/LICENSE_1_0.txt"&gt;
809        http://www.boost.org/LICENSE_1_0.txt &lt;/ulink&gt;)
810      </p>
811</div></td>
812</tr></table>
813<hr>
814<div class="spirit-nav">
815<a accesskey="p" href="../concepts.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../generic.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
816</div>
817</body>
818</html>
819