mirror of
https://github.com/boostorg/iterator.git
synced 2025-05-09 23:23:54 +00:00
More progress on indirect_iterator
[SVN r21720]
This commit is contained in:
parent
5f3b97ceff
commit
dd50d3f2ab
@ -12,6 +12,7 @@ MV = /bin/mv
|
|||||||
EGREP = /bin/egrep
|
EGREP = /bin/egrep
|
||||||
ECHO = /bin/echo
|
ECHO = /bin/echo
|
||||||
PERL = /usr/bin/perl
|
PERL = /usr/bin/perl
|
||||||
|
PYTHON = python
|
||||||
CAT = /bin/cat
|
CAT = /bin/cat
|
||||||
TOUCH = /bin/touch
|
TOUCH = /bin/touch
|
||||||
ZIP = /usr/bin/zip
|
ZIP = /usr/bin/zip
|
||||||
@ -48,7 +49,7 @@ PRINTZIP = prints.zip
|
|||||||
SLIDEZIP = slides.zip
|
SLIDEZIP = slides.zip
|
||||||
|
|
||||||
# ... Depend
|
# ... Depend
|
||||||
DEPENDFILES = .depend .depend-rst
|
DEPENDFILES = .depend
|
||||||
GENFILE = .generated
|
GENFILE = .generated
|
||||||
|
|
||||||
# ... List of extensions and files generated
|
# ... List of extensions and files generated
|
||||||
@ -211,26 +212,21 @@ clean:
|
|||||||
${RMRF} ${generated}
|
${RMRF} ${generated}
|
||||||
|
|
||||||
# ... Target: create dependencies
|
# ... Target: create dependencies
|
||||||
depend: .depend-rst
|
depend: .depend
|
||||||
|
|
||||||
# ... Target: dependency file (parse TEXFILES for multiinclude and includegraphics)
|
# ... Target: dependency file (parse TEXFILES for multiinclude and includegraphics)
|
||||||
.depend: GNUmakefile ${TEXFILES}
|
# .depend: GNUmakefile ${TEXFILES}
|
||||||
${RMRF} $@
|
# ${RMRF} $@
|
||||||
@for t in ${TEXSTEMS} ; do \
|
# @for t in ${TEXSTEMS} ; do \
|
||||||
${ECHO} "Scanning $$t.tex"; \
|
# ${ECHO} "Scanning $$t.tex"; \
|
||||||
${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /\\multiinclude(\[.*?\])?{(.*?)}/ && print "$$target: $$2.0\n";}' $$t.pdf < $$t.tex >> $@; \
|
# ${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /\\multiinclude(\[.*?\])?{(.*?)}/ && print "$$target: $$2.0\n";}' $$t.pdf < $$t.tex >> $@; \
|
||||||
${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /\\includegraphics(\[.*?\])?{(.*?)\.(.*?)}/ && print "$$target: $$2.$$3\n";}' $$t.pdf < $$t.tex >> $@; \
|
# ${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /\\includegraphics(\[.*?\])?{(.*?)\.(.*?)}/ && print "$$target: $$2.$$3\n";}' $$t.pdf < $$t.tex >> $@; \
|
||||||
done
|
# done
|
||||||
|
|
||||||
.depend-rst: GNUmakefile ${RSTFILES}
|
.depend: GNUmakefile ${RSTFILES}
|
||||||
${RMRF} $@
|
${RMRF} $@
|
||||||
@for t in ${RSTSTEMS} ; do \
|
${PYTHON} scanrst.py ${RSTFILES} > $@
|
||||||
${ECHO} "Scanning $$t.rst"; \
|
|
||||||
${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /^\.\. (include|image)::\s+(.*)/ && print "$$target: $$2\n";}' $$t.html < $$t.rst >> $@; \
|
|
||||||
${PERL} -e 'my $$target = shift @ARGV;' -e 'while (<>) { /^\.\. (include|image)::\s+(.*)/ && print "$$target: $$2\n";}' $$t.tex < $$t.rst >> $@; \
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
# ... include dependency files
|
# ... include dependency files
|
||||||
# -include .depend
|
# -include .depend
|
||||||
-include .depend-rst
|
-include .depend
|
||||||
|
@ -1415,7 +1415,7 @@ else
|
|||||||
<tt class="literal"><span class="pre">R</span></tt> is <tt class="literal"><span class="pre">reference</span></tt> and <tt class="literal"><span class="pre">V</span></tt> is <tt class="literal"><span class="pre">value_type</span></tt>, and where: if
|
<tt class="literal"><span class="pre">R</span></tt> is <tt class="literal"><span class="pre">reference</span></tt> and <tt class="literal"><span class="pre">V</span></tt> is <tt class="literal"><span class="pre">value_type</span></tt>, and where: if
|
||||||
<tt class="literal"><span class="pre">CategoryOrTraversal</span></tt> is <tt class="literal"><span class="pre">use_default</span></tt>, <tt class="literal"><span class="pre">C</span></tt> is
|
<tt class="literal"><span class="pre">CategoryOrTraversal</span></tt> is <tt class="literal"><span class="pre">use_default</span></tt>, <tt class="literal"><span class="pre">C</span></tt> is
|
||||||
<tt class="literal"><span class="pre">iterator_traversal<Iterator>::type</span></tt> and otherwise <tt class="literal"><span class="pre">C</span></tt> is
|
<tt class="literal"><span class="pre">iterator_traversal<Iterator>::type</span></tt> and otherwise <tt class="literal"><span class="pre">C</span></tt> is
|
||||||
<tt class="literal"><span class="pre">CategoryOrTraversal</span></tt>:</p>
|
<tt class="literal"><span class="pre">CategoryOrTraversal</span></tt>.</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<ul>
|
<ul>
|
||||||
<li><p class="first">if <tt class="literal"><span class="pre">C</span></tt> is convertible to <tt class="literal"><span class="pre">std::input_iterator_tag</span></tt> or
|
<li><p class="first">if <tt class="literal"><span class="pre">C</span></tt> is convertible to <tt class="literal"><span class="pre">std::input_iterator_tag</span></tt> or
|
||||||
@ -1465,38 +1465,42 @@ convertible, and not to any more-derived traversal tag type.</p>
|
|||||||
</div>
|
</div>
|
||||||
<div class="section" id="indirect-iterator-requirements">
|
<div class="section" id="indirect-iterator-requirements">
|
||||||
<h4><a class="toc-backref" href="#id45" name="indirect-iterator-requirements"><tt class="literal"><span class="pre">indirect_iterator</span></tt> requirements</a></h4>
|
<h4><a class="toc-backref" href="#id45" name="indirect-iterator-requirements"><tt class="literal"><span class="pre">indirect_iterator</span></tt> requirements</a></h4>
|
||||||
<p><tt class="literal"><span class="pre">CategoryOrTraversal</span></tt> argument shall be <tt class="literal"><span class="pre">use_default</span></tt> or it
|
<p>The expression <tt class="literal"><span class="pre">*v</span></tt>, where <tt class="literal"><span class="pre">v</span></tt> is an object of
|
||||||
shall be convertible to one of the standard iterator or traversal
|
|
||||||
tags. If <tt class="literal"><span class="pre">CategoryOrTraversal</span></tt> is not <tt class="literal"><span class="pre">use_default</span></tt>, it shall
|
|
||||||
indicate the traversal category modeled by <tt class="literal"><span class="pre">Iterator</span></tt>. If</p>
|
|
||||||
<p>The expression <tt class="literal"><span class="pre">*v</span></tt>, where <tt class="literal"><span class="pre">v</span></tt> is an object of type
|
|
||||||
<tt class="literal"><span class="pre">iterator_traits<Iterator>::value_type</span></tt>, shall be valid
|
<tt class="literal"><span class="pre">iterator_traits<Iterator>::value_type</span></tt>, shall be valid
|
||||||
expression and convertible to <tt class="literal"><span class="pre">reference</span></tt>. Also
|
expression and convertible to <tt class="literal"><span class="pre">reference</span></tt>. <tt class="literal"><span class="pre">Iterator</span></tt> shall
|
||||||
<tt class="literal"><span class="pre">indirect_iterator::reference</span></tt> must be convertible to
|
model the traversal concept indicated by <tt class="literal"><span class="pre">iterator_category</span></tt>.
|
||||||
<tt class="literal"><span class="pre">indirect_iterator::value</span></tt>. There are further requirements on
|
<tt class="literal"><span class="pre">Value</span></tt>, <tt class="literal"><span class="pre">Reference</span></tt>, and <tt class="literal"><span class="pre">Difference</span></tt> shall be chosen so
|
||||||
the <tt class="literal"><span class="pre">iterator_traits<Iterator>::value_type</span></tt> if the <tt class="literal"><span class="pre">Value</span></tt>
|
that <tt class="literal"><span class="pre">value_type</span></tt>, <tt class="literal"><span class="pre">reference</span></tt>, and <tt class="literal"><span class="pre">difference_type</span></tt> meet
|
||||||
|
the requirements indicated by <tt class="literal"><span class="pre">iterator_category</span></tt>.</p>
|
||||||
|
<p>[Note: there are further requirements on the
|
||||||
|
<tt class="literal"><span class="pre">iterator_traits<Iterator>::value_type</span></tt> if the <tt class="literal"><span class="pre">Value</span></tt>
|
||||||
parameter is not <tt class="literal"><span class="pre">use_default</span></tt>, as implied by the algorithm for
|
parameter is not <tt class="literal"><span class="pre">use_default</span></tt>, as implied by the algorithm for
|
||||||
deducing the default for the <tt class="literal"><span class="pre">value_type</span></tt> member.</p>
|
deducing the default for the <tt class="literal"><span class="pre">value_type</span></tt> member.]</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="indirect-iterator-models">
|
<div class="section" id="indirect-iterator-models">
|
||||||
<h4><a class="toc-backref" href="#id46" name="indirect-iterator-models"><tt class="literal"><span class="pre">indirect_iterator</span></tt> models</a></h4>
|
<h4><a class="toc-backref" href="#id46" name="indirect-iterator-models"><tt class="literal"><span class="pre">indirect_iterator</span></tt> models</a></h4>
|
||||||
<p>If <tt class="literal"><span class="pre">CategoryOrTraversal</span></tt> is a standard iterator tag,
|
<p>In addition to the concepts indicated by <tt class="literal"><span class="pre">iterator_category</span></tt>, a
|
||||||
<tt class="literal"><span class="pre">indirect_iterator</span></tt> is a model of the iterator concept corresponding
|
specialization of <tt class="literal"><span class="pre">indirect_iterator</span></tt> models the following
|
||||||
to the tag, otherwise <tt class="literal"><span class="pre">indirect_iterator</span></tt> satisfies the requirements
|
concepts, Where <tt class="literal"><span class="pre">v</span></tt> is an object of
|
||||||
of the most refined standard traversal concept that is satisfied by
|
<tt class="literal"><span class="pre">iterator_traits<Iterator>::value_type</span></tt>:</p>
|
||||||
the <tt class="literal"><span class="pre">Iterator</span></tt> argument.</p>
|
<blockquote>
|
||||||
<p><tt class="literal"><span class="pre">indirect_iterator</span></tt> models Readable Iterator. If
|
<ul class="simple">
|
||||||
<tt class="literal"><span class="pre">indirect_iterator::reference(*v)</span> <span class="pre">=</span> <span class="pre">t</span></tt> is a valid expression (where
|
<li>Readable Iterator if <tt class="literal"><span class="pre">reference(*v)</span></tt> is convertible to
|
||||||
<tt class="literal"><span class="pre">t</span></tt> is an object of type <tt class="literal"><span class="pre">indirect_iterator::value_type</span></tt>) then
|
<tt class="literal"><span class="pre">value_type</span></tt>.</li>
|
||||||
<tt class="literal"><span class="pre">indirect_iterator</span></tt> models Writable Iterator. If
|
<li>Writable Iterator if <tt class="literal"><span class="pre">reference(*v)</span> <span class="pre">=</span> <span class="pre">t</span></tt> is a valid
|
||||||
<tt class="literal"><span class="pre">indirect_iterator::reference</span></tt> is a reference then
|
expression (where <tt class="literal"><span class="pre">t</span></tt> is an object of type
|
||||||
<tt class="literal"><span class="pre">indirect_iterator</span></tt> models Lvalue Iterator.</p>
|
<tt class="literal"><span class="pre">indirect_iterator::value_type</span></tt>)</li>
|
||||||
|
<li>Lvalue Iterator if <tt class="literal"><span class="pre">reference</span></tt> is a reference type.</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
<p>Two specializations of <tt class="literal"><span class="pre">indirect_iterator</span></tt> are interoperable if
|
||||||
|
their <tt class="literal"><span class="pre">Iterator</span></tt> parameters are interoperable.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="indirect-iterator-operations">
|
<div class="section" id="indirect-iterator-operations">
|
||||||
<h4><a class="toc-backref" href="#id47" name="indirect-iterator-operations"><tt class="literal"><span class="pre">indirect_iterator</span></tt> operations</a></h4>
|
<h4><a class="toc-backref" href="#id47" name="indirect-iterator-operations"><tt class="literal"><span class="pre">indirect_iterator</span></tt> operations</a></h4>
|
||||||
<p>In addition to the operations required by the concepts modeled by
|
<p>In addition to the operations required by the concepts described
|
||||||
<tt class="literal"><span class="pre">indirect_iterator</span></tt>, <tt class="literal"><span class="pre">indirect_iterator</span></tt> provides the following
|
above, specializations of <tt class="literal"><span class="pre">indirect_iterator</span></tt> provide the
|
||||||
operations.</p>
|
following operations.</p>
|
||||||
<p><tt class="literal"><span class="pre">indirect_iterator();</span></tt></p>
|
<p><tt class="literal"><span class="pre">indirect_iterator();</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" />
|
||||||
|
@ -129,7 +129,7 @@ else
|
|||||||
<tt class="literal"><span class="pre">R</span></tt> is <tt class="literal"><span class="pre">reference</span></tt> and <tt class="literal"><span class="pre">V</span></tt> is <tt class="literal"><span class="pre">value_type</span></tt>, and where: if
|
<tt class="literal"><span class="pre">R</span></tt> is <tt class="literal"><span class="pre">reference</span></tt> and <tt class="literal"><span class="pre">V</span></tt> is <tt class="literal"><span class="pre">value_type</span></tt>, and where: if
|
||||||
<tt class="literal"><span class="pre">CategoryOrTraversal</span></tt> is <tt class="literal"><span class="pre">use_default</span></tt>, <tt class="literal"><span class="pre">C</span></tt> is
|
<tt class="literal"><span class="pre">CategoryOrTraversal</span></tt> is <tt class="literal"><span class="pre">use_default</span></tt>, <tt class="literal"><span class="pre">C</span></tt> is
|
||||||
<tt class="literal"><span class="pre">iterator_traversal<Iterator>::type</span></tt> and otherwise <tt class="literal"><span class="pre">C</span></tt> is
|
<tt class="literal"><span class="pre">iterator_traversal<Iterator>::type</span></tt> and otherwise <tt class="literal"><span class="pre">C</span></tt> is
|
||||||
<tt class="literal"><span class="pre">CategoryOrTraversal</span></tt>:</p>
|
<tt class="literal"><span class="pre">CategoryOrTraversal</span></tt>.</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<ul>
|
<ul>
|
||||||
<li><p class="first">if <tt class="literal"><span class="pre">C</span></tt> is convertible to <tt class="literal"><span class="pre">std::input_iterator_tag</span></tt> or
|
<li><p class="first">if <tt class="literal"><span class="pre">C</span></tt> is convertible to <tt class="literal"><span class="pre">std::input_iterator_tag</span></tt> or
|
||||||
@ -179,38 +179,42 @@ convertible, and not to any more-derived traversal tag type.</p>
|
|||||||
</div>
|
</div>
|
||||||
<div class="section" id="indirect-iterator-requirements">
|
<div class="section" id="indirect-iterator-requirements">
|
||||||
<h1><a class="toc-backref" href="#id3" name="indirect-iterator-requirements"><tt class="literal"><span class="pre">indirect_iterator</span></tt> requirements</a></h1>
|
<h1><a class="toc-backref" href="#id3" name="indirect-iterator-requirements"><tt class="literal"><span class="pre">indirect_iterator</span></tt> requirements</a></h1>
|
||||||
<p><tt class="literal"><span class="pre">CategoryOrTraversal</span></tt> argument shall be <tt class="literal"><span class="pre">use_default</span></tt> or it
|
<p>The expression <tt class="literal"><span class="pre">*v</span></tt>, where <tt class="literal"><span class="pre">v</span></tt> is an object of
|
||||||
shall be convertible to one of the standard iterator or traversal
|
|
||||||
tags. If <tt class="literal"><span class="pre">CategoryOrTraversal</span></tt> is not <tt class="literal"><span class="pre">use_default</span></tt>, it shall
|
|
||||||
indicate the traversal category modeled by <tt class="literal"><span class="pre">Iterator</span></tt>. If</p>
|
|
||||||
<p>The expression <tt class="literal"><span class="pre">*v</span></tt>, where <tt class="literal"><span class="pre">v</span></tt> is an object of type
|
|
||||||
<tt class="literal"><span class="pre">iterator_traits<Iterator>::value_type</span></tt>, shall be valid
|
<tt class="literal"><span class="pre">iterator_traits<Iterator>::value_type</span></tt>, shall be valid
|
||||||
expression and convertible to <tt class="literal"><span class="pre">reference</span></tt>. Also
|
expression and convertible to <tt class="literal"><span class="pre">reference</span></tt>. <tt class="literal"><span class="pre">Iterator</span></tt> shall
|
||||||
<tt class="literal"><span class="pre">indirect_iterator::reference</span></tt> must be convertible to
|
model the traversal concept indicated by <tt class="literal"><span class="pre">iterator_category</span></tt>.
|
||||||
<tt class="literal"><span class="pre">indirect_iterator::value</span></tt>. There are further requirements on
|
<tt class="literal"><span class="pre">Value</span></tt>, <tt class="literal"><span class="pre">Reference</span></tt>, and <tt class="literal"><span class="pre">Difference</span></tt> shall be chosen so
|
||||||
the <tt class="literal"><span class="pre">iterator_traits<Iterator>::value_type</span></tt> if the <tt class="literal"><span class="pre">Value</span></tt>
|
that <tt class="literal"><span class="pre">value_type</span></tt>, <tt class="literal"><span class="pre">reference</span></tt>, and <tt class="literal"><span class="pre">difference_type</span></tt> meet
|
||||||
|
the requirements indicated by <tt class="literal"><span class="pre">iterator_category</span></tt>.</p>
|
||||||
|
<p>[Note: there are further requirements on the
|
||||||
|
<tt class="literal"><span class="pre">iterator_traits<Iterator>::value_type</span></tt> if the <tt class="literal"><span class="pre">Value</span></tt>
|
||||||
parameter is not <tt class="literal"><span class="pre">use_default</span></tt>, as implied by the algorithm for
|
parameter is not <tt class="literal"><span class="pre">use_default</span></tt>, as implied by the algorithm for
|
||||||
deducing the default for the <tt class="literal"><span class="pre">value_type</span></tt> member.</p>
|
deducing the default for the <tt class="literal"><span class="pre">value_type</span></tt> member.]</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="indirect-iterator-models">
|
<div class="section" id="indirect-iterator-models">
|
||||||
<h1><a class="toc-backref" href="#id4" name="indirect-iterator-models"><tt class="literal"><span class="pre">indirect_iterator</span></tt> models</a></h1>
|
<h1><a class="toc-backref" href="#id4" name="indirect-iterator-models"><tt class="literal"><span class="pre">indirect_iterator</span></tt> models</a></h1>
|
||||||
<p>If <tt class="literal"><span class="pre">CategoryOrTraversal</span></tt> is a standard iterator tag,
|
<p>In addition to the concepts indicated by <tt class="literal"><span class="pre">iterator_category</span></tt>, a
|
||||||
<tt class="literal"><span class="pre">indirect_iterator</span></tt> is a model of the iterator concept corresponding
|
specialization of <tt class="literal"><span class="pre">indirect_iterator</span></tt> models the following
|
||||||
to the tag, otherwise <tt class="literal"><span class="pre">indirect_iterator</span></tt> satisfies the requirements
|
concepts, Where <tt class="literal"><span class="pre">v</span></tt> is an object of
|
||||||
of the most refined standard traversal concept that is satisfied by
|
<tt class="literal"><span class="pre">iterator_traits<Iterator>::value_type</span></tt>:</p>
|
||||||
the <tt class="literal"><span class="pre">Iterator</span></tt> argument.</p>
|
<blockquote>
|
||||||
<p><tt class="literal"><span class="pre">indirect_iterator</span></tt> models Readable Iterator. If
|
<ul class="simple">
|
||||||
<tt class="literal"><span class="pre">indirect_iterator::reference(*v)</span> <span class="pre">=</span> <span class="pre">t</span></tt> is a valid expression (where
|
<li>Readable Iterator if <tt class="literal"><span class="pre">reference(*v)</span></tt> is convertible to
|
||||||
<tt class="literal"><span class="pre">t</span></tt> is an object of type <tt class="literal"><span class="pre">indirect_iterator::value_type</span></tt>) then
|
<tt class="literal"><span class="pre">value_type</span></tt>.</li>
|
||||||
<tt class="literal"><span class="pre">indirect_iterator</span></tt> models Writable Iterator. If
|
<li>Writable Iterator if <tt class="literal"><span class="pre">reference(*v)</span> <span class="pre">=</span> <span class="pre">t</span></tt> is a valid
|
||||||
<tt class="literal"><span class="pre">indirect_iterator::reference</span></tt> is a reference then
|
expression (where <tt class="literal"><span class="pre">t</span></tt> is an object of type
|
||||||
<tt class="literal"><span class="pre">indirect_iterator</span></tt> models Lvalue Iterator.</p>
|
<tt class="literal"><span class="pre">indirect_iterator::value_type</span></tt>)</li>
|
||||||
|
<li>Lvalue Iterator if <tt class="literal"><span class="pre">reference</span></tt> is a reference type.</li>
|
||||||
|
</ul>
|
||||||
|
</blockquote>
|
||||||
|
<p>Two specializations of <tt class="literal"><span class="pre">indirect_iterator</span></tt> are interoperable if
|
||||||
|
their <tt class="literal"><span class="pre">Iterator</span></tt> parameters are interoperable.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" id="indirect-iterator-operations">
|
<div class="section" id="indirect-iterator-operations">
|
||||||
<h1><a class="toc-backref" href="#id5" name="indirect-iterator-operations"><tt class="literal"><span class="pre">indirect_iterator</span></tt> operations</a></h1>
|
<h1><a class="toc-backref" href="#id5" name="indirect-iterator-operations"><tt class="literal"><span class="pre">indirect_iterator</span></tt> operations</a></h1>
|
||||||
<p>In addition to the operations required by the concepts modeled by
|
<p>In addition to the operations required by the concepts described
|
||||||
<tt class="literal"><span class="pre">indirect_iterator</span></tt>, <tt class="literal"><span class="pre">indirect_iterator</span></tt> provides the following
|
above, specializations of <tt class="literal"><span class="pre">indirect_iterator</span></tt> provide the
|
||||||
operations.</p>
|
following operations.</p>
|
||||||
<p><tt class="literal"><span class="pre">indirect_iterator();</span></tt></p>
|
<p><tt class="literal"><span class="pre">indirect_iterator();</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" />
|
||||||
|
@ -70,45 +70,52 @@ following pseudo-code. We use the abbreviation
|
|||||||
``R`` is ``reference`` and ``V`` is ``value_type``, and where: if
|
``R`` is ``reference`` and ``V`` is ``value_type``, and where: if
|
||||||
``CategoryOrTraversal`` is ``use_default``, ``C`` is
|
``CategoryOrTraversal`` is ``use_default``, ``C`` is
|
||||||
``iterator_traversal<Iterator>::type`` and otherwise ``C`` is
|
``iterator_traversal<Iterator>::type`` and otherwise ``C`` is
|
||||||
``CategoryOrTraversal``:
|
``CategoryOrTraversal``.
|
||||||
|
|
||||||
.. include:: facade_iterator_category.rst
|
.. include:: facade_iterator_category.rst
|
||||||
|
|
||||||
``indirect_iterator`` requirements
|
``indirect_iterator`` requirements
|
||||||
..................................
|
..................................
|
||||||
|
|
||||||
The expression ``*v``, where ``v`` is an object of type
|
The expression ``*v``, where ``v`` is an object of
|
||||||
``iterator_traits<Iterator>::value_type``, shall be valid
|
``iterator_traits<Iterator>::value_type``, shall be valid
|
||||||
expression and convertible to ``reference``. [Note: there are
|
expression and convertible to ``reference``. ``Iterator`` shall
|
||||||
further requirements on the
|
model the traversal concept indicated by ``iterator_category``.
|
||||||
|
``Value``, ``Reference``, and ``Difference`` shall be chosen so
|
||||||
|
that ``value_type``, ``reference``, and ``difference_type`` meet
|
||||||
|
the requirements indicated by ``iterator_category``.
|
||||||
|
|
||||||
|
[Note: there are further requirements on the
|
||||||
``iterator_traits<Iterator>::value_type`` if the ``Value``
|
``iterator_traits<Iterator>::value_type`` if the ``Value``
|
||||||
parameter is not ``use_default``, as implied by the algorithm for
|
parameter is not ``use_default``, as implied by the algorithm for
|
||||||
deducing the default for the ``value_type`` member.]
|
deducing the default for the ``value_type`` member.]
|
||||||
|
|
||||||
|
|
||||||
``indirect_iterator`` models
|
``indirect_iterator`` models
|
||||||
............................
|
............................
|
||||||
|
|
||||||
If ``CategoryOrTraversal`` is a standard iterator tag,
|
In addition to the concepts indicated by ``iterator_category``, a
|
||||||
``indirect_iterator`` is a model of the iterator concept
|
specialization of ``indirect_iterator`` models the following
|
||||||
corresponding to the tag. Otherwise, ``indirect_iterator``
|
concepts, Where ``v`` is an object of
|
||||||
satisfies the requirements of the most refined standard traversal
|
``iterator_traits<Iterator>::value_type``:
|
||||||
concept that is satisfied by the ``Iterator`` argument.
|
|
||||||
|
|
||||||
``indirect_iterator`` models Readable Iterator. If
|
* Readable Iterator if ``reference(*v)`` is convertible to
|
||||||
``indirect_iterator::reference(*v) = t`` is a valid expression (where
|
``value_type``.
|
||||||
``t`` is an object of type ``indirect_iterator::value_type``) then
|
|
||||||
``indirect_iterator`` models Writable Iterator. If
|
* Writable Iterator if ``reference(*v) = t`` is a valid
|
||||||
``indirect_iterator::reference`` is a reference then
|
expression (where ``t`` is an object of type
|
||||||
``indirect_iterator`` models Lvalue Iterator.
|
``indirect_iterator::value_type``)
|
||||||
|
|
||||||
|
* Lvalue Iterator if ``reference`` is a reference type.
|
||||||
|
|
||||||
|
Two specializations of ``indirect_iterator`` are interoperable if
|
||||||
|
their ``Iterator`` parameters are interoperable.
|
||||||
|
|
||||||
``indirect_iterator`` operations
|
``indirect_iterator`` operations
|
||||||
................................
|
................................
|
||||||
|
|
||||||
In addition to the operations required by the concepts modeled by
|
In addition to the operations required by the concepts described
|
||||||
``indirect_iterator``, ``indirect_iterator`` provides the following
|
above, specializations of ``indirect_iterator`` provide the
|
||||||
operations.
|
following operations.
|
||||||
|
|
||||||
|
|
||||||
``indirect_iterator();``
|
``indirect_iterator();``
|
||||||
|
@ -1024,7 +1024,6 @@ LocalWords: TraversalTag typename lvalues DWA Hmm JGS mis enum -->
|
|||||||
<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-13.
|
|
||||||
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>
|
||||||
|
@ -288,7 +288,6 @@ Iterate backward with stride 2 : 6 8
|
|||||||
<hr class="footer" />
|
<hr class="footer" />
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<a class="reference" href="permutation_iterator.rst">View document source</a>.
|
<a class="reference" href="permutation_iterator.rst">View document source</a>.
|
||||||
Generated on: 2004-01-13.
|
|
||||||
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>
|
||||||
|
@ -173,7 +173,6 @@ else
|
|||||||
<hr class="footer" />
|
<hr class="footer" />
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<a class="reference" href="pointee.rst">View document source</a>.
|
<a class="reference" href="pointee.rst">View document source</a>.
|
||||||
Generated on: 2004-01-13.
|
|
||||||
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>
|
||||||
|
29
doc/scanrst.py
Normal file
29
doc/scanrst.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Copyright David Abrahams 2004. Use, modification and distribution is
|
||||||
|
# subject to the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
# This script accepts a list of .rst files to be processed and
|
||||||
|
# generates Makefile dependencies for .html and .rst files to stdout.
|
||||||
|
import os,sys
|
||||||
|
import re
|
||||||
|
|
||||||
|
include = re.compile(r' *\.\. +(include|image):: +(.*)', re.MULTILINE)
|
||||||
|
|
||||||
|
def deps(path, found):
|
||||||
|
dir = os.path.split(path)[0]
|
||||||
|
for m in re.findall(include, open(path).read()):
|
||||||
|
|
||||||
|
dependency = os.path.normpath(os.path.join(dir,m[1]))
|
||||||
|
if dependency not in found:
|
||||||
|
found[dependency] = 1
|
||||||
|
|
||||||
|
if m[0] == 'include':
|
||||||
|
deps(dependency, found)
|
||||||
|
|
||||||
|
return found
|
||||||
|
|
||||||
|
for file in sys.argv[1:]:
|
||||||
|
found = deps(file, {})
|
||||||
|
if found:
|
||||||
|
base = os.path.splitext(os.path.basename(file))[0]
|
||||||
|
print '%s.tex %s.html: %s' % (base, base, ' '.join(found.keys()))
|
Loading…
x
Reference in New Issue
Block a user