changes from Thomas for Interoperable Iterators

[SVN r21706]
This commit is contained in:
Jeremy Siek
2004-01-13 21:18:09 +00:00
parent d2dae62215
commit 983ba32def
2 changed files with 10 additions and 12 deletions

View File

@ -827,13 +827,12 @@ random_access_traversal_tag for consistency -->
<h4><a class="toc-backref" href="#id21" name="interoperable-iterators-lib-interoperable-iterators">Interoperable Iterators [lib.interoperable.iterators]</a></h4> <h4><a class="toc-backref" href="#id21" name="interoperable-iterators-lib-interoperable-iterators">Interoperable Iterators [lib.interoperable.iterators]</a></h4>
<p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> that models Single Pass Iterator is <p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> that models Single Pass Iterator is
<em>interoperable with</em> a class or built-in type <tt class="literal"><span class="pre">Y</span></tt> that also models <em>interoperable with</em> a class or built-in type <tt class="literal"><span class="pre">Y</span></tt> that also models
Single Pass Iterator if both <tt class="literal"><span class="pre">X</span></tt> and <tt class="literal"><span class="pre">Y</span></tt> have the same traversal Single Pass Iterator if the following expressions are valid and
tag and if the following expressions are valid and respect the stated respect the stated semantics. In the tables below, <tt class="literal"><span class="pre">x</span></tt> is an object
semantics. In the tables below, <tt class="literal"><span class="pre">x</span></tt> is an object of type <tt class="literal"><span class="pre">X</span></tt>, of type <tt class="literal"><span class="pre">X</span></tt>, <tt class="literal"><span class="pre">y</span></tt> is an object of type <tt class="literal"><span class="pre">Y</span></tt>, <tt class="literal"><span class="pre">Distance</span></tt> is
<tt class="literal"><span class="pre">y</span></tt> is an object of type <tt class="literal"><span class="pre">Y</span></tt>, <tt class="literal"><span class="pre">Distance</span></tt> is
<tt class="literal"><span class="pre">iterator_traits&lt;Y&gt;::difference_type</span></tt>, and <tt class="literal"><span class="pre">n</span></tt> represents a <tt class="literal"><span class="pre">iterator_traits&lt;Y&gt;::difference_type</span></tt>, and <tt class="literal"><span class="pre">n</span></tt> represents a
constant object of type <tt class="literal"><span class="pre">Distance</span></tt>.</p> constant object of type <tt class="literal"><span class="pre">Distance</span></tt>.</p>
<p>If the traversal tag for <tt class="literal"><span class="pre">X</span></tt> and <tt class="literal"><span class="pre">Y</span></tt> is convertible to <p>If the traversal tags for <tt class="literal"><span class="pre">X</span></tt> and <tt class="literal"><span class="pre">Y</span></tt> are convertible to
<tt class="literal"><span class="pre">single_pass_traversal_tag</span></tt> then the following requirements must be <tt class="literal"><span class="pre">single_pass_traversal_tag</span></tt> then the following requirements must be
met.</p> met.</p>
<table border class="table"> <table border class="table">
@ -875,7 +874,7 @@ met.</p>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<p>If the traversal tag for <tt class="literal"><span class="pre">X</span></tt> and <tt class="literal"><span class="pre">Y</span></tt> is convertible to <p>If the traversal tags for <tt class="literal"><span class="pre">X</span></tt> and <tt class="literal"><span class="pre">Y</span></tt> are convertible to
<tt class="literal"><span class="pre">random_access_traversal_tag</span></tt> then the following requirements must <tt class="literal"><span class="pre">random_access_traversal_tag</span></tt> then the following requirements must
be met.</p> be met.</p>
<table border class="table"> <table border class="table">

View File

@ -669,14 +669,13 @@ Interoperable Iterators [lib.interoperable.iterators]
A class or built-in type ``X`` that models Single Pass Iterator is A class or built-in type ``X`` that models Single Pass Iterator is
*interoperable with* a class or built-in type ``Y`` that also models *interoperable with* a class or built-in type ``Y`` that also models
Single Pass Iterator if both ``X`` and ``Y`` have the same traversal Single Pass Iterator if the following expressions are valid and
tag and if the following expressions are valid and respect the stated respect the stated semantics. In the tables below, ``x`` is an object
semantics. In the tables below, ``x`` is an object of type ``X``, of type ``X``, ``y`` is an object of type ``Y``, ``Distance`` is
``y`` is an object of type ``Y``, ``Distance`` is
``iterator_traits<Y>::difference_type``, and ``n`` represents a ``iterator_traits<Y>::difference_type``, and ``n`` represents a
constant object of type ``Distance``. constant object of type ``Distance``.
If the traversal tag for ``X`` and ``Y`` is convertible to If the traversal tags for ``X`` and ``Y`` are convertible to
``single_pass_traversal_tag`` then the following requirements must be ``single_pass_traversal_tag`` then the following requirements must be
met. met.
@ -696,7 +695,7 @@ met.
|``y != x`` |convertible to ``bool`` |``bool(a==b) != bool(a!=b)`` over its domain. | |``y != x`` |convertible to ``bool`` |``bool(a==b) != bool(a!=b)`` over its domain. |
+-------------------------------------------+-------------------------------------------------+---------------------------------------------------+ +-------------------------------------------+-------------------------------------------------+---------------------------------------------------+
If the traversal tag for ``X`` and ``Y`` is convertible to If the traversal tags for ``X`` and ``Y`` are convertible to
``random_access_traversal_tag`` then the following requirements must ``random_access_traversal_tag`` then the following requirements must
be met. be met.