| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | [section:concepts Iterator Concepts] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [section:concepts_access Access] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [section:readable Readable Iterator Concept] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | A class or built-in type `X` models the *Readable Iterator* concept | 
					
						
							|  |  |  | for value type `T` if, in addition to `X` being Assignable and | 
					
						
							|  |  |  | Copy Constructible, the following expressions are valid and respect | 
					
						
							|  |  |  | the stated semantics. `U` is the type of any specified member of | 
					
						
							|  |  |  | type `T`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [table Readable Iterator Requirements (in addition to Assignable and Copy Constructible) | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [Expression] | 
					
						
							|  |  |  |     [Return Type] | 
					
						
							|  |  |  |     [Note/Precondition] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`iterator_traits<X>::value_type`] | 
					
						
							|  |  |  |     [`T`] | 
					
						
							|  |  |  |     [Any non-reference, non cv-qualified type] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`*a`] | 
					
						
							|  |  |  |     [ Convertible to `T`] | 
					
						
							|  |  |  |     [pre: `a` is dereferenceable. If `a == b` then `*a` is equivalent to `*b`.] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`a->m`] | 
					
						
							|  |  |  |     [`U&`] | 
					
						
							|  |  |  |     [pre: `(*a).m` is well-defined. Equivalent to `(*a).m`.] | 
					
						
							|  |  |  |   ] | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [endsect] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [section:writable Writable Iterator Concept] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | A class or built-in type `X`   models the *Writable Iterator* concept | 
					
						
							|  |  |  | if, in addition to `X` being   Copy Constructible, the following | 
					
						
							|  |  |  | expressions are valid and respect the stated semantics.  Writable | 
					
						
							|  |  |  | Iterators have an associated *set of value types*. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [table Writable Iterator Requirements (in addition to Copy Constructible) | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |   [ | 
					
						
							|  |  |  |     [Expression] | 
					
						
							|  |  |  |     [Return Type] | 
					
						
							|  |  |  |     [Precondition] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`*a = o`  ] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |     [pre: The type of `o` is in the set of value types of `X`] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [endsect] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [section:swappable Swappable Iterator Concept] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | A class or built-in type `X` models the *Swappable Iterator* concept | 
					
						
							|  |  |  | if, in addition to `X` being Copy Constructible, the following | 
					
						
							|  |  |  | expressions are valid and respect the stated semantics. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [table Swappable Iterator Requirements (in addition to Copy Constructible) | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |   [ | 
					
						
							|  |  |  |     [Expression] | 
					
						
							|  |  |  |     [Return Type] | 
					
						
							|  |  |  |     [Postcondition] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`iter_swap(a, b)`] | 
					
						
							|  |  |  |     [`void`] | 
					
						
							|  |  |  |     [the pointed to values are exchanged] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [blurb *Note:* An iterator that is a model of the *Readable* and *Writable Iterator* concepts | 
					
						
							|  |  |  |   is also a model of *Swappable Iterator*.  *--end note*] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [endsect] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [section:lvalue Lvalue Iterator Concept] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The *Lvalue Iterator* concept adds the requirement that the return | 
					
						
							|  |  |  | type of `operator*` type be a reference to the value type of the | 
					
						
							|  |  |  | iterator. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [table Lvalue Iterator Requirements | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [Expression] | 
					
						
							|  |  |  |     [Return Type] | 
					
						
							|  |  |  |     [Note/Assertion] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`*a`      ] | 
					
						
							|  |  |  |     [`T&`       ] | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |       `T` is *cv* `iterator_traits<X>::value_type` where *cv* is an optional cv-qualification. | 
					
						
							|  |  |  |       pre: `a` is dereferenceable. If `a == b` then `*a` is equivalent to `*b`. | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [endsect] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [endsect] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [section:concepts_traversal Traversal] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [section:incrementable Incrementable Iterator Concept] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | A class or built-in type `X` models the *Incrementable Iterator* | 
					
						
							|  |  |  | concept if, in addition to `X` being Assignable and Copy | 
					
						
							|  |  |  | Constructible, the following expressions are valid and respect the | 
					
						
							|  |  |  | stated semantics. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [table Incrementable Iterator Requirements (in addition to Assignable, Copy Constructible) | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [Expression ] | 
					
						
							|  |  |  |     [Return Type] | 
					
						
							|  |  |  |     [Assertion/Semantics ] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`++r`      ] | 
					
						
							|  |  |  |     [`X&`       ] | 
					
						
							|  |  |  |     [`&r == &++r`] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`r++`      ] | 
					
						
							|  |  |  |     [`X`        ] | 
					
						
							|  |  |  |     [`` | 
					
						
							|  |  |  |        { | 
					
						
							|  |  |  |          X tmp = r; | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  |          ++r; | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |          return tmp; | 
					
						
							|  |  |  |        } | 
					
						
							|  |  |  |     ``] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`iterator_traversal<X>::type`] | 
					
						
							|  |  |  |     [Convertible to `incrementable_traversal_tag`] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [endsect] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [section:single_pass Single Pass Iterator Concept] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | A class or built-in type `X` models the *Single Pass Iterator* | 
					
						
							|  |  |  | concept if the following expressions are valid and respect the stated | 
					
						
							|  |  |  | semantics. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [table Single Pass Iterator Requirements (in addition to Incrementable Iterator and Equality Comparable) | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [Expression] | 
					
						
							|  |  |  |     [Return Type] | 
					
						
							|  |  |  |     [Assertion/Semantics / Pre-/Post-condition] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`++r`] | 
					
						
							|  |  |  |     [`X&`] | 
					
						
							| 
									
										
										
										
											2015-08-24 12:49:59 -04:00
										 |  |  |     [pre:[br]`r` is dereferenceable;[br]post:[br]`r` is dereferenceable or[br]`r` is past-the-end] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`a == b`] | 
					
						
							|  |  |  |     [convertible to `bool`] | 
					
						
							|  |  |  |     [`==` is an equivalence relation over its domain] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`a != b`] | 
					
						
							|  |  |  |     [convertible to `bool`] | 
					
						
							|  |  |  |     [`!(a == b)`] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`iterator_traversal<X>::type`] | 
					
						
							|  |  |  |     [Convertible to`single_pass_traversal_tag`] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [endsect] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [section:forward Forward Traversal Concept] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | A class or built-in type `X` models the *Forward Traversal* | 
					
						
							|  |  |  | concept if, in addition to `X` meeting the requirements of Default | 
					
						
							|  |  |  | Constructible and Single Pass Iterator, the following expressions are | 
					
						
							|  |  |  | valid and respect the stated semantics. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [table Forward Traversal Iterator Requirements (in addition to Default Constructible and Single Pass Iterator) | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [Expression] | 
					
						
							|  |  |  |     [Return Type] | 
					
						
							|  |  |  |     [Assertion/Note] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`X u;`] | 
					
						
							|  |  |  |     [`X&`] | 
					
						
							|  |  |  |     [note: `u` may have a singular value.] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`++r`] | 
					
						
							|  |  |  |     [`X&`] | 
					
						
							|  |  |  |     [`r == s` and `r` is dereferenceable implies `++r == ++s.`] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`iterator_traits<X>::difference_type`] | 
					
						
							|  |  |  |     [A signed integral type representing the distance between iterators] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`iterator_traversal<X>::type`] | 
					
						
							|  |  |  |     [Convertible to `forward_traversal_tag`] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [endsect] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [section:bidirectional Bidirectional Traversal Concept] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [table Bidirectional Traversal Iterator Requirements (in addition to Forward Traversal Iterator) | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [Expression] | 
					
						
							|  |  |  |     [Return Type] | 
					
						
							|  |  |  |     [Assertion/Semantics/Pre-/Post-condition] | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  |   ] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |   [ | 
					
						
							|  |  |  |     [`--r`] | 
					
						
							|  |  |  |     [`X&`] | 
					
						
							| 
									
										
										
										
											2015-08-24 12:49:59 -04:00
										 |  |  |     [pre: there exists `s` such that `r == ++s`.[br] post: `s` is dereferenceable. `--(++r) == r`. `--r == --s` implies `r == s`. `&r == &--r`.] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`r--`] | 
					
						
							|  |  |  |     [convertible to `const X&`] | 
					
						
							|  |  |  |     [`` | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           X tmp = r; | 
					
						
							|  |  |  |           --r; | 
					
						
							|  |  |  |           return tmp; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     ``] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`iterator_traversal<X>::type`] | 
					
						
							|  |  |  |     [Convertible to `bidirectional_traversal_tag`] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [endsect] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [section:random_access Random Access Traversal Concept] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | A class or built-in type `X` models the *Random Access Traversal* | 
					
						
							|  |  |  | concept if the following expressions are valid and respect the stated | 
					
						
							|  |  |  | semantics.  In the table below, `Distance` is | 
					
						
							|  |  |  | `iterator_traits<X>::difference_type` and `n` represents a | 
					
						
							|  |  |  | constant object of type `Distance`. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [table Random Access Traversal Iterator Requirements (in addition to Bidirectional Traversal) | 
					
						
							|  |  |  |   [ | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |     [Expression] | 
					
						
							|  |  |  |     [Return Type] | 
					
						
							|  |  |  |     [Operational Semantics] | 
					
						
							|  |  |  |     [Assertion/Precondition] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`r += n`] | 
					
						
							|  |  |  |     [ `X&`] | 
					
						
							|  |  |  |     [`` | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |           Distance m = n; | 
					
						
							|  |  |  |           if (m >= 0) | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  |             while (m--) | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |               ++r; | 
					
						
							|  |  |  |           else | 
					
						
							|  |  |  |             while (m++) | 
					
						
							|  |  |  |               --r; | 
					
						
							|  |  |  |           return r; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     ``] | 
					
						
							|  |  |  |     [ ] | 
					
						
							|  |  |  |   ] | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  |   [ | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |     [`a + n`, `n + a`] | 
					
						
							|  |  |  |     [`X`] | 
					
						
							|  |  |  |     [`` | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |           X tmp = a; | 
					
						
							|  |  |  |           return tmp+= n; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     ``] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  |   [ | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |     [`r -= n`] | 
					
						
							|  |  |  |     [`X&`] | 
					
						
							|  |  |  |     [`return r += -n`] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`a - n`] | 
					
						
							|  |  |  |     [`X`] | 
					
						
							|  |  |  |     [`` | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |           X tmp = a; | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  |           return tmp-= n; | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |     ``] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`b - a`] | 
					
						
							|  |  |  |     [`Distance`] | 
					
						
							|  |  |  |     [`a < b ?  distance(a,b) : -distance(b,a)`] | 
					
						
							|  |  |  |     [pre: there exists a value `n` of `Distance` such that `a + n == b`. `b == a + (b - a)`.] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`a\[n\]`] | 
					
						
							|  |  |  |     [convertible to T] | 
					
						
							|  |  |  |     [`*(a + n)`] | 
					
						
							|  |  |  |     [pre: a is a *Readable Iterator*] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  |     [`a\[n\] = v`] | 
					
						
							| 
									
										
										
										
											2005-09-13 22:42:38 +00:00
										 |  |  |     [convertible to T] | 
					
						
							|  |  |  |     [`*(a + n) = v`] | 
					
						
							|  |  |  |     [pre: a is a *Writable iterator*] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`a < b`] | 
					
						
							|  |  |  |     [convertible to `bool`] | 
					
						
							|  |  |  |     [`b - a > 0`] | 
					
						
							|  |  |  |     [`<` is a total ordering relation] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`a > b`] | 
					
						
							|  |  |  |     [convertible to `bool`] | 
					
						
							|  |  |  |     [`b < a`] | 
					
						
							|  |  |  |     [`>` is a total ordering relation] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`a >= b`] | 
					
						
							|  |  |  |     [convertible to `bool`] | 
					
						
							|  |  |  |     [`!(a < b)`] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`a <= b`] | 
					
						
							|  |  |  |     [convertible to `bool`] | 
					
						
							|  |  |  |     [`!(a > b)`] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  |   [ | 
					
						
							|  |  |  |     [`iterator_traversal<X>::type`] | 
					
						
							|  |  |  |     [convertible to `random_access_traversal_tag`] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |     [] | 
					
						
							|  |  |  |   ] | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [endsect] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 19:56:23 +03:00
										 |  |  | [endsect] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [endsect] |