forked from boostorg/iterator
some minor edits
[SVN r20124]
This commit is contained in:
@ -3,13 +3,13 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<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>
|
||||
<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="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" />
|
||||
<link rel="stylesheet" href="../../../rst.css" type="text/css" />
|
||||
<link rel="stylesheet" href="default.css" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="new-iterator-concepts">
|
||||
@ -25,7 +25,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<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
|
||||
following table gives a summary of the current value access
|
||||
requirements in the iterator categories.</p>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="31%" />
|
||||
<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
|
||||
member of type <tt class="literal"><span class="pre">T</span></tt>.</p>
|
||||
<blockquote>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="34%" />
|
||||
<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
|
||||
output.</p>
|
||||
<blockquote>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="42%" />
|
||||
<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
|
||||
semantics.</p>
|
||||
<blockquote>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="38%" />
|
||||
<col width="14%" />
|
||||
@ -445,7 +445,7 @@ semantics.</p>
|
||||
<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>
|
||||
<blockquote>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="35%" />
|
||||
<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
|
||||
iterator.</p>
|
||||
<blockquote>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="45%" />
|
||||
<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
|
||||
semantics.</p>
|
||||
<blockquote>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="27%" />
|
||||
<col width="38%" />
|
||||
@ -555,7 +555,7 @@ semantics.</p>
|
||||
concept if the following expressions are valid and respect the stated
|
||||
semantics.</p>
|
||||
<blockquote>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="33%" />
|
||||
<col width="27%" />
|
||||
@ -600,7 +600,7 @@ its domain</td>
|
||||
concept if the following expressions are valid and respect the stated
|
||||
semantics.</p>
|
||||
<blockquote>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="39%" />
|
||||
<col width="37%" />
|
||||
@ -646,7 +646,7 @@ the distance between iterators</td>
|
||||
Iterator</em> concept if the following expressions are valid and respect
|
||||
the stated semantics.</p>
|
||||
<blockquote>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="28%" />
|
||||
<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<X>::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>
|
||||
<blockquote>
|
||||
<table border class="table">
|
||||
<table class="table" frame="border" rules="all">
|
||||
<colgroup>
|
||||
<col width="26%" />
|
||||
<col width="33%" />
|
||||
@ -817,7 +817,8 @@ struct readable_writable_iterator_tag
|
||||
: virtual readable_iterator_tag
|
||||
, virtual writable_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
|
||||
: virtual public readable_writable_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>
|
||||
<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
|
||||
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
|
||||
pseudo-code.</p>
|
||||
<pre class="literal-block">
|
||||
@ -869,6 +870,12 @@ inherit-category(access-tag, traversal-tag) =
|
||||
else
|
||||
return null_category_tag;
|
||||
</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
|
||||
traits classes. For iterators whose
|
||||
<tt class="literal"><span class="pre">iterator_traits<Iter>::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>
|
||||
<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>
|
||||
</html>
|
||||
|
@ -625,7 +625,8 @@ Addition to [lib.iterator.synopsis]
|
||||
: virtual readable_iterator_tag
|
||||
, virtual writable_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
|
||||
: virtual public readable_writable_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
|
||||
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
|
||||
pseudo-code.
|
||||
|
||||
@ -679,6 +680,12 @@ pseudo-code.
|
||||
else
|
||||
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
|
||||
traits classes. For iterators whose
|
||||
|
Reference in New Issue
Block a user