some minor edits

[SVN r20124]
This commit is contained in:
Jeremy Siek
2003-09-20 23:43:30 +00:00
parent d9b4e41d5a
commit 85873e924a
2 changed files with 33 additions and 25 deletions

View File

@ -3,13 +3,13 @@
<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" />
<meta name="date" content="2003-08-14" /> <meta name="date" content="2003-09-14" />
<meta name="copyright" content="Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved" /> <meta name="copyright" content="Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003. All rights reserved" />
<link rel="stylesheet" href="../../../rst.css" type="text/css" /> <link rel="stylesheet" href="default.css" type="text/css" />
</head> </head>
<body> <body>
<div class="document" id="new-iterator-concepts"> <div class="document" id="new-iterator-concepts">
@ -25,7 +25,7 @@
<tr><th class="docinfo-name">Organization:</th> <tr><th class="docinfo-name">Organization:</th>
<td><a class="first reference" href="http://www.boost-consulting.com">Boost Consulting</a>, Indiana University <a class="reference" href="http://www.osl.iu.edu">Open Systems Lab</a>, University of Hanover <a class="last reference" href="http://www.ive.uni-hannover.de">Institute for Transport Railway Operation and Construction</a></td></tr> <td><a class="first reference" href="http://www.boost-consulting.com">Boost Consulting</a>, Indiana University <a class="reference" href="http://www.osl.iu.edu">Open Systems Lab</a>, University of Hanover <a class="last reference" href="http://www.ive.uni-hannover.de">Institute for Transport Railway Operation and Construction</a></td></tr>
<tr><th class="docinfo-name">Date:</th> <tr><th class="docinfo-name">Date:</th>
<td>2003-08-14</td></tr> <td>2003-09-14</td></tr>
<tr class="field"><th class="docinfo-name">Number:</th><td class="field-body"><strong>This document is a revised version of the official</strong> N1477=03-0060</td> <tr class="field"><th class="docinfo-name">Number:</th><td class="field-body"><strong>This document is a revised version of the official</strong> N1477=03-0060</td>
</tr> </tr>
<tr><th class="docinfo-name">Copyright:</th> <tr><th class="docinfo-name">Copyright:</th>
@ -92,7 +92,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%" />
@ -326,7 +326,7 @@ for the value type <tt class="literal"><span class="pre">T</span></tt> if the fo
respect the stated semantics. <tt class="literal"><span class="pre">U</span></tt> is the type of any specified respect the stated semantics. <tt class="literal"><span class="pre">U</span></tt> is the type of any specified
member of type <tt class="literal"><span class="pre">T</span></tt>.</p> member of type <tt class="literal"><span class="pre">T</span></tt>.</p>
<blockquote> <blockquote>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="34%" /> <col width="34%" />
<col width="30%" /> <col width="30%" />
@ -377,7 +377,7 @@ semantics. In addition, a model of <em>Writable Iterator</em> must include
in its documentation the <em>set of value types</em> that it allows for in its documentation the <em>set of value types</em> that it allows for
output.</p> output.</p>
<blockquote> <blockquote>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="42%" /> <col width="42%" />
<col width="27%" /> <col width="27%" />
@ -413,7 +413,7 @@ value types of <tt class="literal"><span class="pre">X</span></tt></td>
if the following expressions are valid and respect the stated if the following expressions are valid and respect the stated
semantics.</p> semantics.</p>
<blockquote> <blockquote>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="38%" /> <col width="38%" />
<col width="14%" /> <col width="14%" />
@ -445,7 +445,7 @@ semantics.</p>
<p>The <em>Readable Lvalue Iterator</em> concept adds the requirement that the <p>The <em>Readable 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>
<blockquote> <blockquote>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="35%" /> <col width="35%" />
<col width="32%" /> <col width="32%" />
@ -482,7 +482,7 @@ cv-qualification</td>
<tt class="literal"><span class="pre">reference</span></tt> type be a non-const reference to the value type of the <tt class="literal"><span class="pre">reference</span></tt> type be a non-const reference to the value type of the
iterator.</p> iterator.</p>
<blockquote> <blockquote>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="45%" /> <col width="45%" />
<col width="55%" /> <col width="55%" />
@ -518,7 +518,7 @@ type <tt class="literal"><span class="pre">X</span></tt>, <tt class="literal"><s
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>
<blockquote> <blockquote>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="27%" /> <col width="27%" />
<col width="38%" /> <col width="38%" />
@ -555,7 +555,7 @@ semantics.</p>
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>
<blockquote> <blockquote>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="33%" /> <col width="33%" />
<col width="27%" /> <col width="27%" />
@ -600,7 +600,7 @@ its domain</td>
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>
<blockquote> <blockquote>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="39%" /> <col width="39%" />
<col width="37%" /> <col width="37%" />
@ -646,7 +646,7 @@ the distance between iterators</td>
Iterator</em> concept if the following expressions are valid and respect Iterator</em> concept if the following expressions are valid and respect
the stated semantics.</p> the stated semantics.</p>
<blockquote> <blockquote>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="28%" /> <col width="28%" />
<col width="36%" /> <col width="36%" />
@ -690,7 +690,7 @@ the stated semantics. In the table below, <tt class="literal"><span class="pre"
<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>
<blockquote> <blockquote>
<table border class="table"> <table class="table" frame="border" rules="all">
<colgroup> <colgroup>
<col width="26%" /> <col width="26%" />
<col width="33%" /> <col width="33%" />
@ -817,7 +817,8 @@ struct readable_writable_iterator_tag
: virtual readable_iterator_tag : virtual readable_iterator_tag
, virtual writable_iterator_tag , virtual writable_iterator_tag
, virtual swappable_iterator_tag { }; , virtual swappable_iterator_tag { };
struct readable_lvalue_iterator_tag { }; struct readable_lvalue_iterator_tag
: virtual readable_iterator_tag { };
struct writable_lvalue_iterator_tag struct writable_lvalue_iterator_tag
: virtual public readable_writable_iterator_tag : virtual public readable_writable_iterator_tag
, virtual public readable_lvalue_iterator_tag { }; , virtual public readable_lvalue_iterator_tag { };
@ -836,7 +837,7 @@ struct input_output_iterator_tag : input_iterator_tag, output_iterator_tag {};
<h2><a class="toc-backref" href="#id19" name="addition-to-lib-iterator-traits">Addition to [lib.iterator.traits]</a></h2> <h2><a class="toc-backref" href="#id19" name="addition-to-lib-iterator-traits">Addition to [lib.iterator.traits]</a></h2>
<p>The <tt class="literal"><span class="pre">iterator_tag</span></tt> class template is an iterator category tag that <p>The <tt class="literal"><span class="pre">iterator_tag</span></tt> class template is an iterator category tag that
encodes the access and traversal tags in addition to being compatible encodes the access and traversal tags in addition to being compatible
with the original iterator tags. The <tt class="literal"><span class="pre">iterator_tag</span></tt> class inherits with the original iterator tags. The <tt class="literal"><span class="pre">iterator_tag</span></tt> class inherits
from one of the original iterator tags according to the following from one of the original iterator tags according to the following
pseudo-code.</p> pseudo-code.</p>
<pre class="literal-block"> <pre class="literal-block">
@ -869,6 +870,12 @@ inherit-category(access-tag, traversal-tag) =
else else
return null_category_tag; return null_category_tag;
</pre> </pre>
<p>If the argument for the template parameter <tt class="literal"><span class="pre">AccessTag</span></tt> is not
convertible to one or more of: <tt class="literal"><span class="pre">readable_iterator_tag</span></tt>,
<tt class="literal"><span class="pre">writable_iterator_tag</span></tt>, <tt class="literal"><span class="pre">swappable_iterator_tag</span></tt>, or if the
argument for <tt class="literal"><span class="pre">TraversalTag</span></tt> is not convertible to
<tt class="literal"><span class="pre">incrementable_iterator_tag</span></tt> then the behavior of <tt class="literal"><span class="pre">iterator_tag</span></tt>
is not defined.</p>
<p>The <tt class="literal"><span class="pre">access_category</span></tt> and <tt class="literal"><span class="pre">traversal_category</span></tt> class templates are <p>The <tt class="literal"><span class="pre">access_category</span></tt> and <tt class="literal"><span class="pre">traversal_category</span></tt> class templates are
traits classes. For iterators whose traits classes. For iterators whose
<tt class="literal"><span class="pre">iterator_traits&lt;Iter&gt;::iterator_category</span></tt> type is <tt class="literal"><span class="pre">iterator_tag</span></tt>, <tt class="literal"><span class="pre">iterator_traits&lt;Iter&gt;::iterator_category</span></tt> type is <tt class="literal"><span class="pre">iterator_tag</span></tt>,
@ -942,11 +949,5 @@ LocalWords: TraversalTag typename lvalues DWA Hmm JGS -->
</div> </div>
</div> </div>
</div> </div>
<hr class="footer" />
<div class="footer">
<a class="reference" href="new-iter-concepts.rst">View document source</a>.
Generated on: 2003-09-14 02:16 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.
</div>
</body> </body>
</html> </html>

