a couple edits

[SVN r21636]
This commit is contained in:
Jeremy Siek
2004-01-12 18:07:12 +00:00
parent c15707fd70
commit 24052c3dff
4 changed files with 93 additions and 74 deletions

View File

@ -176,11 +176,15 @@ iterator_adaptor(Base) has no Requires clause, although the Returns clause says
member is copy construced from the argument (this may actually be an oversight in N1550, member is copy construced from the argument (this may actually be an oversight in N1550,
which doesn't require iterators to be copy constructible or assignable). which doesn't require iterators to be copy constructible or assignable).
:Proposed resolution: **Needs work** (Jeremy) :Proposed resolution:
Add a requirements section for the template parameters of Add a requirements section for the template parameters of
iterator_adaptor, and state that Base must be Copy Constructible and iterator_adaptor, and state that Base must be Copy Constructible and
Assignable. Assignable.
N1550 does in fact include requirements for copy constructible
and assignable in the requirements tables. To clarify, we've also
added the requirements to the text.
9.8 Specialized adaptors text should be normative 9.8 Specialized adaptors text should be normative
================================================= =================================================

View File

@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.3.1: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.2.8: http://docutils.sourceforge.net/" />
<title>Iterator Adaptor</title> <title>Iterator Adaptor</title>
<meta name="author" content="David Abrahams, Jeremy Siek, Thomas Witt" /> <meta name="author" content="David Abrahams, Jeremy Siek, Thomas Witt" />
<meta name="organization" content="Boost Consulting, Indiana University Open Systems Lab, University of Hanover Institute for Transport Railway Operation and Construction" /> <meta name="organization" content="Boost Consulting, Indiana University Open Systems Lab, University of Hanover Institute for Transport Railway Operation and Construction" />
@ -59,11 +59,12 @@ core interface functions of <tt class="literal"><span class="pre">iterator_facad
<ul class="simple"> <ul class="simple">
<li><a class="reference" href="#introduction" id="id3" name="id3">Introduction</a></li> <li><a class="reference" href="#introduction" id="id3" name="id3">Introduction</a></li>
<li><a class="reference" href="#reference" id="id4" name="id4">Reference</a><ul> <li><a class="reference" href="#reference" id="id4" name="id4">Reference</a><ul>
<li><a class="reference" href="#iterator-adaptor-base-class-parameters" id="id5" name="id5"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> base class parameters</a></li> <li><a class="reference" href="#iterator-adaptor-requirements" id="id5" name="id5"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> requirements</a></li>
<li><a class="reference" href="#iterator-adaptor-usage" id="id6" name="id6"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> usage</a></li> <li><a class="reference" href="#iterator-adaptor-base-class-parameters" id="id6" name="id6"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> base class parameters</a></li>
<li><a class="reference" href="#iterator-adaptor-public-operations" id="id7" name="id7"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> public operations</a></li> <li><a class="reference" href="#iterator-adaptor-models" id="id7" name="id7"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> models</a></li>
<li><a class="reference" href="#iterator-adaptor-protected-member-functions" id="id8" name="id8"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> protected member functions</a></li> <li><a class="reference" href="#iterator-adaptor-public-operations" id="id8" name="id8"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> public operations</a></li>
<li><a class="reference" href="#iterator-adaptor-private-member-functions" id="id9" name="id9"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> private member functions</a></li> <li><a class="reference" href="#iterator-adaptor-protected-member-functions" id="id9" name="id9"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> protected member functions</a></li>
<li><a class="reference" href="#iterator-adaptor-private-member-functions" id="id10" name="id10"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> private member functions</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -119,13 +120,13 @@ rights reserved. -->
template &lt; template &lt;
class Derived class Derived
, class Base , class Base
, class Value = use_default , class Value = use_default
, class CategoryOrTraversal = use_default , class CategoryOrTraversal = use_default
, class Reference = use_default , class Reference = use_default
, class Difference = use_default , class Difference = use_default
&gt; &gt;
class iterator_adaptor class iterator_adaptor
: public iterator_facade&lt;Derived, <em>V</em>, <em>C</em>, <em>R</em>, <em>D</em>&gt; // see <a class="reference" href="#base-parameters">details</a> : public iterator_facade&lt;Derived, <em>V</em>, <em>C</em>, <em>R</em>, <em>D</em>&gt; // see <a class="reference" href="#requirements">details</a>
{ {
friend class iterator_core_access; friend class iterator_core_access;
public: public:
@ -157,8 +158,14 @@ class iterator_adaptor
Base m_iterator; // exposition only Base m_iterator; // exposition only
}; };
</pre> </pre>
<a class="target" id="base-parameters" name="base-parameters"></a><div class="section" id="iterator-adaptor-base-class-parameters"> <a class="target" id="requirements" name="requirements"></a><div class="section" id="iterator-adaptor-requirements">
<h2><a class="toc-backref" href="#id5" name="iterator-adaptor-base-class-parameters"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> base class parameters</a></h2> <h2><a class="toc-backref" href="#id5" name="iterator-adaptor-requirements"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> requirements</a></h2>
<p>The <tt class="literal"><span class="pre">Derived</span></tt> template argument must be a publicly derived from
<tt class="literal"><span class="pre">iterator_adaptor</span></tt>.</p>
<p>The <tt class="literal"><span class="pre">Base</span></tt> argument shall be Assignable and Copy Constructible.</p>
<a class="target" id="base-parameters" name="base-parameters"></a></div>
<div class="section" id="iterator-adaptor-base-class-parameters">
<h2><a class="toc-backref" href="#id6" name="iterator-adaptor-base-class-parameters"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> base class parameters</a></h2>
<p>The <em>V</em>, <em>C</em>, <em>R</em>, and <em>D</em> parameters of the <tt class="literal"><span class="pre">iterator_facade</span></tt> <p>The <em>V</em>, <em>C</em>, <em>R</em>, and <em>D</em> parameters of the <tt class="literal"><span class="pre">iterator_facade</span></tt>
used as a base class in the summary of <tt class="literal"><span class="pre">iterator_adaptor</span></tt> used as a base class in the summary of <tt class="literal"><span class="pre">iterator_adaptor</span></tt>
above are defined as follows:</p> above are defined as follows:</p>
@ -187,20 +194,18 @@ above are defined as follows:</p>
return Difference return Difference
</pre> </pre>
</div> </div>
<div class="section" id="iterator-adaptor-usage"> <div class="section" id="iterator-adaptor-models">
<h2><a class="toc-backref" href="#id6" name="iterator-adaptor-usage"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> usage</a></h2> <h2><a class="toc-backref" href="#id7" name="iterator-adaptor-models"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> models</a></h2>
<p>The <tt class="literal"><span class="pre">Derived</span></tt> template parameter must be a publicly derived from <p>In order for <tt class="literal"><span class="pre">Derived</span></tt> to model the iterator concepts corresponding
<tt class="literal"><span class="pre">iterator_adaptor</span></tt>. In order for <tt class="literal"><span class="pre">Derived</span></tt> to model the to <tt class="literal"><span class="pre">iterator_traits&lt;Derived&gt;::iterator_category</span></tt>, the expressions
iterator concepts corresponding to involving <tt class="literal"><span class="pre">m_iterator</span></tt> in the specifications of those private member
<tt class="literal"><span class="pre">iterator_traits&lt;Derived&gt;::iterator_category</span></tt>, the expressions functions of <tt class="literal"><span class="pre">iterator_adaptor</span></tt> that may be called by
involving <tt class="literal"><span class="pre">m_iterator</span></tt> in the specifications of those private <tt class="literal"><span class="pre">iterator_facade&lt;Derived,</span> <span class="pre">V,</span> <span class="pre">C,</span> <span class="pre">R,</span> <span class="pre">D&gt;</span></tt> in evaluating any valid
member functions of <tt class="literal"><span class="pre">iterator_adaptor</span></tt> that may be called by expression involving <tt class="literal"><span class="pre">Derived</span></tt> in those concepts' requirements.</p>
<tt class="literal"><span class="pre">iterator_facade&lt;Derived,</span> <span class="pre">V,</span> <span class="pre">C,</span> <span class="pre">R,</span> <span class="pre">D&gt;</span></tt> <!-- The above is confusing and needs a rewrite. -JGS -->
in evaluating any valid expression involving <tt class="literal"><span class="pre">Derived</span></tt>
in those concepts' requirements.</p>
</div> </div>
<div class="section" id="iterator-adaptor-public-operations"> <div class="section" id="iterator-adaptor-public-operations">
<h2><a class="toc-backref" href="#id7" name="iterator-adaptor-public-operations"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> public operations</a></h2> <h2><a class="toc-backref" href="#id8" name="iterator-adaptor-public-operations"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> public operations</a></h2>
<p><tt class="literal"><span class="pre">iterator_adaptor();</span></tt></p> <p><tt class="literal"><span class="pre">iterator_adaptor();</span></tt></p>
<table class="field-list" frame="void" rules="none"> <table class="field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@ -234,7 +239,7 @@ in those concepts' requirements.</p>
</table> </table>
</div> </div>
<div class="section" id="iterator-adaptor-protected-member-functions"> <div class="section" id="iterator-adaptor-protected-member-functions">
<h2><a class="toc-backref" href="#id8" name="iterator-adaptor-protected-member-functions"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> protected member functions</a></h2> <h2><a class="toc-backref" href="#id9" name="iterator-adaptor-protected-member-functions"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> protected member functions</a></h2>
<p><tt class="literal"><span class="pre">Base</span> <span class="pre">const&amp;</span> <span class="pre">base_reference()</span> <span class="pre">const;</span></tt></p> <p><tt class="literal"><span class="pre">Base</span> <span class="pre">const&amp;</span> <span class="pre">base_reference()</span> <span class="pre">const;</span></tt></p>
<table class="field-list" frame="void" rules="none"> <table class="field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@ -255,7 +260,7 @@ in those concepts' requirements.</p>
</table> </table>
</div> </div>
<div class="section" id="iterator-adaptor-private-member-functions"> <div class="section" id="iterator-adaptor-private-member-functions">
<h2><a class="toc-backref" href="#id9" name="iterator-adaptor-private-member-functions"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> private member functions</a></h2> <h2><a class="toc-backref" href="#id10" name="iterator-adaptor-private-member-functions"><tt class="literal"><span class="pre">iterator_adaptor</span></tt> private member functions</a></h2>
<p><tt class="literal"><span class="pre">typename</span> <span class="pre">iterator_adaptor::reference</span> <span class="pre">dereference()</span> <span class="pre">const;</span></tt></p> <p><tt class="literal"><span class="pre">typename</span> <span class="pre">iterator_adaptor::reference</span> <span class="pre">dereference()</span> <span class="pre">const;</span></tt></p>
<table class="field-list" frame="void" rules="none"> <table class="field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@ -324,10 +329,10 @@ typename iterator_adaptor::difference_type distance_to(
</div> </div>
</div> </div>
</div> </div>
<hr class="footer" /> <hr class="footer"/>
<div class="footer"> <div class="footer">
<a class="reference" href="iterator_adaptor.rst">View document source</a>. <a class="reference" href="iterator_adaptor.rst">View document source</a>.
Generated on: 2004-01-12 15:49 UTC. Generated on: 2004-01-12 18:05 UTC.
Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
</div> </div>
</body> </body>

View File

@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.3.1: http://docutils.sourceforge.net/" /> <meta name="generator" content="Docutils 0.2.8: http://docutils.sourceforge.net/" />
<title>New Iterator Concepts</title> <title>New Iterator Concepts</title>
<meta name="author" content="David Abrahams, Jeremy Siek, Thomas Witt" /> <meta name="author" content="David Abrahams, Jeremy Siek, Thomas Witt" />
<meta name="organization" content="Boost Consulting, Indiana University Open Systems Lab, University of Hanover Institute for Transport Railway Operation and Construction" /> <meta name="organization" content="Boost Consulting, Indiana University Open Systems Lab, University of Hanover Institute for Transport Railway Operation and Construction" />
@ -107,7 +107,7 @@ geared towards iterator traversal (hence the category names), while
requirements that address value access sneak in at various places. The requirements that address value access sneak in at various places. The
following table gives a summary of the current value access following table gives a summary of the current value access
requirements in the iterator categories.</p> requirements in the iterator categories.</p>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="31%" /> <col width="31%" />
<col width="69%" /> <col width="69%" />
@ -360,17 +360,18 @@ object of type <tt class="literal"><span class="pre">T</span></tt>.</p>
<a class="target" id="readable-iterator" name="readable-iterator"></a><div class="section" id="readable-iterators-lib-readable-iterators"> <a class="target" id="readable-iterator" name="readable-iterator"></a><div class="section" id="readable-iterators-lib-readable-iterators">
<h4><a class="toc-backref" href="#id11" name="readable-iterators-lib-readable-iterators">Readable Iterators [lib.readable.iterators]</a></h4> <h4><a class="toc-backref" href="#id11" name="readable-iterators-lib-readable-iterators">Readable Iterators [lib.readable.iterators]</a></h4>
<p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Readable Iterator</em> concept <p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Readable Iterator</em> concept
for the value type <tt class="literal"><span class="pre">T</span></tt> if the following expressions are valid and for value type <tt class="literal"><span class="pre">T</span></tt> if, in addition to <tt class="literal"><span class="pre">X</span></tt> being Assignable and
respect the stated semantics. <tt class="literal"><span class="pre">U</span></tt> is the type of any specified Copy Constructible, the following expressions are valid and respect
member of type <tt class="literal"><span class="pre">T</span></tt>.</p> the stated semantics. <tt class="literal"><span class="pre">U</span></tt> is the type of any specified member of
<table border class="table"> type <tt class="literal"><span class="pre">T</span></tt>.</p>
<table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="42%" /> <col width="42%" />
<col width="29%" /> <col width="29%" />
<col width="30%" /> <col width="30%" />
</colgroup> </colgroup>
<thead valign="bottom"> <thead valign="bottom">
<tr><th colspan="3">Readable Iterator Requirements (in addition to CopyConstructible)</th> <tr><th colspan="3">Readable Iterator Requirements (in addition to Assignable and Copy Constructible)</th>
</tr> </tr>
<tr><th>Expression</th> <tr><th>Expression</th>
<th>Return Type</th> <th>Return Type</th>
@ -418,16 +419,17 @@ is equivalent to accessing a T directly. -->
<div class="section" id="writable-iterators-lib-writable-iterators"> <div class="section" id="writable-iterators-lib-writable-iterators">
<h4><a class="toc-backref" href="#id12" name="writable-iterators-lib-writable-iterators">Writable Iterators [lib.writable.iterators]</a></h4> <h4><a class="toc-backref" href="#id12" name="writable-iterators-lib-writable-iterators">Writable Iterators [lib.writable.iterators]</a></h4>
<p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Writable Iterator</em> concept <p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Writable Iterator</em> concept
if the following expressions are valid and respect the stated if, in addition to <tt class="literal"><span class="pre">X</span></tt> being Copy Constructible, the following
semantics. Writable Iterators have an associated <em>set of value types</em>.</p> expressions are valid and respect the stated semantics. Writable
<table border class="table"> Iterators have an associated <em>set of value types</em>.</p>
<table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="37%" /> <col width="37%" />
<col width="21%" /> <col width="21%" />
<col width="42%" /> <col width="42%" />
</colgroup> </colgroup>
<thead valign="bottom"> <thead valign="bottom">
<tr><th colspan="3">Writable Iterator Requirements (in addition to CopyConstructible)</th> <tr><th colspan="3">Writable Iterator Requirements (in addition to Copy Constructible)</th>
</tr> </tr>
<tr><th>Expression</th> <tr><th>Expression</th>
<th>Return Type</th> <th>Return Type</th>
@ -447,16 +449,16 @@ value types of <tt class="literal"><span class="pre">X</span></tt></td>
<div class="section" id="swappable-iterators-lib-swappable-iterators"> <div class="section" id="swappable-iterators-lib-swappable-iterators">
<h4><a class="toc-backref" href="#id13" name="swappable-iterators-lib-swappable-iterators">Swappable Iterators [lib.swappable.iterators]</a></h4> <h4><a class="toc-backref" href="#id13" name="swappable-iterators-lib-swappable-iterators">Swappable Iterators [lib.swappable.iterators]</a></h4>
<p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Swappable Iterator</em> concept <p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Swappable Iterator</em> concept
if the following expressions are valid and respect the stated if, in addition to <tt class="literal"><span class="pre">X</span></tt> being Copy Constructible, the following
semantics.</p> expressions are valid and respect the stated semantics.</p>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="37%" /> <col width="37%" />
<col width="19%" /> <col width="19%" />
<col width="43%" /> <col width="43%" />
</colgroup> </colgroup>
<thead valign="bottom"> <thead valign="bottom">
<tr><th colspan="3">Swappable Iterator Requirements (in addition to CopyConstructible)</th> <tr><th colspan="3">Swappable Iterator Requirements (in addition to Copy Constructible)</th>
</tr> </tr>
<tr><th>Expression</th> <tr><th>Expression</th>
<th>Return Type</th> <th>Return Type</th>
@ -480,7 +482,7 @@ exchanged</td>
<h4><a class="toc-backref" href="#id14" name="lvalue-iterators-lib-lvalue-iterators">Lvalue Iterators [lib.lvalue.iterators]</a></h4> <h4><a class="toc-backref" href="#id14" name="lvalue-iterators-lib-lvalue-iterators">Lvalue Iterators [lib.lvalue.iterators]</a></h4>
<p>The <em>Lvalue Iterator</em> concept adds the requirement that the <p>The <em>Lvalue Iterator</em> concept adds the requirement that the
<tt class="literal"><span class="pre">reference</span></tt> type be a reference to the value type of the iterator.</p> <tt class="literal"><span class="pre">reference</span></tt> type be a reference to the value type of the iterator.</p>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="42%" /> <col width="42%" />
<col width="14%" /> <col width="14%" />
@ -515,9 +517,10 @@ type <tt class="literal"><span class="pre">X</span></tt>, <tt class="literal"><s
<div class="section" id="incrementable-iterators-lib-incrementable-iterators"> <div class="section" id="incrementable-iterators-lib-incrementable-iterators">
<h4><a class="toc-backref" href="#id16" name="incrementable-iterators-lib-incrementable-iterators">Incrementable Iterators [lib.incrementable.iterators]</a></h4> <h4><a class="toc-backref" href="#id16" name="incrementable-iterators-lib-incrementable-iterators">Incrementable Iterators [lib.incrementable.iterators]</a></h4>
<p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Incrementable Iterator</em> <p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Incrementable Iterator</em>
concept if the following expressions are valid and respect the stated concept if, in addition to <tt class="literal"><span class="pre">X</span></tt> being Assignable and Copy
semantics.</p> Constructible, the following expressions are valid and respect the
<table border class="table"> stated semantics.</p>
<table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="39%" /> <col width="39%" />
<col width="37%" /> <col width="37%" />
@ -562,7 +565,7 @@ incrementable_traversal_tag for consistency. -->
<p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Single Pass Iterator</em> <p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Single Pass Iterator</em>
concept if the following expressions are valid and respect the stated concept if the following expressions are valid and respect the stated
semantics.</p> semantics.</p>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="36%" /> <col width="36%" />
<col width="33%" /> <col width="33%" />
@ -608,9 +611,10 @@ single_pass_traversal_tag for consistency -->
<div class="section" id="forward-traversal-iterators-lib-forward-traversal-iterators"> <div class="section" id="forward-traversal-iterators-lib-forward-traversal-iterators">
<h4><a class="toc-backref" href="#id18" name="forward-traversal-iterators-lib-forward-traversal-iterators">Forward Traversal Iterators [lib.forward.traversal.iterators]</a></h4> <h4><a class="toc-backref" href="#id18" name="forward-traversal-iterators-lib-forward-traversal-iterators">Forward Traversal Iterators [lib.forward.traversal.iterators]</a></h4>
<p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Forward Traversal Iterator</em> <p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Forward Traversal Iterator</em>
concept if the following expressions are valid and respect the stated concept if, in addition to <tt class="literal"><span class="pre">X</span></tt> meeting the requirements of Single
semantics.</p> Pass Iterator, the following expressions are valid and respect the
<table border class="table"> stated semantics.</p>
<table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="44%" /> <col width="44%" />
<col width="39%" /> <col width="39%" />
@ -657,9 +661,10 @@ forward_traversal_tag for consistency -->
<div class="section" id="bidirectional-traversal-iterators-lib-bidirectional-traversal-iterators"> <div class="section" id="bidirectional-traversal-iterators-lib-bidirectional-traversal-iterators">
<h4><a class="toc-backref" href="#id19" name="bidirectional-traversal-iterators-lib-bidirectional-traversal-iterators">Bidirectional Traversal Iterators [lib.bidirectional.traversal.iterators]</a></h4> <h4><a class="toc-backref" href="#id19" name="bidirectional-traversal-iterators-lib-bidirectional-traversal-iterators">Bidirectional Traversal Iterators [lib.bidirectional.traversal.iterators]</a></h4>
<p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Bidirectional Traversal <p>A class or built-in type <tt class="literal"><span class="pre">X</span></tt> models the <em>Bidirectional Traversal
Iterator</em> concept if the following expressions are valid and respect Iterator</em> concept if, in addition to <tt class="literal"><span class="pre">X</span></tt> meeting the requirements of
the stated semantics.</p> Forward Traversal Iterator, the following expressions are valid and
<table border class="table"> respect the stated semantics.</p>
<table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="35%" /> <col width="35%" />
<col width="44%" /> <col width="44%" />
@ -715,7 +720,7 @@ Iterator</em> concept if the following expressions are valid and respect
the stated semantics. In the table below, <tt class="literal"><span class="pre">Distance</span></tt> is the stated semantics. In the table below, <tt class="literal"><span class="pre">Distance</span></tt> is
<tt class="literal"><span class="pre">iterator_traits&lt;X&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;X&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>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="31%" /> <col width="31%" />
<col width="35%" /> <col width="35%" />
@ -881,10 +886,10 @@ LocalWords: incrementable xxx min prev inplace png oldeqnew AccessTag struct
LocalWords: TraversalTag typename lvalues DWA Hmm JGS mis enum --> LocalWords: TraversalTag typename lvalues DWA Hmm JGS mis enum -->
</div> </div>
</div> </div>
<hr class="footer" /> <hr class="footer"/>
<div class="footer"> <div class="footer">
<a class="reference" href="new-iter-concepts.rst">View document source</a>. <a class="reference" href="new-iter-concepts.rst">View document source</a>.
Generated on: 2004-01-12 15:50 UTC. Generated on: 2004-01-12 18:05 UTC.
Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
</div> </div>
</body> </body>

View File

@ -355,12 +355,13 @@ Readable Iterators [lib.readable.iterators]
------------------------------------------- -------------------------------------------
A class or built-in type ``X`` models the *Readable Iterator* concept A class or built-in type ``X`` models the *Readable Iterator* concept
for the value type ``T`` if the following expressions are valid and for value type ``T`` if, in addition to ``X`` being Assignable and
respect the stated semantics. ``U`` is the type of any specified Copy Constructible, the following expressions are valid and respect
member of type ``T``. the stated semantics. ``U`` is the type of any specified member of
type ``T``.
+--------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------+
|Readable Iterator Requirements (in addition to CopyConstructible) | |Readable Iterator Requirements (in addition to Assignable and Copy Constructible) |
+-----------------------------------+------------------------+-------------------------+ +-----------------------------------+------------------------+-------------------------+
|Expression |Return Type |Note/Precondition | |Expression |Return Type |Note/Precondition |
+===================================+========================+=========================+ +===================================+========================+=========================+
@ -394,11 +395,12 @@ Writable Iterators [lib.writable.iterators]
------------------------------------------- -------------------------------------------
A class or built-in type ``X`` models the *Writable Iterator* concept A class or built-in type ``X`` models the *Writable Iterator* concept
if the following expressions are valid and respect the stated if, in addition to ``X`` being Copy Constructible, the following
semantics. Writable Iterators have an associated *set of value types*. expressions are valid and respect the stated semantics. Writable
Iterators have an associated *set of value types*.
+---------------------------------------------------------------------+ +---------------------------------------------------------------------+
|Writable Iterator Requirements (in addition to CopyConstructible) | |Writable Iterator Requirements (in addition to Copy Constructible) |
+-------------------------+--------------+----------------------------+ +-------------------------+--------------+----------------------------+
|Expression |Return Type |Precondition | |Expression |Return Type |Precondition |
+=========================+==============+============================+ +=========================+==============+============================+
@ -411,11 +413,11 @@ Swappable Iterators [lib.swappable.iterators]
--------------------------------------------- ---------------------------------------------
A class or built-in type ``X`` models the *Swappable Iterator* concept A class or built-in type ``X`` models the *Swappable Iterator* concept
if the following expressions are valid and respect the stated if, in addition to ``X`` being Copy Constructible, the following
semantics. expressions are valid and respect the stated semantics.
+---------------------------------------------------------------------+ +---------------------------------------------------------------------+
|Swappable Iterator Requirements (in addition to CopyConstructible) | |Swappable Iterator Requirements (in addition to Copy Constructible) |
+-------------------------+-------------+-----------------------------+ +-------------------------+-------------+-----------------------------+
|Expression |Return Type |Postcondition | |Expression |Return Type |Postcondition |
+=========================+=============+=============================+ +=========================+=============+=============================+
@ -458,8 +460,9 @@ Incrementable Iterators [lib.incrementable.iterators]
----------------------------------------------------- -----------------------------------------------------
A class or built-in type ``X`` models the *Incrementable Iterator* A class or built-in type ``X`` models the *Incrementable Iterator*
concept if the following expressions are valid and respect the stated concept if, in addition to ``X`` being Assignable and Copy
semantics. Constructible, the following expressions are valid and respect the
stated semantics.
+-------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------+
@ -522,8 +525,9 @@ Forward Traversal Iterators [lib.forward.traversal.iterators]
------------------------------------------------------------- -------------------------------------------------------------
A class or built-in type ``X`` models the *Forward Traversal Iterator* A class or built-in type ``X`` models the *Forward Traversal Iterator*
concept if the following expressions are valid and respect the stated concept if, in addition to ``X`` meeting the requirements of Single
semantics. Pass Iterator, the following expressions are valid and respect the
stated semantics.
+-------------------------------------------------------------------------------------------+ +-------------------------------------------------------------------------------------------+
|Forward Traversal Iterator Requirements (in addition to Single Pass Iterator) | |Forward Traversal Iterator Requirements (in addition to Single Pass Iterator) |
@ -556,8 +560,9 @@ Bidirectional Traversal Iterators [lib.bidirectional.traversal.iterators]
------------------------------------------------------------------------- -------------------------------------------------------------------------
A class or built-in type ``X`` models the *Bidirectional Traversal A class or built-in type ``X`` models the *Bidirectional Traversal
Iterator* concept if the following expressions are valid and respect Iterator* concept if, in addition to ``X`` meeting the requirements of
the stated semantics. Forward Traversal Iterator, the following expressions are valid and
respect the stated semantics.
+--------------------------------------------------------------------------------------------------------+ +--------------------------------------------------------------------------------------------------------+
|Bidirectional Traversal Iterator Requirements (in addition to Forward Traversal Iterator) | |Bidirectional Traversal Iterator Requirements (in addition to Forward Traversal Iterator) |