[boost][range] - Added documentation for the join() function. This is to resolve Trac ticket 4740.

[SVN r67428]
This commit is contained in:
Neil Groves
2010-12-23 10:56:23 +00:00
parent c66fb8e807
commit 48fc316156
93 changed files with 543 additions and 494 deletions

View File

@ -39,33 +39,76 @@
check if the end of a range has been reached internally during traversal.
</p>
<a name="range.reference.utilities.join.synposis"></a><h5>
<a name="id734807"></a>
<a name="id777098"></a>
<a class="link" href="join.html#range.reference.utilities.join.synposis">Synposis</a>
</h5>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">SinglePassRange1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SinglePassRange2</span><span class="special">&gt;</span>
<span class="identifier">iterator_range</span><span class="special">&lt;</span><span class="identifier">range_detail</span><span class="special">::</span><span class="identifier">join_iterator</span><span class="special">&lt;</span>
<span class="keyword">typename</span> <span class="identifier">range_iterator</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">SinglePassRange1</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span>
<span class="keyword">typename</span> <span class="identifier">range_iterator</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">SinglePassRange2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span>
<span class="keyword">typename</span> <span class="identifier">add_const</span><span class="special">&lt;</span>
<span class="keyword">typename</span> <span class="identifier">range_value</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">SinglePassRange1</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;</span>
<span class="special">&gt;</span>
<span class="identifier">joined_range</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">SinglePassRange1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">SinglePassRange2</span><span class="special">&gt;</span>
<span class="identifier">join</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">SinglePassRange1</span><span class="special">&amp;</span> <span class="identifier">rng1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">SinglePassRange2</span><span class="special">&amp;</span> <span class="identifier">rng2</span><span class="special">)</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">SinglePassRange1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SinglePassRange2</span><span class="special">&gt;</span>
<span class="identifier">iterator_range</span><span class="special">&lt;</span><span class="identifier">range_detail</span><span class="special">::</span><span class="identifier">join_iterator</span><span class="special">&lt;</span>
<span class="keyword">typename</span> <span class="identifier">range_iterator</span><span class="special">&lt;</span><span class="identifier">SinglePassRange1</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span>
<span class="keyword">typename</span> <span class="identifier">range_iterator</span><span class="special">&lt;</span><span class="identifier">SinglePassRange2</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">,</span>
<span class="keyword">typename</span> <span class="identifier">range_value</span><span class="special">&lt;</span><span class="identifier">SinglePassRange1</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;</span>
<span class="special">&gt;</span>
<span class="identifier">joined_range</span><span class="special">&lt;</span><span class="identifier">SinglePassRange1</span><span class="special">,</span> <span class="identifier">SinglePassRange2</span><span class="special">&gt;</span>
<span class="identifier">join</span><span class="special">(</span><span class="identifier">SinglePassRange1</span><span class="special">&amp;</span> <span class="identifier">rng1</span><span class="special">,</span> <span class="identifier">SinglePassRange2</span><span class="special">&amp;</span> <span class="identifier">rng2</span><span class="special">);</span>
</pre>
<p>
</p>
<p>
For the const version:
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<span class="bold"><strong>Precondition:</strong></span> The <code class="computeroutput"><span class="identifier">range_value</span><span class="special">&lt;</span><span class="identifier">SinglePassRange2</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
must be convertible to <code class="computeroutput"><span class="identifier">range_value</span><span class="special">&lt;</span><span class="identifier">SinglePassRange1</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
The <code class="computeroutput"><span class="identifier">range_reference</span><span class="special">&lt;</span><span class="keyword">const</span>
<span class="identifier">SinglePassRange2</span><span class="special">&gt;::</span><span class="identifier">type</span></code> must be convertible to <code class="computeroutput"><span class="identifier">range_reference</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">SinglePassRange1</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
</li>
<li class="listitem">
<span class="bold"><strong>Range Category:</strong></span> Both <code class="computeroutput"><span class="identifier">rng1</span></code> and <code class="computeroutput"><span class="identifier">rng2</span></code>
must be a model of <a class="link" href="../../concepts/single_pass_range.html" title="Single Pass Range">Single
Pass Range</a> or better.
</li>
<li class="listitem">
<span class="bold"><strong>Range Return Type:</strong></span> <code class="computeroutput"><span class="identifier">joined_range</span><span class="special">&lt;</span><span class="keyword">const</span>
<span class="identifier">SinglePassRange1</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">SinglePassRange2</span><span class="special">&gt;</span></code> which is a model of the lesser
of the two range concepts passed.
</li>
<li class="listitem">
<span class="bold"><strong>Returned Range Category:</strong></span> The minimum
of the range category of <code class="computeroutput"><span class="identifier">rng1</span></code>
and <code class="computeroutput"><span class="identifier">rng2</span></code>.
</li>
</ul></div>
<p>
For the mutable version:
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<span class="bold"><strong>Precondition:</strong></span> The <code class="computeroutput"><span class="identifier">range_value</span><span class="special">&lt;</span><span class="identifier">SinglePassRange2</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
must be convertible to <code class="computeroutput"><span class="identifier">range_value</span><span class="special">&lt;</span><span class="identifier">SinglePassRange1</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
The <code class="computeroutput"><span class="identifier">range_reference</span><span class="special">&lt;</span><span class="identifier">SinglePassRange2</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
must be convertible to <code class="computeroutput"><span class="identifier">range_reference</span><span class="special">&lt;</span><span class="identifier">SinglePassRange1</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
</li>
<li class="listitem">
<span class="bold"><strong>Range Category:</strong></span> Both <code class="computeroutput"><span class="identifier">rng1</span></code> and <code class="computeroutput"><span class="identifier">rng2</span></code>
must be a model of <a class="link" href="../../concepts/single_pass_range.html" title="Single Pass Range">Single
Pass Range</a> or better.
</li>
<li class="listitem">
<span class="bold"><strong>Range Return Type:</strong></span> <code class="computeroutput"><span class="identifier">joined_range</span><span class="special">&lt;</span><span class="identifier">SinglePassRange1</span><span class="special">,</span> <span class="identifier">SinglePassRange2</span><span class="special">&gt;</span></code> which is a model of the lesser
of the two range concepts passed.
</li>
<li class="listitem">
<span class="bold"><strong>Returned Range Category:</strong></span> The minimum
of the range category of <code class="computeroutput"><span class="identifier">rng1</span></code>
and <code class="computeroutput"><span class="identifier">rng2</span></code>.
</li>
</ul></div>
<a name="range.reference.utilities.join.example"></a><h5>
<a name="id735350"></a>
<a name="id777934"></a>
<a class="link" href="join.html#range.reference.utilities.join.example">Example</a>
</h5>
<p>