View File

@ -625,7 +625,8 @@ Addition to [lib.iterator.synopsis]
: virtual readable_iterator_tag : virtual readable_iterator_tag
, virtual writable_iterator_tag , virtual writable_iterator_tag
, virtual swappable_iterator_tag { }; , virtual swappable_iterator_tag { };
struct readable_lvalue_iterator_tag { }; struct readable_lvalue_iterator_tag
: virtual readable_iterator_tag { };
struct writable_lvalue_iterator_tag struct writable_lvalue_iterator_tag
: virtual public readable_writable_iterator_tag : virtual public readable_writable_iterator_tag
, virtual public readable_lvalue_iterator_tag { }; , virtual public readable_lvalue_iterator_tag { };
@ -644,7 +645,7 @@ Addition to [lib.iterator.traits]
The ``iterator_tag`` class template is an iterator category tag that The ``iterator_tag`` class template is an iterator category tag that
encodes the access and traversal tags in addition to being compatible encodes the access and traversal tags in addition to being compatible
with the original iterator tags. The ``iterator_tag`` class inherits with the original iterator tags. The ``iterator_tag`` class inherits
from one of the original iterator tags according to the following from one of the original iterator tags according to the following
pseudo-code. pseudo-code.
@ -679,6 +680,12 @@ pseudo-code.
else else
return null_category_tag; return null_category_tag;
If the argument for the template parameter ``AccessTag`` is not
convertible to one or more of: ``readable_iterator_tag``,
``writable_iterator_tag``, ``swappable_iterator_tag``, or if the
argument for ``TraversalTag`` is not convertible to
``incrementable_iterator_tag`` then the behavior of ``iterator_tag``
is not defined.
The ``access_category`` and ``traversal_category`` class templates are The ``access_category`` and ``traversal_category`` class templates are
traits classes. For iterators whose traits classes. For iterators whose