Boost logo

Boost-Commit :

From: nesotto_at_[hidden]
Date: 2007-10-27 11:58:22


Author: nesotto
Date: 2007-10-27 11:58:22 EDT (Sat, 27 Oct 2007)
New Revision: 40508
URL: http://svn.boost.org/trac/boost/changeset/40508

Log:
first update ... more to come
Binary files modified:
   trunk/libs/range/doc/Jamfile.v2
Text files modified:
   trunk/libs/range/doc/boost_range.html | 1226 +++++++++++++++++++--------------------
   trunk/libs/range/doc/headers.html | 54 +
   trunk/libs/range/doc/intro.html | 20
   trunk/libs/range/doc/utility_class.html | 6
   4 files changed, 657 insertions(+), 649 deletions(-)

Modified: trunk/libs/range/doc/Jamfile.v2
==============================================================================
Binary files. No diff available.

Modified: trunk/libs/range/doc/boost_range.html
==============================================================================
--- trunk/libs/range/doc/boost_range.html (original)
+++ trunk/libs/range/doc/boost_range.html 2007-10-27 11:58:22 EDT (Sat, 27 Oct 2007)
@@ -1,86 +1,83 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
- <head>
- <title>Boost.Range Reference </title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <link rel="stylesheet" href="style.css" type="text/css">
- </head>
- <body>
- <table>
- <tr>
- <td><img src="../../../boost.png" width="100%" border="0"></td>
- <td><h1><br>
- Boost.Range
- </h1>
- </td>
- </tr>
- </table>
- <h2>Synopsis and Reference
- </h2>
- <ul>
- <li>
- Overview
- <li>
- Synopsis
- <li>
- Semantics
- <li>
- Extending the library</li>
- </ul>
- <hr size="1">
- <a name="overview"></a>
- <h3>Overview</h3>
- <p>
- Four types of objects are currently supported by the library:
- <ul>
- <li>
- standard-like containers
- <li>
- <code>std::pair&lt;iterator,iterator&gt;</code>
- <li>
- null terminated strings (this includes <code>char[]</code>,<code>wchar_t[]</code>,
- <code>char*</code>, and <code>wchar_t*</code>)
- <p>
- <b>Warning:</b><i> support for null-terminated strings is deprecated and will
- disappear in the next Boost release (1.34). </i>
- </p>
- <li>
- built-in arrays
- </li>
- </ul>
- Even though the behavior of the primary templates are exactly such that
- standard containers will be supported by default, the requirements are much
- lower than the standard container requirements. For example, the utility class <a href="utility_class.html#iter_range">
- <code>iterator_range</code></a> implements the <a href="#minimal_interface">minimal
- interface</a> required to make the class a <a href="range.html#forward_range">Forward
- Range</a>
- .
- <P></P>
- <p>
- Please also see Range concepts for more details.
- </p>
- <a name="Synopsis"></a>
- <h3>Synopsis</h3>
- <p>
- <pre>
+ <head>
+ <title>Boost.Range Reference </title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <link rel="stylesheet" href="style.css" type="text/css">
+ </head>
+ <body>
+ <table>
+ <tr>
+ <td><img src="../../../boost.png" width="100%" border="0"></td>
+ <td><h1><br>
+ Boost.Range
+ </h1>
+ </td>
+ </tr>
+ </table>
+ <h2>Synopsis and Reference
+ </h2>
+ <ul>
+ <li>
+ Overview
+ <li>
+ Synopsis
+ <li>
+ Semantics
+ <li>
+ Extending the library</li>
+ </ul>
+ <hr size="1">
+ <a name="overview"></a>
+ <h3>Overview</h3>
+ <p>
+ Three types of objects are currently supported by the library:
+ <ul>
+ <li>
+ standard-like containers
+ <li>
+ <code>std::pair&lt;iterator,iterator&gt;</code>
+ <li>
+ built-in arrays
+ </li>
+ </ul>
+ Even though the behavior of the primary templates are exactly such that
+ standard containers will be supported by default, the requirements are much
+ lower than the standard container requirements. For example, the utility class <a href="utility_class.html#iter_range">
+ <code>iterator_range</code></a> implements the <a href="#minimal_interface">minimal
+ interface</a> required to make the class a <a href="range.html#forward_range">Forward
+ Range</a>
+ .
+ <P></P>
+ <p>
+ Please also see Range concepts for more details.
+ </p>
+ <a name="Synopsis"></a>
+ <h3>Synopsis</h3>
+ <p>
+ <pre>
 <span class=keyword>namespace </span><span class=identifier>boost</span>
 <span class=special>{
     </span><span class=comment>//
     // Single Pass Range metafunctions
     //
+
+ </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
+ </span><span class=keyword>struct </span><a href="#range_iterator"><span
+class=identifier>range_iterator</span></a><span class=special>;
     
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
     </span><span class=keyword>struct </span><a href="#range_value"><span
 class=identifier>range_value</span></a><span class=special>;
-
+
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword>struct </span><a href="#range_iterator"><span
-class=identifier>range_iterator</span></a><span class=special>;
+ </span><span class=keyword>struct </span><a href="#range_pointer"><span
+class=identifier>range_pointer</span></a><span class=special>;
     
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword>struct </span><a href="#range_const_iterator"><span
-class=identifier>range_const_iterator</span></a><span class=special>;
-
+ </span><span class=keyword>struct </span><a href="#range_category"><span
+class=identifier>range_category</span></a><span class=special>;
+
     </span><span class=comment>//
     // Forward Range metafunctions
     //
@@ -89,10 +86,6 @@
     </span><span class=keyword>struct </span><a href="#range_difference"><span
 class=identifier>range_difference</span></a><span class=special>;
     
- </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword>struct </span><a href="#range_size"><span
-class=identifier>range_size</span></a><span class=special>;
-
     </span><span class=comment>//
     // Bidirectional Range metafunctions
     //
@@ -102,24 +95,14 @@
 href="#range_reverse_iterator"><span
 class=identifier>range_reverse_iterator</span></a><span class=special>;
 
- </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword>struct </span><a
-href="#range_const_reverse_iterator"><span
-class=identifier>range_const_reverse_iterator</span></a><span class=special>;
-
     </span><span class=comment>//
- // Special metafunctions
+ // Random Access Range metafunctions
     //
     
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword>struct </span><a href="#range_result_iterator"><span
-class=identifier>range_result_iterator</span></a><span class=special>;
-
- </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword>struct </span><a
-href="#range_reverse_result_iterator"><span
-class=identifier>range_reverse_result_iterator</span></a><span class=special>;
-
+ </span><span class=keyword>struct </span><a href="#range_size"><span
+class=identifier>range_size</span></a><span class=special>;
+
     </span><span class=comment>//
     // Single Pass Range functions
     //
@@ -129,7 +112,7 @@
     </span>begin<span class=special>( </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
     
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_const_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
+ </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
     </span>begin<span class=special>( </span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
         
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
@@ -137,7 +120,7 @@
     </span>end<span class=special>( </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
                       
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_const_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
+ </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
     </span>end<span class=special>( </span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
     
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
@@ -149,8 +132,8 @@
     //
     
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_size</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
- </span>size<span class=special>( </span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
+ </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_difference</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
+ </span>distance<span class=special>( </span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
                             
     </span><span class=comment>//
     // Bidirectional Range functions
@@ -161,7 +144,7 @@
     </span>rbegin<span class=special>( </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
     
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_const_reverse_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
+ </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_reverse_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
     </span>rbegin<span class=special>( </span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
         
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
@@ -169,535 +152,544 @@
     </span>rend<span class=special>( </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
                       
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_const_reverse_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
+ </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_reverse_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
     </span>rend<span class=special>( </span><span class=keyword>const </span><span
 class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
     </span>
+
+ </span><span class=comment>//
+ // Random Access Range functions
+ //
+
+ </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
+ </span><span class=keyword></span><span class=keyword>typename </span><span class=identifier>range_size</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type
+ </span>size<span class=special>( </span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>c </span><span class=special>);
+
     <span class=comment>//
     // Special const Range functions
     //
     </span>
     <span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;</span>
- <span class=keyword>typename </span><span class=identifier>range_const_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type </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>T</span><span class=special>&gt;::</span><span class=identifier>type </span>
     <a href="#const_begin"><span class=identifier>const_begin</span></a><span class=special>(</span><span class=keyword> const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);
     </span>
     <span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;</span>
- <span class=keyword>typename </span><span class=identifier>range_const_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type </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>T</span><span class=special>&gt;::</span><span class=identifier>type </span>
     <a href="#const_end"><span class=identifier>const_end</span></a><span class=special>(</span><span class=keyword> const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);
     </span>
     <span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;</span>
- <span class=keyword>typename </span><span class=identifier>range_const_reverse_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type </span>
+ <span class=keyword>typename </span><span class=identifier>range_reverse_iterator</span><span class=special>&lt;</span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type </span>
     <a href="#const_rbegin"><span class=identifier>const_rbegin</span></a><span class=special>(</span><span class=keyword> const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);
     </span>
     <span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;</span>
- <span class=keyword>typename </span><span class=identifier>range_const_reverse_iterator</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type </span>
+ <span class=keyword>typename </span><span class=identifier>range_reverse_iterator</span><span class=special>&lt;</span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&gt;::</span><span class=identifier>type </span>
     <a href="#const_rend"><span class=identifier>const_rend</span></a><span class=special>( </span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);</span>
 
 <span class=special>} </span><span class=comment>// namespace 'boost'
 </span>
 </pre>
- <P></P>
- <a name="Semantics"></a>
- <h3>Semantics</h3>
- <h4>notation</h4>
- <p>
- <table cellpadding="5" border="1">
- <tr>
- <th>
- Type
- <th>
- Object
- <th>
- Describes
- </tr>
- <tr>
- <td><code>X</code>
- <td><code>x</code>
- <td>any type</td>
- <tr>
- <td><code>T</code>
- </td>
- <td><code>t</code>
- <td>denotes behavior of the primary templates</td>
- </tr>
- <tr>
- <td><code>P</code>
- <td><code>p</code>
- <td>denotes <code>std::pair&lt;iterator,iterator&gt;</code></td>
- <tr>
- <td><code>A[sz]</code>
- <td><code>a</code>
- <td>denotes an array of type <code>A</code> of size <code>sz</code>
- <tr>
- <tr>
- <td><code>Char*</code>
- <td><code>s</code>
- <td>denotes either <code>char*</code> or <code>wchar_t*</code></td>
- </tr>
- </table>
- </p>
- <p>
- Please notice in tables below that when four lines appear in a cell, the first
- line will describe the primary template, the second line pairs of iterators,
- the third line arrays and the last line null-terminated strings.
- </p>
- <h4>Metafunctions</h4>
- <p>
- <table border="1" cellpadding="5">
- <tr>
- <th>
- Expression</th>
- <th>
- Return type</th>
- <th>
- Complexity</th>
- </tr>
- <tr>
- <a name="range_value"></a>
- <td><code>range_value&lt;X&gt;::type</code></td>
- <td><code>T::value_type</code><br>
- <code>boost::iterator_value&lt;P::first_type&gt;::type</code> <!--if <code>P</code> is an instantiation of <code>std::pair</code>--><br>
- <code>A</code><br>
- <code>Char</code>
- <td>compile time</td>
- </tr>
- <tr>
- <a name="range_iterator"></a>
- <td><code>range_iterator&lt;X&gt;::type</code></td>
- <td><code>T::iterator</code><br>
- <code>P::first_type</code><br>
- <code>A*</code><br>
- <code>Char*</code>
- <td>compile time</td>
- </tr>
- <tr>
- <a name="range_const_iterator"></a>
- <td><code>range_const_iterator&lt;X&gt;::type</code></td>
- <td><code>T::const_iterator</code><br>
- <code>P::first_type</code><br>
- <code>const A*</code><br>
- <code>const Char*</code>
- <td>compile time</td>
- </tr>
- <tr>
- <a name="range_difference"></a>
- <td><code>range_difference&lt;X&gt;::type</code></td>
- <td><code>T::difference_type</code><br>
- <code>boost::iterator_difference&lt;P::first_type&gt;::type</code><br>
- <code>std::ptrdiff_t</code><br>
- <code>std::ptrdiff_t</code><br>
- <td>compile time</td>
- </tr>
- <tr>
- <a name="range_size"></a>
- <td><code>range_size&lt;X&gt;::type</code></td>
- <td><code>T::size_type</code><br>
- <code>std::size_t</code><br>
- <code>std::size_t</code><br>
- <code>std::size_t</code><br>
- <td>compile time</td>
- </tr>
- <tr>
- <a name="range_result_iterator"></a>
- <td><code>range_result_iterator&lt;X&gt;::type</code></td>
- <td><code>range_const_iterator&lt;X&gt;::type</code> if <code>X</code> is <code>const</code>
- <br>
- <code>range_iterator&lt;X&gt;::type</code> otherwise
- </td>
- <td>compile time</td>
- </tr>
- <tr>
- <a name="range_reverse_iterator"></a>
- <td><code>range_reverse_iterator&lt;X&gt;::type</code></td>
- <td><code>boost::reverse_iterator&lt; typename range_iterator&lt;T&gt;::type &gt;</code><br>
- <td>compile time</td>
- </tr>
- <tr>
- <a name="range_const_reverse_iterator"></a>
- <td><code>range_const_reverse_iterator&lt;X&gt;::type</code></td>
- <td><code>boost::reverse_iterator&lt; typename range_const_iterator&lt;T&gt;::type &gt;</code>
- <br>
- <td>compile time</td>
- </tr>
- <tr>
- <a name="range_reverse_result_iterator"></a>
- <td><code>range_reverse_result_iterator&lt;X&gt;::type</code></td>
- <td><code>boost::reverse_iterator&lt; typename range_result_iterator&lt;T&gt;::type
- &gt;</code>
- <td>compile time</td>
- </tr>
- </table>
- </p>
- <p>
- The special metafunctions <code>range_result_iterator</code> and <code>range_reverse_result_iterator</code>
- are not part of any Range concept, but they are very useful when implementing
- certain Range classes like sub_range
- because of their ability to select iterators based on constness.
- </p>
- <h4>Functions</h4>
- <p>
- <table border="1" cellpadding="5">
- <tr>
- <th>
- Expression</th>
- <th>
- Return type</th>
- <th>
- Returns</th>
- <th>
- Complexity</th>
- </tr>
- <tr>
- <a name="begin"></a>
- <td><code>begin(x)</code></td>
- <td><code>range_result_iterator&lt;X&gt;::type</code></td>
- <td>
- <code>p.first</code> if <code>p</code> is of type <code>std::pair&ltT&gt;<code><br>
- <code>a</code> if <code>a</code> is an array <br>
- <code>s</code> if <code>s</code> is a string literal<br>
- <code>boost_range_begin(x)</code> if that expression would invoke a function found by ADL <br>
- <code>t.begin()</code> otherwise
+ <P></P>
+ <a name="Semantics"></a>
+ <h3>Semantics</h3>
+ <h4>notation</h4>
+ <p>
+ <table cellpadding="5" border="1">
+ <tr>
+ <th>
+ Type
+ <th>
+ Object
+ <th>
+ Describes
+ </tr>
+ <tr>
+ <td><code>X</code>
+ <td><code>x</code>
+ <td>any type</td>
+ <tr>
+ <td><code>T</code>
+ </td>
+ <td><code>t</code>
+ <td>denotes behavior of the primary templates</td>
+ </tr>
+ <tr>
+ <td><code>P</code>
+ <td><code>p</code>
+ <td>denotes <code>std::pair&lt;iterator,iterator&gt;</code></td>
+ <tr>
+ <td><code>A[sz]</code>
+ <td><code>a</code>
+ <td>denotes an array of type <code>A</code> of size <code>sz</code>
+ <tr>
+ <tr>
+ <td><code>Char*</code>
+ <td><code>s</code>
+ <td>denotes either <code>char*</code> or <code>wchar_t*</code></td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ Please notice in tables below that when four lines appear in a cell, the first
+ line will describe the primary template, the second line pairs of iterators,
+ the third line arrays and the last line null-terminated strings.
+ </p>
+ <h4>Metafunctions</h4>
+ <p>
+ <table border="1" cellpadding="5">
+ <tr>
+ <th>
+ Expression</th>
+ <th>
+ Return type</th>
+ <th>
+ Complexity</th>
+ </tr>
+ <tr>
+ <a name="range_value"></a>
+ <td><code>range_value&lt;X&gt;::type</code></td>
+ <td><code>T::value_type</code><br>
+ <code>boost::iterator_value&lt;P::first_type&gt;::type</code> <!--if <code>P</code> is an instantiation of <code>std::pair</code>--><br>
+ <code>A</code><br>
+ <code>Char</code>
+ <td>compile time</td>
+ </tr>
+ <tr>
+ <a name="range_iterator"></a>
+ <td><code>range_iterator&lt;X&gt;::type</code></td>
+ <td><code>T::iterator</code><br>
+ <code>P::first_type</code><br>
+ <code>A*</code><br>
+ <code>Char*</code>
+ <td>compile time</td>
+ </tr>
+ <tr>
+ <a name="range_const_iterator"></a>
+ <td><code>range_const_iterator&lt;X&gt;::type</code></td>
+ <td><code>T::const_iterator</code><br>
+ <code>P::first_type</code><br>
+ <code>const A*</code><br>
+ <code>const Char*</code>
+ <td>compile time</td>
+ </tr>
+ <tr>
+ <a name="range_difference"></a>
+ <td><code>range_difference&lt;X&gt;::type</code></td>
+ <td><code>T::difference_type</code><br>
+ <code>boost::iterator_difference&lt;P::first_type&gt;::type</code><br>
+ <code>std::ptrdiff_t</code><br>
+ <code>std::ptrdiff_t</code><br>
+ <td>compile time</td>
+ </tr>
+ <tr>
+ <a name="range_size"></a>
+ <td><code>range_size&lt;X&gt;::type</code></td>
+ <td><code>T::size_type</code><br>
+ <code>std::size_t</code><br>
+ <code>std::size_t</code><br>
+ <code>std::size_t</code><br>
+ <td>compile time</td>
+ </tr>
+ <tr>
+ <a name="range_result_iterator"></a>
+ <td><code>range_result_iterator&lt;X&gt;::type</code></td>
+ <td><code>range_const_iterator&lt;X&gt;::type</code> if <code>X</code> is <code>const</code>
+ <br>
+ <code>range_iterator&lt;X&gt;::type</code> otherwise
+ </td>
+ <td>compile time</td>
+ </tr>
+ <tr>
+ <a name="range_reverse_iterator"></a>
+ <td><code>range_reverse_iterator&lt;X&gt;::type</code></td>
+ <td><code>boost::reverse_iterator&lt; typename range_iterator&lt;T&gt;::type &gt;</code><br>
+ <td>compile time</td>
+ </tr>
+ <tr>
+ <a name="range_const_reverse_iterator"></a>
+ <td><code>range_const_reverse_iterator&lt;X&gt;::type</code></td>
+ <td><code>boost::reverse_iterator&lt; typename range_const_iterator&lt;T&gt;::type &gt;</code>
+ <br>
+ <td>compile time</td>
+ </tr>
+ <tr>
+ <a name="range_reverse_result_iterator"></a>
+ <td><code>range_reverse_result_iterator&lt;X&gt;::type</code></td>
+ <td><code>boost::reverse_iterator&lt; typename range_result_iterator&lt;T&gt;::type
+ &gt;</code>
+ <td>compile time</td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ The special metafunctions <code>range_result_iterator</code> and <code>range_reverse_result_iterator</code>
+ are not part of any Range concept, but they are very useful when implementing
+ certain Range classes like sub_range
+ because of their ability to select iterators based on constness.
+ </p>
+ <h4>Functions</h4>
+ <p>
+ <table border="1" cellpadding="5">
+ <tr>
+ <th>
+ Expression</th>
+ <th>
+ Return type</th>
+ <th>
+ Returns</th>
+ <th>
+ Complexity</th>
+ </tr>
+ <tr>
+ <a name="begin"></a>
+ <td><code>begin(x)</code></td>
+ <td><code>range_result_iterator&lt;X&gt;::type</code></td>
+ <td>
+ <code>p.first</code> if <code>p</code> is of type <code>std::pair&ltT&gt;<code><br>
+ <code>a</code> if <code>a</code> is an array <br>
+ <code>s</code> if <code>s</code> is a string literal<br>
+ <code>boost_range_begin(x)</code> if that expression would invoke a function found by ADL <br>
+ <code>t.begin()</code> otherwise
    
- <td>constant time</td>
- </tr>
- <tr>
- <a name="end"></a>
- <td><code>end(x)</code></td>
- <td><code>range_result_iterator&lt;X&gt;::type</code></td>
- <td>
- <code>p.second</code> if <code>p</code> is of type <code>std::pair&ltT&gt;<code><br>
- <code>a + sz</code> if <code>a</code> is an array of size <code>sz</code><br>
- <code>s + std::char_traits&lt;X&gt;::length( s )</code> if <code>s</code> is a <code>Char*</code>
- <br>
- <code>s + sz - 1</code> if <code>s</code> is a string literal of size <code>sz</code>
- <br>
- <code>boost_range_end(x)</code> if that expression would invoke a function found by ADL <br>
- <code>t.end()</code> otherwise
-
- <td>linear if <code>X</code> is <code>Char*</code>
- <br>
- constant time otherwise</td>
- </tr>
- <tr>
- <a name="empty"></a>
- <td><code>empty(x)</code></td>
- <td><code>bool</code></td>
- <td><code>begin(x) == end( x )</code><br>
- <td>linear if <code>X</code> is <code>Char*</code>
- <br>
- constant time otherwise<br>
- </td>
- </tr>
- <tr>
- <a name="size"></a>
- <td><code>size(x)</code></td>
- <td><code>range_size&lt;X&gt;::type</code></td>
- <td>
- <code>std::distance(p.first,p.second)</code> if <code>p</code> is of type <code>std::pair&ltT&gt;<code><br>
- <code>sz</code> if <code>a</code> is an array of size <code>sz</code><br>
- <code>end(s) - s</code> if <code>s</code> is a string literal or a <code>Char*</code><br>
- <code>boost_range_size(x)</code> if that expression would invoke a function found by ADL <br>
- <code>t.size()</code> otherwise
- <td>linear if <code>X</code> is <code>Char*</code>
- <br>
- or if <code>std::distance()</code> is linear
- <br>
- constant time otherwise</td>
- </tr>
- <tr>
- <a name="rbegin"></a>
- <td><code>rbegin(x)</code></td>
- <td><code>range_reverse_result_iterator&lt;X&gt;::type</code></td>
- <td><code>range_reverse_result_iterator&lt;X&gt;::type( end(x) )</code>
- <br>
- <td>same as <code>end(x)</code>
- </td>
- </tr>
- <tr>
- <a name="rend"></a>
- <td><code>rend(x)</code></td>
- <td><code>range_reverse_result_iterator&lt;X&gt;::type</code></td>
- <td><code>range_reverse_result_iterator&lt;X&gt;::type( begin(x) )</code>
- <td>same as <code>begin(x)</code></td>
- </tr>
- <tr>
- <a name="const_begin"></a>
- <td><code>const_begin(x)</code></td>
- <td><code>range_const_iterator&lt;X&gt;::type</code></td>
- <td><code>range_const_iterator&lt;X&gt;::type( begin(x) )</code>
- <br>
- <td>same as <code>begin(x)</code>
- </td>
- </tr>
- <tr>
- <a name="const_end"></a>
- <td><code>const_end(x)</code></td>
- <td><code>range_const_iterator&lt;X&gt;::type</code></td>
- <td><code>range_const_iterator&lt;X&gt;::type( end(x) )</code>
- <td>same as <code>end(x)</code></td>
- </tr>
- <tr>
- <a name="const_rbegin"></a>
- <td><code>const_rbegin(x)</code></td>
- <td><code>range_const_reverse_iterator&lt;X&gt;::type</code></td>
- <td><code>range_const_reverse_iterator&lt;X&gt;::type( rbegin(x) )</code>
- <br>
- <td>same as <code>rbegin(x)</code>
- </td>
- </tr>
- <tr>
- <a name="const_rend"></a>
- <td><code>const_rend(x)</code></td>
- <td><code>range_const_reverse_iterator&lt;X&gt;::type</code></td>
- <td><code>range_const_reverse_iterator&lt;X&gt;::type( rend(x) )</code>
- <td>same as <code>rend(x)</code></td>
- </tr>
- </table>
- </p>
- <p>
- The special <code>const</code> functions are not part of any Range concept, but
- are very useful when you want to document clearly that your code is read-only.
- </p>
- <hr>
- <a name="minimal_interface"></a>
- <h3>Extending the library</h3>
- <ul>
- <li>Method 1: provide member functions and nested types</li>
- <li>Method 2: provide free-standing functions and specialize metafunctions</li>
- </ul>
-
- <!--<b>Warning:</b><i> If possible, then prefer method 1 if you want to be absolutely sure your code is forward compatible.
- </i>-->
-
- <a name="method1"></a>
- <h4>Method 1: provide member functions and nested types</h4>
-
- <p>
- This procedure assumes that you have control over the types that should be made
- conformant to a Range concept. If not, see method 2.
- </p>
-
- <p>
- The primary templates in this library are implemented such that standard
- containers will work automatically and so will <code>boost::array</code>.
- Below is given an overview of which member functions and member types a class
- must specify to be useable as a certain Range concept.
- </p>
- <p>
- <table cellpadding="5" border="1">
- <tr>
- <th>
- Member function</th>
- <th>
- Related concept</th>
- <tr>
- <td><code>begin()</code></td>
- <td>Single Pass Range</td>
- </tr>
- <tr>
- <td><code>end()</code>
- </td>
- <td>Single Pass Range</td>
- </tr>
- <tr>
- <td><code>size()</code></td>
- <td>Forward Range</td>
- </tr>
- </table>
- </p>
- <p>
- Notice that <code>rbegin()</code> and <code>rend()</code> member functions are
- not needed even though the container can support bidirectional iteration.
- </p>
- <p>
- The required member types are:
- </p>
- <p>
- <table cellpadding="5" border="1">
- <tr>
- <th>
- Member type</th>
- <th>
- Related concept</th>
- <tr>
- <tr>
- <td><code>iterator</code></td>
- <td>Single Pass Range</td>
- </tr>
- <tr>
- <td><code>const_iterator</code></td>
- <td>Single Pass Range</td>
- </tr>
- <tr>
- <td><code>size_type</code></td>
- <td>Forward Range</td>
- </tr>
- </table>
- </p>
- <p>
- Again one should notice that member types <code>reverse_iterator</code> and <code>const_reverse_iterator</code>
- are not needed.
- </p>
- <a name="method2"></a>
- <h4>Method 2: provide free-standing functions and specialize metafunctions</h4>
-
- <p>
- This procedure assumes that you cannot (or do not wish to) change the types that should be made
- conformant to a Range concept. If this is not true, see method 1.
- </p>
-
- <p>
- The primary templates in this library are implemented such that
- certain functions are found via argument-dependent-lookup (ADL).
- Below is given an overview of which free-standing functions a class
- must specify to be useable as a certain Range concept.
- Let <code>x</code> be a variable (<code>const</code> or mutable)
- of the class in question.
- </p>
- <p>
- <table cellpadding="5" border="1" ID="Table1">
- <tr>
- <th>
- Function</th>
- <th>
- Related concept</th>
- <tr>
- <td><code>boost_range_begin(x)</code></td>
- <td>Single Pass Range</td>
- </tr>
- <tr>
- <td><code>boost_range_end(x)</code>
- </td>
- <td>Single Pass Range</td>
- </tr>
- <tr>
- <td><code>boost_range_size(x)</code></td>
- <td>Forward Range</td>
- </tr>
- </table>
- </p>
- <p><code>boost_range_begin()</code> and <code>boost_range_end()</code> must be
- overloaded for both <code>const</code> and mutable reference arguments.
- </p>
-
- <p>
- You must also specialize 3 metafunctions for your type <code>X</code>:
- </p>
- <p>
- <table cellpadding="5" border="1" ID="Table2">
- <tr>
- <th>
- Metafunction</th>
- <th>
- Related concept</th>
- <tr>
- <td><code>boost::range_iterator</code></td>
- <td>Single Pass Range</td>
- </tr>
- <tr>
- <td><code>boost::range_const_iterator</code></td>
- <td>Single Pass Range</td>
- </tr>
- <tr>
- <td><code>boost::range_size</code></td>
- <td>Forward Range</td>
- </tr>
- </table>
- </p>
- <p>
- A complete example is given here:
- </p>
- <blockquote>
- <pre>
+ <td>constant time</td>
+ </tr>
+ <tr>
+ <a name="end"></a>
+ <td><code>end(x)</code></td>
+ <td><code>range_result_iterator&lt;X&gt;::type</code></td>
+ <td>
+ <code>p.second</code> if <code>p</code> is of type <code>std::pair&ltT&gt;<code><br>
+ <code>a + sz</code> if <code>a</code> is an array of size <code>sz</code><br>
+ <code>s + std::char_traits&lt;X&gt;::length( s )</code> if <code>s</code> is a <code>Char*</code>
+ <br>
+ <code>s + sz - 1</code> if <code>s</code> is a string literal of size <code>sz</code>
+ <br>
+ <code>boost_range_end(x)</code> if that expression would invoke a function found by ADL <br>
+ <code>t.end()</code> otherwise
+
+ <td>linear if <code>X</code> is <code>Char*</code>
+ <br>
+ constant time otherwise</td>
+ </tr>
+ <tr>
+ <a name="empty"></a>
+ <td><code>empty(x)</code></td>
+ <td><code>bool</code></td>
+ <td><code>begin(x) == end( x )</code><br>
+ <td>linear if <code>X</code> is <code>Char*</code>
+ <br>
+ constant time otherwise<br>
+ </td>
+ </tr>
+ <tr>
+ <a name="size"></a>
+ <td><code>size(x)</code></td>
+ <td><code>range_size&lt;X&gt;::type</code></td>
+ <td>
+ <code>std::distance(p.first,p.second)</code> if <code>p</code> is of type <code>std::pair&ltT&gt;<code><br>
+ <code>sz</code> if <code>a</code> is an array of size <code>sz</code><br>
+ <code>end(s) - s</code> if <code>s</code> is a string literal or a <code>Char*</code><br>
+ <code>boost_range_size(x)</code> if that expression would invoke a function found by ADL <br>
+ <code>t.size()</code> otherwise
+ <td>linear if <code>X</code> is <code>Char*</code>
+ <br>
+ or if <code>std::distance()</code> is linear
+ <br>
+ constant time otherwise</td>
+ </tr>
+ <tr>
+ <a name="rbegin"></a>
+ <td><code>rbegin(x)</code></td>
+ <td><code>range_reverse_result_iterator&lt;X&gt;::type</code></td>
+ <td><code>range_reverse_result_iterator&lt;X&gt;::type( end(x) )</code>
+ <br>
+ <td>same as <code>end(x)</code>
+ </td>
+ </tr>
+ <tr>
+ <a name="rend"></a>
+ <td><code>rend(x)</code></td>
+ <td><code>range_reverse_result_iterator&lt;X&gt;::type</code></td>
+ <td><code>range_reverse_result_iterator&lt;X&gt;::type( begin(x) )</code>
+ <td>same as <code>begin(x)</code></td>
+ </tr>
+ <tr>
+ <a name="const_begin"></a>
+ <td><code>const_begin(x)</code></td>
+ <td><code>range_const_iterator&lt;X&gt;::type</code></td>
+ <td><code>range_const_iterator&lt;X&gt;::type( begin(x) )</code>
+ <br>
+ <td>same as <code>begin(x)</code>
+ </td>
+ </tr>
+ <tr>
+ <a name="const_end"></a>
+ <td><code>const_end(x)</code></td>
+ <td><code>range_const_iterator&lt;X&gt;::type</code></td>
+ <td><code>range_const_iterator&lt;X&gt;::type( end(x) )</code>
+ <td>same as <code>end(x)</code></td>
+ </tr>
+ <tr>
+ <a name="const_rbegin"></a>
+ <td><code>const_rbegin(x)</code></td>
+ <td><code>range_const_reverse_iterator&lt;X&gt;::type</code></td>
+ <td><code>range_const_reverse_iterator&lt;X&gt;::type( rbegin(x) )</code>
+ <br>
+ <td>same as <code>rbegin(x)</code>
+ </td>
+ </tr>
+ <tr>
+ <a name="const_rend"></a>
+ <td><code>const_rend(x)</code></td>
+ <td><code>range_const_reverse_iterator&lt;X&gt;::type</code></td>
+ <td><code>range_const_reverse_iterator&lt;X&gt;::type( rend(x) )</code>
+ <td>same as <code>rend(x)</code></td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ The special <code>const</code> functions are not part of any Range concept, but
+ are very useful when you want to document clearly that your code is read-only.
+ </p>
+ <hr>
+ <a name="minimal_interface"></a>
+ <h3>Extending the library</h3>
+ <ul>
+ <li>Method 1: provide member functions and nested types</li>
+ <li>Method 2: provide free-standing functions and specialize metafunctions</li>
+ </ul>
+
+ <!--<b>Warning:</b><i> If possible, then prefer method 1 if you want to be absolutely sure your code is forward compatible.
+ </i>-->
+
+ <a name="method1"></a>
+ <h4>Method 1: provide member functions and nested types</h4>
+
+ <p>
+ This procedure assumes that you have control over the types that should be made
+ conformant to a Range concept. If not, see method 2.
+ </p>
+
+ <p>
+ The primary templates in this library are implemented such that standard
+ containers will work automatically and so will <code>boost::array</code>.
+ Below is given an overview of which member functions and member types a class
+ must specify to be useable as a certain Range concept.
+ </p>
+ <p>
+ <table cellpadding="5" border="1">
+ <tr>
+ <th>
+ Member function</th>
+ <th>
+ Related concept</th>
+ <tr>
+ <td><code>begin()</code></td>
+ <td>Single Pass Range</td>
+ </tr>
+ <tr>
+ <td><code>end()</code>
+ </td>
+ <td>Single Pass Range</td>
+ </tr>
+ <tr>
+ <td><code>size()</code></td>
+ <td>Forward Range</td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ Notice that <code>rbegin()</code> and <code>rend()</code> member functions are
+ not needed even though the container can support bidirectional iteration.
+ </p>
+ <p>
+ The required member types are:
+ </p>
+ <p>
+ <table cellpadding="5" border="1">
+ <tr>
+ <th>
+ Member type</th>
+ <th>
+ Related concept</th>
+ <tr>
+ <tr>
+ <td><code>iterator</code></td>
+ <td>Single Pass Range</td>
+ </tr>
+ <tr>
+ <td><code>const_iterator</code></td>
+ <td>Single Pass Range</td>
+ </tr>
+ <tr>
+ <td><code>size_type</code></td>
+ <td>Forward Range</td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ Again one should notice that member types <code>reverse_iterator</code> and <code>const_reverse_iterator</code>
+ are not needed.
+ </p>
+ <a name="method2"></a>
+ <h4>Method 2: provide free-standing functions and specialize metafunctions</h4>
+
+ <p>
+ This procedure assumes that you cannot (or do not wish to) change the types that should be made
+ conformant to a Range concept. If this is not true, see method 1.
+ </p>
+
+ <p>
+ The primary templates in this library are implemented such that
+ certain functions are found via argument-dependent-lookup (ADL).
+ Below is given an overview of which free-standing functions a class
+ must specify to be useable as a certain Range concept.
+ Let <code>x</code> be a variable (<code>const</code> or mutable)
+ of the class in question.
+ </p>
+ <p>
+ <table cellpadding="5" border="1" ID="Table1">
+ <tr>
+ <th>
+ Function</th>
+ <th>
+ Related concept</th>
+ <tr>
+ <td><code>boost_range_begin(x)</code></td>
+ <td>Single Pass Range</td>
+ </tr>
+ <tr>
+ <td><code>boost_range_end(x)</code>
+ </td>
+ <td>Single Pass Range</td>
+ </tr>
+ <tr>
+ <td><code>boost_range_size(x)</code></td>
+ <td>Forward Range</td>
+ </tr>
+ </table>
+ </p>
+ <p><code>boost_range_begin()</code> and <code>boost_range_end()</code> must be
+ overloaded for both <code>const</code> and mutable reference arguments.
+ </p>
+
+ <p>
+ You must also specialize 3 metafunctions for your type <code>X</code>:
+ </p>
+ <p>
+ <table cellpadding="5" border="1" ID="Table2">
+ <tr>
+ <th>
+ Metafunction</th>
+ <th>
+ Related concept</th>
+ <tr>
+ <td><code>boost::range_iterator</code></td>
+ <td>Single Pass Range</td>
+ </tr>
+ <tr>
+ <td><code>boost::range_const_iterator</code></td>
+ <td>Single Pass Range</td>
+ </tr>
+ <tr>
+ <td><code>boost::range_size</code></td>
+ <td>Forward Range</td>
+ </tr>
+ </table>
+ </p>
+ <p>
+ A complete example is given here:
+ </p>
+ <blockquote>
+ <pre>
 <span class=preprocessor>#include</span> <span class=special>&lt;</span><span class=identifier>boost</span><span class=special>/</span><span class=identifier>range</span><span class=special>.</span><span class=identifier>hpp</span><span class=special>&gt;</span>
 <span class=preprocessor>#include</span> <span class=special>&lt;</span><span class=identifier>iterator</span><span class=special>&gt;</span> <span class=comment>// for std::iterator_traits, std::distance()</span>
 
 <span class=keyword>namespace</span> <span class=identifier>Foo</span>
 <span class=special>{</span>
- <span class=comment>//
- // Our sample UDT. A 'Pair'
- // will work as a range when the stored
- // elements are iterators.
- //</span>
- <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
- <span class=keyword>struct</span> <span class=identifier>Pair</span>
- <span class=special>{</span>
- <span class=identifier>T</span> <span class=identifier>first</span><span class=special>,</span> <span class=identifier>last</span><span class=special>;</span>
- <span class=special>};</span>
+ <span class=comment>//
+ // Our sample UDT. A 'Pair'
+ // will work as a range when the stored
+ // elements are iterators.
+ //</span>
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
+ <span class=keyword>struct</span> <span class=identifier>Pair</span>
+ <span class=special>{</span>
+ <span class=identifier>T</span> <span class=identifier>first</span><span class=special>,</span> <span class=identifier>last</span><span class=special>;</span>
+ <span class=special>};</span>
 
 <span class=special>}</span> <span class=comment>// namespace 'Foo'</span>
 
 <span class=keyword>namespace</span> <span class=identifier>boost</span>
 <span class=special>{</span>
- <span class=comment>//
- // Specialize metafunctions. We must include the range.hpp header.
- // We must open the 'boost' namespace.
- //</span>
-
- <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
- <span class=keyword>struct</span> <span class=identifier>range_iterator</span><span class=special>&lt;</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;</span> <span class=special>&gt;</span>
- <span class=special>{</span>
- <span class=keyword>typedef</span> <span class=identifier>T</span> <span class=identifier>type</span><span class=special>;</span>
- <span class=special>};</span>
-
- <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
- <span class=keyword>struct</span> <span class=identifier>range_const_iterator</span><span class=special>&lt;</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;</span> <span class=special>&gt;</span>
- <span class=special>{</span>
- <span class=comment>//
- // Remark: this is defined similar to 'range_iterator'
- // because the 'Pair' type does not distinguish
- // between an iterator and a const_iterator.
- //</span>
- <span class=keyword>typedef</span> <span class=identifier>T</span> <span class=identifier>type</span><span class=special>;</span>
- <span class=special>};</span>
-
- <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
- <span class=keyword>struct</span> <span class=identifier>range_size</span><span class=special>&lt;</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;</span> <span class=special>&gt;</span>
- <span class=special>{</span>
+ <span class=comment>//
+ // Specialize metafunctions. We must include the range.hpp header.
+ // We must open the 'boost' namespace.
+ //</span>
+
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
+ <span class=keyword>struct</span> <span class=identifier>range_iterator</span><span class=special>&lt;</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;</span> <span class=special>&gt;</span>
+ <span class=special>{</span>
+ <span class=keyword>typedef</span> <span class=identifier>T</span> <span class=identifier>type</span><span class=special>;</span>
+ <span class=special>};</span>
+
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
+ <span class=keyword>struct</span> <span class=identifier>range_const_iterator</span><span class=special>&lt;</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;</span> <span class=special>&gt;</span>
+ <span class=special>{</span>
+ <span class=comment>//
+ // Remark: this is defined similar to 'range_iterator'
+ // because the 'Pair' type does not distinguish
+ // between an iterator and a const_iterator.
+ //</span>
+ <span class=keyword>typedef</span> <span class=identifier>T</span> <span class=identifier>type</span><span class=special>;</span>
+ <span class=special>};</span>
+
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
+ <span class=keyword>struct</span> <span class=identifier>range_size</span><span class=special>&lt;</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;</span> <span class=special>&gt;</span>
+ <span class=special>{</span>
 
- <span class=keyword>typedef</span> <span class=identifier>std</span><span class=special>::</span><span class=identifier>size_t</span> <span class=identifier>type</span><span class=special>;</span>
- <span class=special>};</span>
+ <span class=keyword>typedef</span> <span class=identifier>std</span><span class=special>::</span><span class=identifier>size_t</span> <span class=identifier>type</span><span class=special>;</span>
+ <span class=special>};</span>
 
 <span class=special>}</span> <span class=comment>// namespace 'boost'</span>
 
 <span class=keyword>namespace</span> <span class=identifier>Foo</span>
 <span class=special>{</span>
- <span class=comment>//
- // The required functions. These should be defined in
- // the same namespace as 'Pair', in this case
- // in namespace 'Foo'.
- //</span>
-
- <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
- <span class=keyword>inline</span> <span class=identifier>T</span> <span class=identifier>boost_range_begin</span><span class=special>(</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span> <span class=special>)</span>
- <span class=special>{</span>
- <span class=keyword>return</span> <span class=identifier>x</span><span class=special>.</span><span class=identifier>first</span><span class=special>;</span>
- <span class=special>}</span>
-
- <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
- <span class=keyword>inline</span> <span class=identifier>T</span> <span class=identifier>boost_range_begin</span><span class=special>(</span> <span class=keyword>const</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span> <span class=special>)</span>
- <span class=special>{</span>
- <span class=keyword>return</span> <span class=identifier>x</span><span class=special>.</span><span class=identifier>first</span><span class=special>;</span>
- <span class=special>}</span>
-
- <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
- <span class=keyword>inline</span> <span class=identifier>T</span> <span class=identifier>boost_range_end</span><span class=special>(</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span> <span class=special>)</span>
- <span class=special>{</span>
- <span class=keyword>return</span> <span class=identifier>x</span><span class=special>.</span><span class=identifier>last</span><span class=special>;</span>
- <span class=special>}</span>
-
- <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
- <span class=keyword>inline</span> <span class=identifier>T</span> <span class=identifier>boost_range_end</span><span class=special>(</span> <span class=keyword>const</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span> <span class=special>)</span>
- <span class=special>{</span>
- <span class=keyword>return</span> <span class=identifier>x</span><span class=special>.</span><span class=identifier>last</span><span class=special>;</span>
- <span class=special>}</span>
-
- <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
- <span class=keyword>inline</span> <span class=keyword>typename</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_size</span><span class=special>&lt;</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;</span> <span class=special>&gt;::</span><span class=identifier>type</span>
- <span class=identifier>boost_range_size</span><span class=special>(</span> <span class=keyword>const</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span> <span class=special>)</span>
- <span class=special>{</span>
- <span class=keyword>return</span> <span class=identifier>std</span><span class=special>::</span><span class=identifier>distance</span><span class=special>(</span><span class=identifier>x</span><span class=special>.</span><span class=identifier>first</span><span class=special>,</span><span class=identifier>x</span><span class=special>.</span><span class=identifier>last</span><span class=special>);</span>
- <span class=special>}</span>
+ <span class=comment>//
+ // The required functions. These should be defined in
+ // the same namespace as 'Pair', in this case
+ // in namespace 'Foo'.
+ //</span>
+
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
+ <span class=keyword>inline</span> <span class=identifier>T</span> <span class=identifier>boost_range_begin</span><span class=special>(</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span> <span class=special>)</span>
+ <span class=special>{</span>
+ <span class=keyword>return</span> <span class=identifier>x</span><span class=special>.</span><span class=identifier>first</span><span class=special>;</span>
+ <span class=special>}</span>
+
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
+ <span class=keyword>inline</span> <span class=identifier>T</span> <span class=identifier>boost_range_begin</span><span class=special>(</span> <span class=keyword>const</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span> <span class=special>)</span>
+ <span class=special>{</span>
+ <span class=keyword>return</span> <span class=identifier>x</span><span class=special>.</span><span class=identifier>first</span><span class=special>;</span>
+ <span class=special>}</span>
+
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
+ <span class=keyword>inline</span> <span class=identifier>T</span> <span class=identifier>boost_range_end</span><span class=special>(</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span> <span class=special>)</span>
+ <span class=special>{</span>
+ <span class=keyword>return</span> <span class=identifier>x</span><span class=special>.</span><span class=identifier>last</span><span class=special>;</span>
+ <span class=special>}</span>
+
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
+ <span class=keyword>inline</span> <span class=identifier>T</span> <span class=identifier>boost_range_end</span><span class=special>(</span> <span class=keyword>const</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span> <span class=special>)</span>
+ <span class=special>{</span>
+ <span class=keyword>return</span> <span class=identifier>x</span><span class=special>.</span><span class=identifier>last</span><span class=special>;</span>
+ <span class=special>}</span>
+
+ <span class=keyword>template</span><span class=special>&lt;</span> <span class=keyword>class</span> <span class=identifier>T</span> <span class=special>&gt;</span>
+ <span class=keyword>inline</span> <span class=keyword>typename</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_size</span><span class=special>&lt;</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;</span> <span class=special>&gt;::</span><span class=identifier>type</span>
+ <span class=identifier>boost_range_size</span><span class=special>(</span> <span class=keyword>const</span> <span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>T</span><span class=special>&gt;&amp;</span> <span class=identifier>x</span> <span class=special>)</span>
+ <span class=special>{</span>
+ <span class=keyword>return</span> <span class=identifier>std</span><span class=special>::</span><span class=identifier>distance</span><span class=special>(</span><span class=identifier>x</span><span class=special>.</span><span class=identifier>first</span><span class=special>,</span><span class=identifier>x</span><span class=special>.</span><span class=identifier>last</span><span class=special>);</span>
+ <span class=special>}</span>
 
 <span class=special>}</span> <span class=comment>// namespace 'Foo'</span>
 
@@ -705,41 +697,41 @@
 
 <span class=keyword>int</span> <span class=identifier>main</span><span class=special>()</span>
 <span class=special>{</span>
- <span class=keyword>typedef</span> <span class=identifier>std</span><span class=special>::</span><span class=identifier>vector</span><span class=special>&lt;</span><span class=keyword>int</span><span class=special>&gt;::</span><span class=identifier>iterator</span> <span class=identifier>iter</span><span class=special>;</span>
- <span class=identifier>std</span><span class=special>::</span><span class=identifier>vector</span><span class=special>&lt;</span><span class=keyword>int</span><span class=special>&gt;</span> <span class=identifier>vec</span><span class=special>;</span>
- <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>iter</span><span class=special>&gt;</span> <span class=identifier>pair</span> <span class=special>=</span> <span class=special>{</span> <span class=identifier>vec</span><span class=special>.</span><span class=identifier>begin</span><span class=special>(),</span> <span class=identifier>vec</span><span class=special>.</span><span class=identifier>end</span><span class=special>()</span> <span class=special>};</span>
- <span class=keyword>const</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>iter</span><span class=special>&gt;&amp;</span> <span class=identifier>cpair</span> <span class=special>=</span> <span class=identifier>pair</span><span class=special>;</span>
- <span class=comment>//
- // Notice that we call 'begin' etc with qualification.
- //</span>
- <span class=identifier>iter</span> <span class=identifier>i</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>pair</span> <span class=special>);</span>
- <span class=identifier>iter</span> <span class=identifier>e</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>end</span><span class=special>(</span> <span class=identifier>pair</span> <span class=special>);</span>
- <span class=identifier>i</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>cpair</span> <span class=special>);</span>
- <span class=identifier>e</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>end</span><span class=special>(</span> <span class=identifier>cpair</span> <span class=special>);</span>
- <span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_size</span><span class=special>&lt;</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>iter</span><span class=special>&gt;</span> <span class=special>&gt;::</span><span class=identifier>type</span> <span class=identifier>s</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>size</span><span class=special>(</span> <span class=identifier>pair</span> <span class=special>);</span>
- <span class=identifier>s</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>size</span><span class=special>(</span> <span class=identifier>cpair</span> <span class=special>);</span>
- <span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_const_reverse_iterator</span><span class=special>&lt;</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>iter</span><span class=special>&gt;</span> <span class=special>&gt;::</span><span class=identifier>type</span>
- <span class=identifier>ri</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>rbegin</span><span class=special>(</span> <span class=identifier>cpair</span> <span class=special>),</span>
- <span class=identifier>re</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>rend</span><span class=special>(</span> <span class=identifier>cpair</span> <span class=special>);</span>
-<span class=special>}</span>
+ <span class=keyword>typedef</span> <span class=identifier>std</span><span class=special>::</span><span class=identifier>vector</span><span class=special>&lt;</span><span class=keyword>int</span><span class=special>&gt;::</span><span class=identifier>iterator</span> <span class=identifier>iter</span><span class=special>;</span>
+ <span class=identifier>std</span><span class=special>::</span><span class=identifier>vector</span><span class=special>&lt;</span><span class=keyword>int</span><span class=special>&gt;</span> <span class=identifier>vec</span><span class=special>;</span>
+ <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>iter</span><span class=special>&gt;</span> <span class=identifier>pair</span> <span class=special>=</span> <span class=special>{</span> <span class=identifier>vec</span><span class=special>.</span><span class=identifier>begin</span><span class=special>(),</span> <span class=identifier>vec</span><span class=special>.</span><span class=identifier>end</span><span class=special>()</span> <span class=special>};</span>
+ <span class=keyword>const</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>iter</span><span class=special>&gt;&amp;</span> <span class=identifier>cpair</span> <span class=special>=</span> <span class=identifier>pair</span><span class=special>;</span>
+ <span class=comment>//
+ // Notice that we call 'begin' etc with qualification.
+ //</span>
+ <span class=identifier>iter</span> <span class=identifier>i</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>pair</span> <span class=special>);</span>
+ <span class=identifier>iter</span> <span class=identifier>e</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>end</span><span class=special>(</span> <span class=identifier>pair</span> <span class=special>);</span>
+ <span class=identifier>i</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>cpair</span> <span class=special>);</span>
+ <span class=identifier>e</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>end</span><span class=special>(</span> <span class=identifier>cpair</span> <span class=special>);</span>
+ <span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_size</span><span class=special>&lt;</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>iter</span><span class=special>&gt;</span> <span class=special>&gt;::</span><span class=identifier>type</span> <span class=identifier>s</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>size</span><span class=special>(</span> <span class=identifier>pair</span> <span class=special>);</span>
+ <span class=identifier>s</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>size</span><span class=special>(</span> <span class=identifier>cpair</span> <span class=special>);</span>
+ <span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_const_reverse_iterator</span><span class=special>&lt;</span> <span class=identifier>Foo</span><span class=special>::</span><span class=identifier>Pair</span><span class=special>&lt;</span><span class=identifier>iter</span><span class=special>&gt;</span> <span class=special>&gt;::</span><span class=identifier>type</span>
+ <span class=identifier>ri</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>rbegin</span><span class=special>(</span> <span class=identifier>cpair</span> <span class=special>),</span>
+ <span class=identifier>re</span> <span class=special>=</span> <span class=identifier>boost</span><span class=special>::</span><span class=identifier>rend</span><span class=special>(</span> <span class=identifier>cpair</span> <span class=special>);</span>
+<span class=special>}</span>
 </pre>
 </blockquote>
-
- <hr>
- <p>
- (C) Copyright Thorsten Ottosen 2003-2004
- </p>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- <br>
- </body>
+
+ <hr>
+ <p>
+ (C) Copyright Thorsten Ottosen 2003-2004
+ </p>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ </body>
 </html>

Modified: trunk/libs/range/doc/headers.html
==============================================================================
--- trunk/libs/range/doc/headers.html (original)
+++ trunk/libs/range/doc/headers.html 2007-10-27 11:58:22 EDT (Sat, 27 Oct 2007)
@@ -50,6 +50,12 @@
>range_iterator</a></td>
             <td>Single Pass Range </td>
         </tr>
+ <tr >
+ <td ><code >&lt;boost/range/mutable_iterator.hpp&gt;</code></td>
+ <td ><a href="boost_range.html#range_mutable_iterator"
+ >range_mutable_iterator</a></td>
+ <td>Single Pass Range </td>
+ </tr>
         <tr >
             <td ><code >&lt;boost/range/const_iterator.hpp&gt;</code></td>
             <td ><a href="boost_range.html#range_const_iterator"
@@ -67,28 +73,25 @@
             <td >range_size</td>
             <td>Forward Range </td>
         </tr>
- <tr >
- <td ><code >&lt;boost/range/result_iterator.hpp&gt;</code></td>
- <td ><a href="boost_range.html#range_result_iterator"
- >range_result_iterator</a></td>
+ <tr >
+ <td ><code >&lt;boost/range/pointer.hpp&gt;</code></td>
+ <td ><a href="boost_range.html#range_pointer"
+ >range_pointer</a></td>
             <td>- </td>
         </tr>
+ <tr >
+ <td ><code >&lt;boost/range/category.hpp&gt;</code></td>
+ <td ><a href="boost_range.html#range_category"
+ >range_category</a></td>
+ <td>- </td>
+ </tr>
+
         <tr >
             <td ><code >&lt;boost/range/reverse_iterator.hpp&gt;</code></td>
             <td >range_reverse_iterator</td>
             <td>Bidirectional Range </td>
         </tr>
         <tr >
- <td ><code >&lt;boost/range/const_reverse_iterator.hpp&gt;</code></td>
- <td >range_const_reverse_iterator</td>
- <td>Bidirectional Range </td>
- </tr>
- <tr >
- <td ><code >&lt;boost/range/reverse_result_iterator.hpp&gt;</code></td>
- <td >range_reverse_result_iterator</td>
- <td>- </td>
- </tr>
- <tr >
             <td ><code >&lt;boost/range/begin.hpp&gt;</code></td>
             <td >
                 <a href="boost_range.html#begin" >begin</a> and
@@ -109,10 +112,16 @@
             <td >empty</td>
             <td>Single Pass Range </td>
         </tr>
+ <tr >
+ <td ><code >&lt;boost/range/distance.hpp&gt;</code></td>
+ <td >distance</td>
+ <td>Forward Range </td>
+ </tr>
         <tr >
             <td ><code >&lt;boost/range/size.hpp&gt;</code></td>
             <td >size</td>
- <td>Forward Range </td>
+ <td>Random Access Range
+ </td>
         </tr>
         <tr >
             <td ><code >&lt;boost/range/rbegin.hpp&gt;</code></td>
@@ -130,6 +139,21 @@
             </td>
             <td>Bidirectional Range </td>
         </tr>
+ <tr >
+ <td ><code >&lt;boost/range/as_array.hpp&gt;</code></td>
+ <td >
+ as_array
+ </td>
+ <td>-</td>
+ </tr>
+ <tr >
+ <td ><code >&lt;boost/range/as_literal.hpp&gt;</code></td>
+ <td >
+ as_literal
+ </td>
+ <td>-</td>
+ </tr>
+
         <tr >
             <td ><code >&lt;boost/range/iterator_range.hpp&gt;</code></td>
             <td ><a href="utility_class.html#iter_range"

Modified: trunk/libs/range/doc/intro.html
==============================================================================
--- trunk/libs/range/doc/intro.html (original)
+++ trunk/libs/range/doc/intro.html 2007-10-27 11:58:22 EDT (Sat, 27 Oct 2007)
@@ -60,22 +60,14 @@
             more flexible, compact and maintainable client code
         </li>
         <li >
- correct handling of null-terminated strings
- <p>
- <b>Warning:</b><i> support for null-terminated strings is deprecated and will
- disappear in the next Boost release (1.34). </i>
- </p>
+ safe use of built-in arrays
         </li>
- <li >
- safe use of built-in arrays (for legacy code; why else would you use
- built-in arrays?) </li>
 
     </ul>
     </p>
     <p >
- Below are given a small example (the complete example can be found here
- ):
- <blockquote>
+ Below are given a small example (the complete example can be found <a
+ href="../test/algorithm_example.cpp" target="_self" >here</a>): <blockquote>
         <pre >
 <span class=comment>
     //
@@ -89,7 +81,7 @@
     </span><span class=special>}
 
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>ForwardReadableRange</span><span class=special>, </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword>inline </span><span class=keyword>typename </span><span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_const_iterator</span><span class=special>&lt; </span><span
+ </span><span class=keyword>inline </span><span class=keyword>typename </span><span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_iterator</span><span class=special>&lt; </span><span class=keyword>const </span><span
 class=identifier>ForwardReadableRange </span><span class=special>&gt;::</span><span class=identifier>type
     </span><span class=identifier>find</span><span class=special>( </span><span class=keyword>const </span><span class=identifier>ForwardReadableRange</span><span class=special>&amp; </span><span class=identifier>c</span><span class=special>, </span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>value </span><span class=special>)
     </span><span class=special>{
@@ -100,7 +92,7 @@
     // replace first value and return its index
     //
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>ForwardReadableWriteableRange</span><span class=special>, </span><span class=keyword>class </span><span class=identifier>T </span><span class=special>&gt;
- </span><span class=keyword>inline </span><span class=keyword>typename </span><span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_size</span><span class=special>&lt; </span><span class=identifier>ForwardReadableWriteableRange </span><span class=special>&gt;::</span><span class=identifier>type
+ </span><span class=keyword>inline </span><span class=keyword>typename </span><span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_difference</span><span class=special>&lt; </span><span class=identifier>ForwardReadableWriteableRange </span><span class=special>&gt;::</span><span class=identifier>type
     </span><span class=identifier>my_generic_replace</span><span class=special>( </span><span class=identifier>ForwardReadableWriteableRange</span><span class=special>&amp; </span><span class=identifier>c</span><span class=special>, </span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>value</span><span class=special>, </span><span class=keyword>const </span><span class=identifier>T</span><span class=special>&amp; </span><span class=identifier>replacement </span><span class=special>)
     </span><span class=special>{
        </span><span class=keyword>typename </span><span class=identifier>boost</span><span class=special>::</span><span class=identifier>range_iterator</span><span class=special>&lt; </span><span class=identifier>ForwardReadableWriteableRange </span><span class=special>&gt;::</span><span class=identifier>type </span><span class=identifier>found </span><span class=special>= </span><span class=identifier>find</span><span class=special>( </span><span class=identifier>c</span><span class=special>, </span><span class=identifier>value </span><span class=special>);
@@ -146,7 +138,7 @@
 
     <hr>
     <p>
- (C) Copyright Thorsten Ottosen 2003-2004
+ (C) Copyright Thorsten Ottosen 2003-2007
     </p>
 
     <br>

Modified: trunk/libs/range/doc/utility_class.html
==============================================================================
--- trunk/libs/range/doc/utility_class.html (original)
+++ trunk/libs/range/doc/utility_class.html 2007-10-27 11:58:22 EDT (Sat, 27 Oct 2007)
@@ -173,11 +173,11 @@
                          </span><span class=identifier>ForwardTraversalIterator </span><span class=identifier>End </span><span class=special>);
        
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>ForwardRange </span><span class=special>&gt;
- </span><span class=identifier>iterator_range</span><span class=special>&lt; </span><span class=keyword>typename </span><span class=identifier>iterator_of</span><span class=special>&lt;</span><span class=identifier>ForwardRange</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=special>&gt;
+ </span><span class=identifier>iterator_range</span><span class=special>&lt; </span><span class=keyword>typename </span><span class=identifier>iterator</span><span class=special>&lt;</span><span class=identifier>ForwardRange</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=special>&gt;
     </span><span class=identifier>make_iterator_range</span><span class=special>( </span><span class=identifier>ForwardRange</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);
 
     </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>ForwardRange </span><span class=special>&gt;
- </span><span class=identifier>iterator_range</span><span class=special>&lt; </span><span class=keyword>typename </span><span class=identifier>const_iterator_of</span><span class=special>&lt;</span><span class=identifier>ForwardRange</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=special>&gt;
+ </span><span class=identifier>iterator_range</span><span class=special>&lt; </span><span class=keyword>typename </span><span class=identifier>const_iterator</span><span class=special>&lt;</span><span class=identifier>ForwardRange</span><span class=special>&gt;::</span><span class=identifier>type </span><span class=special>&gt;
     </span><span class=identifier>make_iterator_range</span><span class=special>( </span><span class=keyword>const </span><span class=identifier>ForwardRange</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);
     </span>
     <span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>Range </span><span class=special>&gt;</span>
@@ -305,7 +305,7 @@
         </span><span class=identifier>sub_range</span><span class=special>( </span><span class=identifier>ForwardRange2</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);
          
         </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>ForwardRange2 </span><span class=special>&gt;
- </span><span class=identifier>sub_range</span><span class=special>( </span><span class=keyword>const </span><span class=identifier>Range2</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);
+ </span><span class=identifier>sub_range</span><span class=special>( </span><span class=keyword>const </span><span class=identifier>ForwardRange2</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);
          
         </span><span class=keyword>template</span><span class=special>&lt; </span><span class=keyword>class </span><span class=identifier>ForwardRange2 </span><span class=special>&gt;
         </span><span class=identifier>sub_range</span><span class=special>&amp; </span><span class=keyword>operator</span><span class=special>=( </span><span class=identifier>ForwardRange2</span><span class=special>&amp; </span><span class=identifier>r </span><span class=special>);


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk