<metaname="author"content="David Abrahams, Jeremy Siek, Thomas Witt"/>
<metaname="organization"content="Boost Consulting, Indiana University Open Systems Lab, University of Hanover Institute for Transport Railway Operation and Construction"/>
<td><aclass="first reference external"href="http://www.boost-consulting.com">Boost Consulting</a>, Indiana University <aclass="reference external"href="http://www.osl.iu.edu">Open Systems
Lab</a>, University of Hanover <aclass="last reference external"href="http://www.ive.uni-hannover.de">Institute for Transport
<pclass="last"><ttclass="docutils literal"><spanclass="pre">counting_iterator</span></tt> adapts an object by adding an <ttclass="docutils literal"><spanclass="pre">operator*</span></tt> that
<p>If the <ttclass="docutils literal"><spanclass="pre">Difference</span></tt> argument is <ttclass="docutils literal"><spanclass="pre">use_default</span></tt> then
<ttclass="docutils literal"><spanclass="pre">difference_type</span></tt> is an unspecified signed integral
type. Otherwise <ttclass="docutils literal"><spanclass="pre">difference_type</span></tt> is <ttclass="docutils literal"><spanclass="pre">Difference</span></tt>.</p>
<p><ttclass="docutils literal"><spanclass="pre">iterator_category</span></tt> is determined according to the following
<dd><ttclass="docutils literal"><spanclass="pre">operator-</span></tt> and a <ttclass="docutils literal"><spanclass="pre">difference_type</span></tt> that avoids overflows in
the cases where <ttclass="docutils literal"><spanclass="pre">std::numeric_limits<Incrementable>::is_specialized</span></tt>
<p>The <ttclass="docutils literal"><spanclass="pre">Incrementable</span></tt> argument shall be Copy Constructible and Assignable.</p>
<p>If <ttclass="docutils literal"><spanclass="pre">iterator_category</span></tt> is convertible to <ttclass="docutils literal"><spanclass="pre">forward_iterator_tag</span></tt>
or <ttclass="docutils literal"><spanclass="pre">forward_traversal_tag</span></tt>, the following must be well-formed:</p>
<p>If <ttclass="docutils literal"><spanclass="pre">iterator_category</span></tt> is convertible to
<ttclass="docutils literal"><spanclass="pre">bidirectional_iterator_tag</span></tt> or <ttclass="docutils literal"><spanclass="pre">bidirectional_traversal_tag</span></tt>,
<p>If <ttclass="docutils literal"><spanclass="pre">iterator_category</span></tt> is convertible to
<ttclass="docutils literal"><spanclass="pre">random_access_iterator_tag</span></tt> or <ttclass="docutils literal"><spanclass="pre">random_access_traversal_tag</span></tt>,
iterator tags to which their <ttclass="docutils literal"><spanclass="pre">iterator_category</span></tt> is convertible.
Also, if <ttclass="docutils literal"><spanclass="pre">CategoryOrTraversal</span></tt> is not <ttclass="docutils literal"><spanclass="pre">use_default</span></tt> then
<ttclass="docutils literal"><spanclass="pre">counting_iterator</span></tt> models the concept corresponding to the iterator
tag <ttclass="docutils literal"><spanclass="pre">CategoryOrTraversal</span></tt>. Otherwise, if
<ttclass="docutils literal"><spanclass="pre">numeric_limits<Incrementable>::is_specialized</span></tt>, then
<ttclass="docutils literal"><spanclass="pre">counting_iterator</span></tt> models Random Access Traversal Iterator.
Otherwise, <ttclass="docutils literal"><spanclass="pre">counting_iterator</span></tt> models the same iterator traversal
concepts modeled by <ttclass="docutils literal"><spanclass="pre">Incrementable</span></tt>.</p>
<p><ttclass="docutils literal"><spanclass="pre">counting_iterator<X,C1,D1></span></tt> is interoperable with
<ttclass="docutils literal"><spanclass="pre">counting_iterator<Y,C2,D2></span></tt> if and only if <ttclass="docutils literal"><spanclass="pre">X</span></tt> is
interoperable with <ttclass="docutils literal"><spanclass="pre">Y</span></tt>.</p>
<ttclass="docutils literal"><spanclass="pre">counting_iterator</span></tt>, <ttclass="docutils literal"><spanclass="pre">counting_iterator</span></tt> provides the following
<trclass="field"><thclass="field-name">Requires:</th><tdclass="field-body"><ttclass="docutils literal"><spanclass="pre">Incrementable</span></tt> is Default Constructible.</td>
<trclass="field"><thclass="field-name">Effects:</th><tdclass="field-body">Default construct the member <ttclass="docutils literal"><spanclass="pre">m_inc</span></tt>.</td>
<trclass="field"><thclass="field-name">Effects:</th><tdclass="field-body">Construct member <ttclass="docutils literal"><spanclass="pre">m_inc</span></tt> from <ttclass="docutils literal"><spanclass="pre">rhs.m_inc</span></tt>.</td>
<trclass="field"><thclass="field-name">Effects:</th><tdclass="field-body">Construct member <ttclass="docutils literal"><spanclass="pre">m_inc</span></tt> from <ttclass="docutils literal"><spanclass="pre">x</span></tt>.</td>
<trclass="field"><thclass="field-name">Returns:</th><tdclass="field-body">An instance of <ttclass="docutils literal"><spanclass="pre">counting_iterator<Incrementable></span></tt>
with <ttclass="docutils literal"><spanclass="pre">current</span></tt> constructed from <ttclass="docutils literal"><spanclass="pre">x</span></tt>.</td>
Generated by <aclass="reference external"href="http://docutils.sourceforge.net/">Docutils</a> from <aclass="reference external"href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.