[boost][range] - Updated begin/end to be protected against accidental ADL to improve compatibility with C++0x. Added any_range which adds type erasure support. Added a type_erased adaptor to utilise the any_range. Implemented the any_iterator using a small buffer optimization to avoid heap usage.

[SVN r67541]
This commit is contained in:
Neil Groves
2011-01-01 16:46:32 +00:00
parent c506d2537f
commit 55fd3ca5b2
122 changed files with 4087 additions and 594 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="id765345"></a>
<a name="id744730"></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="id765504"></a>
<a name="id744888"></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="id765674"></a>
<a name="id745058"></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="id765744"></a>
<a name="id745129"></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="id765852"></a>
<a name="id745236"></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="id765903"></a>
<a name="id745287"></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="id766044"></a>
<a name="id745427"></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="id766343"></a>
<a name="id745727"></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="id766412"></a>
<a name="id745796"></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="id766457"></a>
<a name="id745840"></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="id766521"></a>
<a name="id745904"></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="id767096"></a>
<a name="id746478"></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="id767250"></a>
<a name="id746634"></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="id767322"></a>
<a name="id746705"></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="id767482"></a>
<a name="id746866"></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="id767585"></a>
<a name="id746969"></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="id767755"></a>
<a name="id747139"></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="id767821"></a>
<a name="id747205"></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="id767891"></a>
<a name="id747275"></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="id767989"></a>
<a name="id747373"></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="id768054"></a>
<a name="id747438"></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="id768180"></a>
<a name="id747564"></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="id768316"></a>
<a name="id747700"></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="id768386"></a>
<a name="id747770"></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="id768466"></a>
<a name="id747850"></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="id768540"></a>
<a name="id747924"></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="id768733"></a>
<a name="id748118"></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="id768922"></a>
<a name="id748306"></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="id768992"></a>
<a name="id748376"></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="id769101"></a>
<a name="id748485"></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="id769166"></a>
<a name="id748550"></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="id769300"></a>
<a name="id748683"></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="id769355"></a>
<a name="id748739"></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="id769426"></a>
<a name="id748810"></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="id769603"></a>
<a name="id748987"></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="id769668"></a>
<a name="id749051"></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="id769807"></a>
<a name="id749190"></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="id769862"></a>
<a name="id749246"></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="id769932"></a>
<a name="id749316"></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="id770044"></a>
<a name="id749427"></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="id770109"></a>
<a name="id749493"></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="id770247"></a>
<a name="id749631"></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="id770302"></a>
<a name="id749686"></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="id770372"></a>
<a name="id749755"></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="id770484"></a>
<a name="id749868"></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="id770549"></a>
<a name="id749933"></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="id770686"></a>
<a name="id750070"></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="id770742"></a>
<a name="id750126"></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="id770813"></a>
<a name="id750197"></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="id770858"></a>
<a name="id750242"></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="id770923"></a>
<a name="id750307"></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="id771050"></a>
<a name="id750434"></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="id771131"></a>
<a name="id750514"></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="id771201"></a>
<a name="id750585"></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="id771275"></a>
<a name="id750659"></a>
<a class="link" href="remove_erase_if.html#range.reference.algorithms.new.remove_erase_if.complexity">Complexity</a>
</h6>
<p>