[boost][range] - Improved the implementation of strided range to eliminate requirements for boost::size(rng) to be a valid expression. Each traversal category of strided_iterator is now individually implemented.

[SVN r67461]
This commit is contained in:
Neil Groves
2010-12-26 20:33:33 +00:00
parent fd63de33e9
commit efb7b50a8a
101 changed files with 725 additions and 669 deletions

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.copy_n"></a><a class="link" href="copy_n.html" title="copy_n">copy_n</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.copy_n.prototype"></a><h6>
<a name="id752657"></a>
<a name="id765345"></a>
<a class="link" href="copy_n.html#range.reference.algorithms.new.copy_n.prototype">Prototype</a>
</h6>
<p>
@ -39,7 +39,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.copy_n.description"></a><h6>
<a name="id752815"></a>
<a name="id765504"></a>
<a class="link" href="copy_n.html#range.reference.algorithms.new.copy_n.description">Description</a>
</h6>
<p>
@ -53,14 +53,14 @@
from <code class="computeroutput"><span class="special">[</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">rng</span><span class="special">),</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">rng</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">n</span><span class="special">)</span></code> to the range <code class="computeroutput"><span class="special">[</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">out</span> <span class="special">+</span> <span class="identifier">n</span><span class="special">)</span></code>
</p>
<a name="range.reference.algorithms.new.copy_n.definition"></a><h6>
<a name="id752985"></a>
<a name="id765674"></a>
<a class="link" href="copy_n.html#range.reference.algorithms.new.copy_n.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">copy_n</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.copy_n.requirements"></a><h6>
<a name="id753056"></a>
<a name="id765744"></a>
<a class="link" href="copy_n.html#range.reference.algorithms.new.copy_n.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1">
@ -79,7 +79,7 @@
</li>
</ol></div>
<a name="range.reference.algorithms.new.copy_n.complexity"></a><h6>
<a name="id753164"></a>
<a name="id765852"></a>
<a class="link" href="copy_n.html#range.reference.algorithms.new.copy_n.complexity">Complexity</a>
</h6>
<p>

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.erase"></a><a class="link" href="erase.html" title="erase">erase</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.erase.prototype"></a><h6>
<a name="id753215"></a>
<a name="id765903"></a>
<a class="link" href="erase.html#range.reference.algorithms.new.erase.prototype">Prototype</a>
</h6>
<p>
@ -41,7 +41,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.erase.description"></a><h6>
<a name="id753355"></a>
<a name="id766044"></a>
<a class="link" href="erase.html#range.reference.algorithms.new.erase.description">Description</a>
</h6>
<p>
@ -58,14 +58,14 @@
the frequently used combination equivalent to <code class="computeroutput"><span class="identifier">target</span><span class="special">.</span><span class="identifier">erase</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">remove_if</span><span class="special">(</span><span class="identifier">target</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">target</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">pred</span><span class="special">),</span> <span class="identifier">target</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span></code>
</p>
<a name="range.reference.algorithms.new.erase.definition"></a><h6>
<a name="id753654"></a>
<a name="id766343"></a>
<a class="link" href="erase.html#range.reference.algorithms.new.erase.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">erase</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.erase.requirements"></a><h6>
<a name="id753723"></a>
<a name="id766412"></a>
<a class="link" href="erase.html#range.reference.algorithms.new.erase.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
@ -73,7 +73,7 @@
erase of an iterator range.
</li></ol></div>
<a name="range.reference.algorithms.new.erase.complexity"></a><h6>
<a name="id753767"></a>
<a name="id766457"></a>
<a class="link" href="erase.html#range.reference.algorithms.new.erase.complexity">Complexity</a>
</h6>
<p>

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.for_each"></a><a class="link" href="for_each.html" title="for_each">for_each</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.for_each.prototype"></a><h6>
<a name="id753831"></a>
<a name="id766521"></a>
<a class="link" href="for_each.html#range.reference.algorithms.new.for_each.prototype">Prototype</a>
</h6>
<p>
@ -72,7 +72,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.for_each.description"></a><h6>
<a name="id754406"></a>
<a name="id767096"></a>
<a class="link" href="for_each.html#range.reference.algorithms.new.for_each.description">Description</a>
</h6>
<p>
@ -88,14 +88,14 @@
It is safe to call this function with unequal length ranges.
</p>
<a name="range.reference.algorithms.new.for_each.definition"></a><h6>
<a name="id754561"></a>
<a name="id767250"></a>
<a class="link" href="for_each.html#range.reference.algorithms.new.for_each.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">for_each</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.for_each.requirements"></a><h6>
<a name="id754632"></a>
<a name="id767322"></a>
<a class="link" href="for_each.html#range.reference.algorithms.new.for_each.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1">
@ -125,7 +125,7 @@
</li>
</ol></div>
<a name="range.reference.algorithms.new.for_each.complexity"></a><h6>
<a name="id754793"></a>
<a name="id767482"></a>
<a class="link" href="for_each.html#range.reference.algorithms.new.for_each.complexity">Complexity</a>
</h6>
<p>

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.insert"></a><a class="link" href="insert.html" title="insert">insert</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.insert.prototype"></a><h6>
<a name="id754896"></a>
<a name="id767585"></a>
<a class="link" href="insert.html#range.reference.algorithms.new.insert.prototype">Prototype</a>
</h6>
<p>
@ -44,7 +44,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.insert.description"></a><h6>
<a name="id755066"></a>
<a name="id767755"></a>
<a class="link" href="insert.html#range.reference.algorithms.new.insert.description">Description</a>
</h6>
<p>
@ -54,14 +54,14 @@
<code class="computeroutput"><span class="identifier">target</span></code>.
</p>
<a name="range.reference.algorithms.new.insert.definition"></a><h6>
<a name="id755132"></a>
<a name="id767821"></a>
<a class="link" href="insert.html#range.reference.algorithms.new.insert.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">insert</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.insert.requirements"></a><h6>
<a name="id755202"></a>
<a name="id767891"></a>
<a class="link" href="insert.html#range.reference.algorithms.new.insert.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1">
@ -81,7 +81,7 @@
</li>
</ol></div>
<a name="range.reference.algorithms.new.insert.complexity"></a><h6>
<a name="id755300"></a>
<a name="id767989"></a>
<a class="link" href="insert.html#range.reference.algorithms.new.insert.complexity">Complexity</a>
</h6>
<p>

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.iota"></a><a class="link" href="iota.html" title="iota">iota</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.iota.prototype"></a><h6>
<a name="id755365"></a>
<a name="id768054"></a>
<a class="link" href="iota.html#range.reference.algorithms.new.iota.prototype">Prototype</a>
</h6>
<p>
@ -39,7 +39,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.iota.description"></a><h6>
<a name="id755491"></a>
<a name="id768180"></a>
<a class="link" href="iota.html#range.reference.algorithms.new.iota.description">Description</a>
</h6>
<p>
@ -50,14 +50,14 @@
<span class="special">+</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">rng</span><span class="special">),</span> <span class="identifier">it</span><span class="special">)</span></code>
</p>
<a name="range.reference.algorithms.new.iota.definition"></a><h6>
<a name="id755627"></a>
<a name="id768316"></a>
<a class="link" href="iota.html#range.reference.algorithms.new.iota.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">iota</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.iota.requirements"></a><h6>
<a name="id755697"></a>
<a name="id768386"></a>
<a class="link" href="iota.html#range.reference.algorithms.new.iota.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1">
@ -73,7 +73,7 @@
</li>
</ol></div>
<a name="range.reference.algorithms.new.iota.complexity"></a><h6>
<a name="id755777"></a>
<a name="id768466"></a>
<a class="link" href="iota.html#range.reference.algorithms.new.iota.complexity">Complexity</a>
</h6>
<p>

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.is_sorted"></a><a class="link" href="is_sorted.html" title="is_sorted">is_sorted</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.is_sorted.prototype"></a><h6>
<a name="id755851"></a>
<a name="id768540"></a>
<a class="link" href="is_sorted.html#range.reference.algorithms.new.is_sorted.prototype">Prototype</a>
</h6>
<p>
@ -42,7 +42,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.is_sorted.description"></a><h6>
<a name="id756045"></a>
<a name="id768733"></a>
<a class="link" href="is_sorted.html#range.reference.algorithms.new.is_sorted.description">Description</a>
</h6>
<p>
@ -58,14 +58,14 @@
is <code class="computeroutput"><span class="keyword">true</span></code>.
</p>
<a name="range.reference.algorithms.new.is_sorted.definition"></a><h6>
<a name="id756233"></a>
<a name="id768922"></a>
<a class="link" href="is_sorted.html#range.reference.algorithms.new.is_sorted.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">is_sorted</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.is_sorted.requirements"></a><h6>
<a name="id756303"></a>
<a name="id768992"></a>
<a class="link" href="is_sorted.html#range.reference.algorithms.new.is_sorted.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1">
@ -85,7 +85,7 @@
</li>
</ol></div>
<a name="range.reference.algorithms.new.is_sorted.complexity"></a><h6>
<a name="id756412"></a>
<a name="id769101"></a>
<a class="link" href="is_sorted.html#range.reference.algorithms.new.is_sorted.complexity">Complexity</a>
</h6>
<p>

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.overwrite"></a><a class="link" href="overwrite.html" title="overwrite">overwrite</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.overwrite.prototype"></a><h6>
<a name="id756477"></a>
<a name="id769166"></a>
<a class="link" href="overwrite.html#range.reference.algorithms.new.overwrite.prototype">Prototype</a>
</h6>
<p>
@ -43,7 +43,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.overwrite.description"></a><h6>
<a name="id756611"></a>
<a name="id769300"></a>
<a class="link" href="overwrite.html#range.reference.algorithms.new.overwrite.description">Description</a>
</h6>
<p>
@ -52,14 +52,14 @@
into the range <code class="computeroutput"><span class="identifier">to</span></code>.
</p>
<a name="range.reference.algorithms.new.overwrite.definition"></a><h6>
<a name="id756666"></a>
<a name="id769355"></a>
<a class="link" href="overwrite.html#range.reference.algorithms.new.overwrite.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">overwrite</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.overwrite.requirements"></a><h6>
<a name="id756737"></a>
<a name="id769426"></a>
<a class="link" href="overwrite.html#range.reference.algorithms.new.overwrite.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1">
@ -88,7 +88,7 @@
</li>
</ol></div>
<a name="range.reference.algorithms.new.overwrite.complexity"></a><h6>
<a name="id756914"></a>
<a name="id769603"></a>
<a class="link" href="overwrite.html#range.reference.algorithms.new.overwrite.complexity">Complexity</a>
</h6>
<p>

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.push_back"></a><a class="link" href="push_back.html" title="push_back">push_back</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.push_back.prototype"></a><h6>
<a name="id756978"></a>
<a name="id769668"></a>
<a class="link" href="push_back.html#range.reference.algorithms.new.push_back.prototype">Prototype</a>
</h6>
<p>
@ -43,7 +43,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.push_back.description"></a><h6>
<a name="id757117"></a>
<a name="id769807"></a>
<a class="link" href="push_back.html#range.reference.algorithms.new.push_back.description">Description</a>
</h6>
<p>
@ -52,14 +52,14 @@
to the back of the container <code class="computeroutput"><span class="identifier">target</span></code>.
</p>
<a name="range.reference.algorithms.new.push_back.definition"></a><h6>
<a name="id757173"></a>
<a name="id769862"></a>
<a class="link" href="push_back.html#range.reference.algorithms.new.push_back.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">push_back</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.push_back.requirements"></a><h6>
<a name="id757243"></a>
<a name="id769932"></a>
<a class="link" href="push_back.html#range.reference.algorithms.new.push_back.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1">
@ -79,7 +79,7 @@
</li>
</ol></div>
<a name="range.reference.algorithms.new.push_back.complexity"></a><h6>
<a name="id757354"></a>
<a name="id770044"></a>
<a class="link" href="push_back.html#range.reference.algorithms.new.push_back.complexity">Complexity</a>
</h6>
<p>

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.push_front"></a><a class="link" href="push_front.html" title="push_front">push_front</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.push_front.prototype"></a><h6>
<a name="id757420"></a>
<a name="id770109"></a>
<a class="link" href="push_front.html#range.reference.algorithms.new.push_front.prototype">Prototype</a>
</h6>
<p>
@ -43,7 +43,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.push_front.description"></a><h6>
<a name="id757558"></a>
<a name="id770247"></a>
<a class="link" href="push_front.html#range.reference.algorithms.new.push_front.description">Description</a>
</h6>
<p>
@ -52,14 +52,14 @@
to the front of the container <code class="computeroutput"><span class="identifier">target</span></code>.
</p>
<a name="range.reference.algorithms.new.push_front.definition"></a><h6>
<a name="id757613"></a>
<a name="id770302"></a>
<a class="link" href="push_front.html#range.reference.algorithms.new.push_front.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">push_front</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.push_front.requirements"></a><h6>
<a name="id757682"></a>
<a name="id770372"></a>
<a class="link" href="push_front.html#range.reference.algorithms.new.push_front.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1">
@ -79,7 +79,7 @@
</li>
</ol></div>
<a name="range.reference.algorithms.new.push_front.complexity"></a><h6>
<a name="id757794"></a>
<a name="id770484"></a>
<a class="link" href="push_front.html#range.reference.algorithms.new.push_front.complexity">Complexity</a>
</h6>
<p>

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.remove_erase"></a><a class="link" href="remove_erase.html" title="remove_erase">remove_erase</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.remove_erase.prototype"></a><h6>
<a name="id757860"></a>
<a name="id770549"></a>
<a class="link" href="remove_erase.html#range.reference.algorithms.new.remove_erase.prototype">Prototype</a>
</h6>
<p>
@ -40,7 +40,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.remove_erase.description"></a><h6>
<a name="id757996"></a>
<a name="id770686"></a>
<a class="link" href="remove_erase.html#range.reference.algorithms.new.remove_erase.description">Description</a>
</h6>
<p>
@ -50,14 +50,14 @@
algorithm which merely rearranges elements.
</p>
<a name="range.reference.algorithms.new.remove_erase.definition"></a><h6>
<a name="id758053"></a>
<a name="id770742"></a>
<a class="link" href="remove_erase.html#range.reference.algorithms.new.remove_erase.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">erase</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.remove_erase.requirements"></a><h6>
<a name="id758124"></a>
<a name="id770813"></a>
<a class="link" href="remove_erase.html#range.reference.algorithms.new.remove_erase.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
@ -65,7 +65,7 @@
erase of an iterator range.
</li></ol></div>
<a name="range.reference.algorithms.new.remove_erase.complexity"></a><h6>
<a name="id758169"></a>
<a name="id770858"></a>
<a class="link" href="remove_erase.html#range.reference.algorithms.new.remove_erase.complexity">Complexity</a>
</h6>
<p>

View File

@ -27,7 +27,7 @@
<a name="range.reference.algorithms.new.remove_erase_if"></a><a class="link" href="remove_erase_if.html" title="remove_erase_if">remove_erase_if</a>
</h5></div></div></div>
<a name="range.reference.algorithms.new.remove_erase_if.prototype"></a><h6>
<a name="id758234"></a>
<a name="id770923"></a>
<a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.prototype">Prototype</a>
</h6>
<p>
@ -40,7 +40,7 @@
<p>
</p>
<a name="range.reference.algorithms.new.remove_erase_if.description"></a><h6>
<a name="id758361"></a>
<a name="id771050"></a>
<a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.description">Description</a>
</h6>
<p>
@ -51,14 +51,14 @@
algorithm which merely rearranges elements.
</p>
<a name="range.reference.algorithms.new.remove_erase_if.definition"></a><h6>
<a name="id758441"></a>
<a name="id771131"></a>
<a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.definition">Definition</a>
</h6>
<p>
Defined in the header file <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">range</span><span class="special">/</span><span class="identifier">algorithm_ext</span><span class="special">/</span><span class="identifier">erase</span><span class="special">.</span><span class="identifier">hpp</span></code>
</p>
<a name="range.reference.algorithms.new.remove_erase_if.requirements"></a><h6>
<a name="id758512"></a>
<a name="id771201"></a>
<a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.requirements">Requirements</a>
</h6>
<div class="orderedlist"><ol class="orderedlist" type="1">
@ -72,7 +72,7 @@
</li>
</ol></div>
<a name="range.reference.algorithms.new.remove_erase_if.complexity"></a><h6>
<a name="id758586"></a>
<a name="id771275"></a>
<a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.complexity">Complexity</a>
</h6>
<p>