Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r77484 - in trunk: boost libs/config/doc libs/config/doc/html libs/config/doc/html/boost_config libs/functional/overloaded_function/doc libs/functional/overloaded_function/doc/html libs/functional/overloaded_function/doc/html/boost libs/functional/overloaded_function/doc/html/boost_functional_overloadedfunction libs/functional/overloaded_function/test libs/local_function/doc libs/local_function/doc/html libs/local_function/doc/html/boost_localfunction libs/local_function/example libs/local_function/test libs/scope_exit/doc libs/scope_exit/doc/html libs/scope_exit/doc/html/scope_exit libs/scope_exit/test libs/utility/identity_type/doc libs/utility/identity_type/doc/html libs/utility/identity_type/test
From: lorcaminiti_at_[hidden]
Date: 2012-03-22 16:54:27


Author: lcaminiti
Date: 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
New Revision: 77484
URL: http://svn.boost.org/trac/boost/changeset/77484

Log:
Split Utility/IdentityType and Functional/OverloadedFunction tests into smaller tests.
Updated docs for ScopeExit, LocalFunction, Utility/IdentityType, and Functional/OverloadedFunction.
Added:
   trunk/libs/functional/overloaded_function/test/functor.cpp (contents, props changed)
   trunk/libs/functional/overloaded_function/test/identity.hpp (contents, props changed)
   trunk/libs/functional/overloaded_function/test/make_call.cpp (contents, props changed)
   trunk/libs/functional/overloaded_function/test/make_decl.cpp (contents, props changed)
   trunk/libs/utility/identity_type/test/abstract.cpp (contents, props changed)
   trunk/libs/utility/identity_type/test/noncopyable.cpp (contents, props changed)
   trunk/libs/utility/identity_type/test/paren.cpp (contents, props changed)
Removed:
   trunk/libs/functional/overloaded_function/test/identity.cpp
   trunk/libs/utility/identity_type/test/tmp_assert.cpp
Properties modified:
   trunk/libs/config/doc/html/ (props changed)
Text files modified:
   trunk/boost/local_function.hpp | 8 +
   trunk/libs/config/doc/html/boost_config/boost_macro_reference.html | 14 ++++
   trunk/libs/config/doc/html/index.html | 2
   trunk/libs/config/doc/macro_reference.qbk | 6
   trunk/libs/functional/overloaded_function/doc/html/BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX.html | 2
   trunk/libs/functional/overloaded_function/doc/html/BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX.html | 2
   trunk/libs/functional/overloaded_function/doc/html/boost/make_overloaded_function.html | 2
   trunk/libs/functional/overloaded_function/doc/html/boost/overloaded_function.html | 22 +++---
   trunk/libs/functional/overloaded_function/doc/html/boost_functional_overloadedfunction/Getting_Started.html | 19 ++++
   trunk/libs/functional/overloaded_function/doc/html/boost_functional_overloadedfunction/Tutorial.html | 20 ++---
   trunk/libs/functional/overloaded_function/doc/html/index.html | 16 +---
   trunk/libs/functional/overloaded_function/doc/overloaded_function.qbk | 23 ++++--
   trunk/libs/functional/overloaded_function/test/Jamfile.v2 | 4
   trunk/libs/local_function/doc/advanced_topics.qbk | 1
   trunk/libs/local_function/doc/examples.qbk | 4
   trunk/libs/local_function/doc/getting_started.qbk | 8 +-
   trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION.html | 2
   trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX.html | 2
   trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX.html | 2
   trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_ID.html | 5
   trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_NAME.html | 2
   trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_TPL.html | 2
   trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_TYPEOF.html | 2
   trunk/libs/local_function/doc/html/boost_localfunction/Advanced_Topics.html | 8 +
   trunk/libs/local_function/doc/html/boost_localfunction/Alternatives.html | 4
   trunk/libs/local_function/doc/html/boost_localfunction/Examples.html | 2
   trunk/libs/local_function/doc/html/boost_localfunction/Getting_Started.html | 12 +-
   trunk/libs/local_function/doc/html/boost_localfunction/No_Variadic_Macros.html | 136 +++++++++++++++++++++++++++++++++++++--
   trunk/libs/local_function/doc/html/index.html | 4
   trunk/libs/local_function/doc/local_function.qbk | 2
   trunk/libs/local_function/doc/no_variadic_macros.qbk | 31 ++++++++
   trunk/libs/local_function/example/gcc_lambda_cxx11.cpp | 6
   trunk/libs/local_function/test/add_lambda.cpp | 2
   trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html | 2
   trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL.html | 2
   trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL_ID.html | 2
   trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_CONFIG_USE_LAMBDA_IMPL.html | 2
   trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END.html | 2
   trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END_ID.html | 2
   trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ID.html | 2
   trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_TPL.html | 2
   trunk/libs/scope_exit/doc/html/index.html | 2
   trunk/libs/scope_exit/doc/html/scope_exit/Alternatives.html | 4
   trunk/libs/scope_exit/doc/html/scope_exit/Getting_Started.html | 17 ++--
   trunk/libs/scope_exit/doc/html/scope_exit/No_Variadic_Macros.html | 21 +++--
   trunk/libs/scope_exit/doc/html/scope_exit/Tutorial.html | 8 +-
   trunk/libs/scope_exit/doc/scope_exit.qbk | 16 ++--
   trunk/libs/scope_exit/test/world_lambda.cpp | 4
   trunk/libs/utility/identity_type/doc/html/index.html | 26 ++++++-
   trunk/libs/utility/identity_type/doc/identity_type.qbk | 24 +++++-
   trunk/libs/utility/identity_type/test/Jamfile.v2 | 4
   51 files changed, 370 insertions(+), 149 deletions(-)

Modified: trunk/boost/local_function.hpp
==============================================================================
--- trunk/boost/local_function.hpp (original)
+++ trunk/boost/local_function.hpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -222,8 +222,12 @@
 can only portably use <c>__LINE__</c> to internally generate unique
 identifiers).
 
-_at_See @RefMacro{BOOST_SCOPE_EXIT_END_ID}, @RefMacro{BOOST_SCOPE_EXIT_ALL_ID},
- @RefMacro{BOOST_SCOPE_EXIT}, @RefMacro{BOOST_SCOPE_EXIT_TPL}.
+@Note The @RefMacro{BOOST_LOCAL_FUNCTION_NAME} macro can always be expanded
+multiple times on the same line because a unique local function name must be
+provided for each different expansion (so the is no need for a
+<c>BOOST_LOCAL_FUNCTION_NAME_ID</c> macro).
+
+@See @RefMacro{BOOST_LOCAL_FUNCTION}, @RefMacro{BOOST_LOCAL_FUNCTION_TPL}.
 */
 #define BOOST_LOCAL_FUNCTION_ID(id, within_template, declarations)
 

Modified: trunk/libs/config/doc/html/boost_config/boost_macro_reference.html
==============================================================================
--- trunk/libs/config/doc/html/boost_config/boost_macro_reference.html (original)
+++ trunk/libs/config/doc/html/boost_config/boost_macro_reference.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -2705,6 +2705,20 @@
 <tr>
 <td>
                 <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not allow to pass local classes as template parameters
+ (this macro intentionally does not control passing of unnamed types
+ as template parameters, see also N2657).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
                   <code class="computeroutput"><span class="identifier">BOOST_NO_LONG_LONG</span></code>
                 </p>
               </td>

Modified: trunk/libs/config/doc/html/index.html
==============================================================================
--- trunk/libs/config/doc/html/index.html (original)
+++ trunk/libs/config/doc/html/index.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -951,7 +951,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: March 12, 2012 at 00:24:44 GMT</small></p></td>
+<td align="left"><p><small>Last revised: March 21, 2012 at 18:21:54 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/config/doc/macro_reference.qbk
==============================================================================
--- trunk/libs/config/doc/macro_reference.qbk (original)
+++ trunk/libs/config/doc/macro_reference.qbk 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -598,9 +598,9 @@
 ]]
 [[`BOOST_NO_LAMBDAS`][The compiler does not support Lambdas.
 ]]
-[[`BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS`][The compiler does not support
-local classes as template parameters (this macro intentionally does not
-control support for unnamed types as template parameters, see also
+[[`BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS`][The compiler does not allow to
+pass local classes as template parameters (this macro intentionally does not
+control passing of unnamed types as template parameters, see also
 [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm N2657]).
 ]]
 [[`BOOST_NO_LONG_LONG`][The compiler does not support `long long`.

Modified: trunk/libs/functional/overloaded_function/doc/html/BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX.html
==============================================================================
--- trunk/libs/functional/overloaded_function/doc/html/BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX.html (original)
+++ trunk/libs/functional/overloaded_function/doc/html/BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX</pre></div>
 <div class="refsect1">
-<a name="id833145"></a><h2>Description</h2>
+<a name="id872024"></a><h2>Description</h2>
 <p>If this macro is left undefined by the user, it has a default value of 5 (increasing this number might increase compilation time). When specified by the user, this macro must be a non-negative integer number.</p>
 <p><span class="bold"><strong>See:</strong></span> <a class="link" href="boost_functional_overloadedfunction/Getting_Started.html" title="Getting Started"> Getting Started</a>, <code class="computeroutput"><a class="link" href="boost/overloaded_function.html" title="Class template overloaded_function">boost::overloaded_function</a></code>. </p>
 </div>

Modified: trunk/libs/functional/overloaded_function/doc/html/BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX.html
==============================================================================
--- trunk/libs/functional/overloaded_function/doc/html/BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX.html (original)
+++ trunk/libs/functional/overloaded_function/doc/html/BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX</pre></div>
 <div class="refsect1">
-<a name="id833202"></a><h2>Description</h2>
+<a name="id872082"></a><h2>Description</h2>
 <p>If this macro is left undefined by the user, it has a default value of 5 (increasing this number might increase compilation time). When defined by the user, this macro must be an integer number greater or equal than 2 (because at least two distinct functions need to be specified in order to define an overload).</p>
 <p><span class="bold"><strong>See:</strong></span> <a class="link" href="boost_functional_overloadedfunction/Getting_Started.html" title="Getting Started"> Getting Started</a>, <code class="computeroutput"><a class="link" href="boost/overloaded_function.html" title="Class template overloaded_function">boost::overloaded_function</a></code>. </p>
 </div>

Modified: trunk/libs/functional/overloaded_function/doc/html/boost/make_overloaded_function.html
==============================================================================
--- trunk/libs/functional/overloaded_function/doc/html/boost/make_overloaded_function.html (original)
+++ trunk/libs/functional/overloaded_function/doc/html/boost/make_overloaded_function.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -36,7 +36,7 @@
   <a class="link" href="overloaded_function.html" title="Class template overloaded_function">overloaded_function</a><span class="special">&lt;</span> <span class="identifier">__function_type__</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span><span class="special">,</span> <span class="identifier">__function_type__</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span><span class="special">,</span><span class="special">...</span><span class="special">&gt;</span>
   <span class="identifier">make_overloaded_function</span><span class="special">(</span><span class="identifier">F1</span> f1<span class="special">,</span> <span class="identifier">F2</span> f2<span class="special">,</span> <span class="special">...</span><span class="special">)</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id832964"></a><h2>Description</h2>
+<a name="id871843"></a><h2>Description</h2>
 <p>This function template creates and returns an <code class="computeroutput"><code class="computeroutput"><a class="link" href="overloaded_function.html" title="Class template overloaded_function">overloaded_function</a></code></code> function object that overloads all the specified functions <code class="computeroutput">f1</code>, <code class="computeroutput">f2</code>, etc.</p>
 <p>The function types are internally determined from the template parameter types so they do not need to be explicitly specified. Therefore, this function template usually has a more concise syntax when compared with <code class="computeroutput"><code class="computeroutput"><a class="link" href="overloaded_function.html" title="Class template overloaded_function">overloaded_function</a></code></code>. This is especially useful when the explicit type of the returned <code class="computeroutput"><code class="computeroutput"><a class="link" href="overloaded_function.html" title="Class template overloaded_function">overloaded_function</a></code></code> does not need to be known (e.g., when used with Boost.Typeof's <code class="computeroutput">BOOST_AUTO</code> (or C++11 <code class="computeroutput">auto</code>) or when the overloaded function object is handled using a function template parameter, see the <a class="link" href="../boost_functional_overloadedfunction/Tutorial.html" title="Tutorial">Tutorial</a>
 section).</p>
 <p>The maximum number of functions to overload is given by the <code class="computeroutput"><code class="computeroutput"><a class="link" href="../BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX.html" title="Macro BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX">BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX</a></code></code> configuration macro.</p>

Modified: trunk/libs/functional/overloaded_function/doc/html/boost/overloaded_function.html
==============================================================================
--- trunk/libs/functional/overloaded_function/doc/html/boost/overloaded_function.html (original)
+++ trunk/libs/functional/overloaded_function/doc/html/boost/overloaded_function.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -35,19 +35,19 @@
 <span class="keyword">class</span> <a class="link" href="overloaded_function.html" title="Class template overloaded_function">overloaded_function</a> <span class="special">{</span>
 <span class="keyword">public</span><span class="special">:</span>
   <span class="comment">// <a class="link" href="overloaded_function.html#boost.overloaded_functionconstruct-copy-destruct">construct/copy/destruct</a></span>
- <a class="link" href="overloaded_function.html#id294124-bb"><span class="identifier">overloaded_function</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">,</span>
+ <a class="link" href="overloaded_function.html#id299641-bb"><span class="identifier">overloaded_function</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">,</span>
                       <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">,</span> <span class="special">...</span><span class="special">)</span><span class="special">;</span>
 
- <span class="comment">// <a class="link" href="overloaded_function.html#id294054-bb">public member functions</a></span>
+ <span class="comment">// <a class="link" href="overloaded_function.html#id299571-bb">public member functions</a></span>
   <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">result_type</span>
- <a class="link" href="overloaded_function.html#id294056-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg1_type</span><span class="special">,</span>
+ <a class="link" href="overloaded_function.html#id299574-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg1_type</span><span class="special">,</span>
              <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg2_type</span><span class="special">,</span> <span class="special">...</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
   <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">result_type</span>
- <a class="link" href="overloaded_function.html#id294083-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg1_type</span><span class="special">,</span>
+ <a class="link" href="overloaded_function.html#id299600-bb"><span class="keyword">operator</span><span class="special">(</span><span class="special">)</span></a><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg1_type</span><span class="special">,</span>
              <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg2_type</span><span class="special">,</span> <span class="special">...</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
 <span class="special">}</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id832217"></a><h2>Description</h2>
+<a name="id870004"></a><h2>Description</h2>
 <p>This function object aggregates together calls to functions of all the specified function types <code class="computeroutput">F1</code>, <code class="computeroutput">F2</code>, etc. The specified function types must have distinct parameters from one another and they must be in the following format (which is the Boost.Function preferred syntax): </p>
 <pre class="programlisting"> <span class="identifier">result_type</span> <span class="special">(</span><span class="identifier">argument1_type</span><span class="special">,</span> <span class="identifier">argumgnet2_type</span><span class="special">,</span> <span class="special">...</span><span class="special">)</span>
 </pre>
@@ -55,27 +55,27 @@
 <p>The maximum number of functions to overload is given by the <code class="computeroutput"><a class="link" href="../BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX.html" title="Macro BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX">BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX</a></code> configuration macro. The maximum number of function parameters for each of the specified function types is given by the <code class="computeroutput"><a class="link" href="../BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX.html" title="Macro BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX">BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX</a></code> configuration macro.</p>
 <p><span class="bold"><strong>See:</strong></span> <a class="link" href="../boost_functional_overloadedfunction/Tutorial.html" title="Tutorial">Tutorial</a> section, <code class="computeroutput"><a class="link" href="make_overloaded_function.html" title="Function template make_overloaded_function">make_overloaded_function</a></code>, <code class="computeroutput"><a class="link" href="../BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX.html" title="Macro BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX">BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_OVERLOAD_MAX</a></code>, <code class="computeroutput"><a class="link" href="../BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX.html" title="Macro BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX">BOOST_FUNCTIONAL_OVERLOADED_FUNCTION_CONFIG_ARITY_MAX</a></code>, Boost.Function. </p>
 <div class="refsect2">
-<a name="id832337"></a><h3>
+<a name="id871216"></a><h3>
 <a name="boost.overloaded_functionconstruct-copy-destruct"></a><code class="computeroutput">overloaded_function</code>
         public
        construct/copy/destruct</h3>
 <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-<pre class="literallayout"><a name="id294124-bb"></a><span class="identifier">overloaded_function</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">,</span>
+<pre class="literallayout"><a name="id299641-bb"></a><span class="identifier">overloaded_function</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">,</span>
                     <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span> <span class="special">&amp;</span><span class="special">,</span> <span class="special">...</span><span class="special">)</span><span class="special">;</span></pre>Construct the overloaded function object. <p>Any function pointer, function reference, and monomorphic function object that can be converted to a <code class="computeroutput">boost::function</code> function object can be specified as parameter. </p>
 </li></ol></div>
 </div>
 <div class="refsect2">
-<a name="id832462"></a><h3>
-<a name="id294054-bb"></a><code class="computeroutput">overloaded_function</code> public member functions</h3>
+<a name="id871341"></a><h3>
+<a name="id299571-bb"></a><code class="computeroutput">overloaded_function</code> public member functions</h3>
 <div class="orderedlist"><ol class="orderedlist" type="1">
 <li class="listitem">
 <pre class="literallayout"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">result_type</span>
-<a name="id294056-bb"></a><span class="keyword">operator</span><span class="special">(</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">function_traits</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg1_type</span><span class="special">,</span>
+<a name="id299574-bb"></a><span class="keyword">operator</span><span class="special">(</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">function_traits</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg1_type</span><span class="special">,</span>
            <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F1</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg2_type</span><span class="special">,</span> <span class="special">...</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Call operator matching the signature of the function type specified as 1st template parameter. <p>This will in turn invoke the call operator of the 1st function passed to the constructor. </p>
 </li>
 <li class="listitem">
 <pre class="literallayout"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">result_type</span>
-<a name="id294083-bb"></a><span class="keyword">operator</span><span class="special">(</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">function_traits</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg1_type</span><span class="special">,</span>
+<a name="id299600-bb"></a><span class="keyword">operator</span><span class="special">(</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">function_traits</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg1_type</span><span class="special">,</span>
            <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_traits</span><span class="special">&lt;</span> <span class="identifier">F2</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">arg2_type</span><span class="special">,</span> <span class="special">...</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span></pre>Call operator matching the signature of the function type specified as 2nd template parameter. <p>This will in turn invoke the call operator of the 2nd function passed to the constructor.</p>
 <p><span class="bold"><strong>Note:</strong></span> Similar call operators are present for all specified function types <code class="computeroutput">F1</code>, <code class="computeroutput">F2</code>, etc (even if not exhaustively listed by this documentation). </p>
 </li>

Modified: trunk/libs/functional/overloaded_function/doc/html/boost_functional_overloadedfunction/Getting_Started.html
==============================================================================
--- trunk/libs/functional/overloaded_function/doc/html/boost_functional_overloadedfunction/Getting_Started.html (original)
+++ trunk/libs/functional/overloaded_function/doc/html/boost_functional_overloadedfunction/Getting_Started.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -41,9 +41,22 @@
       and Platforms</a>
 </h3></div></div></div>
 <p>
- The library was tested by the authors on GCC 4.5.3 (with and without C++11
- features <code class="literal">-std=c++0x</code>) and MSVC 8.0 under Linux, Cygwin,
- and Windows 7.
+ The authors originally developed and tested the library on:
+ </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+ GNU Compiler Collection (GCC) C++ 4.5.3 (with and without C++11 features
+ enabled <code class="computeroutput"><span class="special">-</span><span class="identifier">std</span><span class="special">=</span><span class="identifier">c</span><span class="special">++</span><span class="number">0</span><span class="identifier">x</span></code>)
+ on Cygwin.
+ </li>
+<li class="listitem">
+ Miscrosoft Visual C++ (MSVC) 8.0 on Windows 7.
+ </li>
+</ol></div>
+<p>
+ See the library <a href="http://www.boost.org/development/tests/release/developer/functional-overloaded_function.html" target="_top">regressions
+ test results</a> for detailed information on supported compilers and
+ platforms.
       </p>
 </div>
 <div class="section boost_functional_overloadedfunction_Getting_Started_installation">

Modified: trunk/libs/functional/overloaded_function/doc/html/boost_functional_overloadedfunction/Tutorial.html
==============================================================================
--- trunk/libs/functional/overloaded_function/doc/html/boost_functional_overloadedfunction/Tutorial.html (original)
+++ trunk/libs/functional/overloaded_function/doc/html/boost_functional_overloadedfunction/Tutorial.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -42,23 +42,15 @@
         Consider the following functions with distinct signatures:
       </p>
 <p>
-</p>
-<pre class="programlisting"><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">identity_s</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&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="special">}</span> <span class="comment">// As pointer.</span>
-
-<span class="keyword">int</span> <span class="identifier">identity_i_impl</span><span class="special">(</span><span class="keyword">int</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="special">}</span>
-<span class="keyword">int</span> <span class="special">(&amp;</span><span class="identifier">identity_i</span><span class="special">)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">identity_i_impl</span><span class="special">;</span> <span class="comment">// Function reference.</span>
-
-<span class="keyword">double</span> <span class="identifier">identity_d_impl</span><span class="special">(</span><span class="keyword">double</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="special">}</span>
-<span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span><span class="keyword">double</span> <span class="special">(</span><span class="keyword">double</span><span class="special">)&gt;</span> <span class="identifier">identity_d</span> <span class="special">=</span> <span class="identifier">identity_d_impl</span><span class="special">;</span> <span class="comment">// Functor.</span>
-</pre>
-<p>
+ [identity_decls]
       </p>
 <p>
         This library header <code class="computeroutput"><a class="link" href="../reference.html#header.boost.functional.overloaded_function_hpp" title="Header &lt;boost/functional/overloaded_function.hpp&gt;">boost/functional/overloaded_function.hpp</a></code>
         provides a <code class="computeroutput"><a class="link" href="../boost/overloaded_function.html" title="Class template overloaded_function">boost::overloaded_function</a></code>
         class template that creates a single overloaded function object that can
         be used to call the specified functions instead of using the separate function
- names (see also identity.cpp):
+ names (see also functor.cpp
+ and identity.hpp):
       </p>
 <p>
 </p>
@@ -114,7 +106,8 @@
 <p>
         The <code class="computeroutput"><a class="link" href="../boost/make_overloaded_function.html" title="Function template make_overloaded_function">boost::make_overloaded_function</a></code>
         function template can be useful when used together with Boost.Typeof's
- <code class="computeroutput"><span class="identifier">BOOST_AUTO</span></code> (or C++11 <code class="computeroutput"><span class="keyword">auto</span></code>). For example (see also identity.cpp):
+ <code class="computeroutput"><span class="identifier">BOOST_AUTO</span></code> (or C++11 <code class="computeroutput"><span class="keyword">auto</span></code>). For example (see also make_decl.cpp
+ and identity.hpp):
       </p>
 <p>
 </p>
@@ -143,7 +136,8 @@
         Another case where <code class="computeroutput"><a class="link" href="../boost/make_overloaded_function.html" title="Function template make_overloaded_function">boost::make_overloaded_function</a></code>
         can be useful is when the overloaded function object is passed to a function
         template which can hide the specific <code class="computeroutput"><a class="link" href="../boost/overloaded_function.html" title="Class template overloaded_function">boost::overloaded_function</a></code>
- type using a template parameter. For example (see also identity.cpp):
+ type using a template parameter. For example (see also make_call.cpp
+ and identity.hpp):
       </p>
 <p>
 </p>

Modified: trunk/libs/functional/overloaded_function/doc/html/index.html
==============================================================================
--- trunk/libs/functional/overloaded_function/doc/html/index.html (original)
+++ trunk/libs/functional/overloaded_function/doc/html/index.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -69,16 +69,7 @@
       Consider the following functions with distinct signatures:
     </p>
 <p>
-</p>
-<pre class="programlisting"><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&amp;</span> <span class="identifier">identity_s</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&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="special">}</span> <span class="comment">// As pointer.</span>
-
-<span class="keyword">int</span> <span class="identifier">identity_i_impl</span><span class="special">(</span><span class="keyword">int</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="special">}</span>
-<span class="keyword">int</span> <span class="special">(&amp;</span><span class="identifier">identity_i</span><span class="special">)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">identity_i_impl</span><span class="special">;</span> <span class="comment">// Function reference.</span>
-
-<span class="keyword">double</span> <span class="identifier">identity_d_impl</span><span class="special">(</span><span class="keyword">double</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="special">}</span>
-<span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span><span class="keyword">double</span> <span class="special">(</span><span class="keyword">double</span><span class="special">)&gt;</span> <span class="identifier">identity_d</span> <span class="special">=</span> <span class="identifier">identity_d_impl</span><span class="special">;</span> <span class="comment">// Functor.</span>
-</pre>
-<p>
+ [identity_decls]
     </p>
 <p>
       Instead of calling them using their separate names (here <code class="computeroutput"><span class="identifier">BOOST_CHECK</span></code>
@@ -97,7 +88,8 @@
       It is possible to use this library to create a single overloaded
       function object (or functor)
       named <code class="computeroutput"><span class="identifier">identity</span></code> that aggregates
- together the calls to the specific functions (see also identity.cpp):
+ together the calls to the specific functions (see also functor.cpp
+ and identity.hpp):
     </p>
 <p>
 </p>
@@ -133,7 +125,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: February 20, 2012 at 20:10:59 GMT</small></p></td>
+<td align="left"><p><small>Last revised: March 22, 2012 at 20:51:03 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/functional/overloaded_function/doc/overloaded_function.qbk
==============================================================================
--- trunk/libs/functional/overloaded_function/doc/overloaded_function.qbk (original)
+++ trunk/libs/functional/overloaded_function/doc/overloaded_function.qbk 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -27,7 +27,9 @@
 [def __Boost_Function__ [@http://www.boost.org/libs/function Boost.Function]]
 [def __Boost_Typeof__ [@http://www.boost.org/doc/libs/typeof Boost.Typeof]]
 
-[import ../test/identity.cpp]
+[import ../test/functor.cpp]
+[import ../test/make_decl.cpp]
+[import ../test/make_call.cpp]
 
 This library allows to overload different functions into a single function object.
 
@@ -45,9 +47,9 @@
 
 [identity_calls]
 
-It is possible to use this library to create a single [@http://en.wikipedia.org/wiki/Function_overloading overloaded] function object (or [@http://en.wikipedia.org/wiki/Functor functor]) named `identity` that aggregates together the calls to the specific functions (see also [@../../test/identity.cpp =identity.cpp=]):
+It is possible to use this library to create a single [@http://en.wikipedia.org/wiki/Function_overloading overloaded] function object (or [@http://en.wikipedia.org/wiki/Functor functor]) named `identity` that aggregates together the calls to the specific functions (see also [@../../test/functor.cpp =functor.cpp=] and [@../../test/identity.hpp =identity.hpp=]):
 
-[identity]
+[identity_functor]
 
 Note how the functions are called via a single overloaded function object `identity` instead of using their different names `identity_s`, `identity_i`, and `identity_d`.
 
@@ -59,7 +61,12 @@
 
 [section Compilers and Platforms]
 
-The library was tested by the authors on GCC 4.5.3 (with and without C++11 features [^-std=c++0x]) and MSVC 8.0 under Linux, Cygwin, and Windows 7.
+The authors originally developed and tested the library on:
+
+# GNU Compiler Collection (GCC) C++ 4.5.3 (with and without C++11 features enabled `-std=c++0x`) on Cygwin.
+# Miscrosoft Visual C++ (MSVC) 8.0 on Windows 7.
+
+See the library [@http://www.boost.org/development/tests/release/developer/functional-overloaded_function.html regressions test results] for detailed information on supported compilers and platforms.
 
 [endsect]
 
@@ -87,9 +94,9 @@
 
 [identity_decls]
 
-This library header [headerref boost/functional/overloaded_function.hpp] provides a [classref boost::overloaded_function] class template that creates a single overloaded function object that can be used to call the specified functions instead of using the separate function names (see also [@../../test/identity.cpp =identity.cpp=]):
+This library header [headerref boost/functional/overloaded_function.hpp] provides a [classref boost::overloaded_function] class template that creates a single overloaded function object that can be used to call the specified functions instead of using the separate function names (see also [@../../test/functor.cpp =functor.cpp=] and [@../../test/identity.hpp =identity.hpp=]):
 
-[identity]
+[identity_functor]
 
 Note how function types in the following format are passed as template parameters to [classref boost::overloaded_function] (this is the format of __Boost_Function__'s preferred syntax):
 
@@ -119,7 +126,7 @@
 The function types are automatically deduced from the specified functions and the appropriate [classref boost::overloaded_function] instantiation is returned by [funcref boost::make_overloaded_function].
 
 The [funcref boost::make_overloaded_function] function template can be useful when used together with __Boost_Typeof__'s `BOOST_AUTO` (or C++11 `auto`).
-For example (see also [@../../test/identity.cpp =identity.cpp=]):
+For example (see also [@../../test/make_decl.cpp =make_decl.cpp=] and [@../../test/identity.hpp =identity.hpp=]):
 
 [identity_make]
 
@@ -127,7 +134,7 @@
 Therefore, [funcref boost::make_overloaded_function] provides a more concise syntax in this context when compared with [classref boost::overloaded_function].
 
 Another case where [funcref boost::make_overloaded_function] can be useful is when the overloaded function object is passed to a function template which can hide the specific [classref boost::overloaded_function] type using a template parameter.
-For example (see also [@../../test/identity.cpp =identity.cpp=]):
+For example (see also [@../../test/make_call.cpp =make_call.cpp=] and [@../../test/identity.hpp =identity.hpp=]):
 
 [identity_make_checks]
 [identity_make_call]

Modified: trunk/libs/functional/overloaded_function/test/Jamfile.v2
==============================================================================
--- trunk/libs/functional/overloaded_function/test/Jamfile.v2 (original)
+++ trunk/libs/functional/overloaded_function/test/Jamfile.v2 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -9,5 +9,7 @@
 
 project : requirements <library>/boost//unit_test_framework ;
 
-run identity.cpp ;
+run functor.cpp ;
+run make_decl.cpp ;
+run make_call.cpp ;
 

Added: trunk/libs/functional/overloaded_function/test/functor.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/functional/overloaded_function/test/functor.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -0,0 +1,33 @@
+
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// Home at http://www.boost.org/libs/functional/overloaded_function
+
+#include "identity.hpp"
+#include <boost/functional/overloaded_function.hpp>
+#define BOOST_TEST_MODULE TestFunctor
+#include <boost/test/unit_test.hpp>
+
+BOOST_AUTO_TEST_CASE(test_functor) {
+ //[identity_calls
+ BOOST_CHECK(identity_s("abc") == "abc");
+ BOOST_CHECK(identity_i(123) == 123);
+ BOOST_CHECK(identity_d(1.23) == 1.23);
+ //]
+
+ //[identity_functor
+ boost::overloaded_function<
+ const std::string& (const std::string&)
+ , int (int)
+ , double (double)
+ > identity(identity_s, identity_i, identity_d);
+
+ // All calls via single `identity` function.
+ BOOST_CHECK(identity("abc") == "abc");
+ BOOST_CHECK(identity(123) == 123);
+ BOOST_CHECK(identity(1.23) == 1.23);
+ //]
+}
+

Deleted: trunk/libs/functional/overloaded_function/test/identity.cpp
==============================================================================
--- trunk/libs/functional/overloaded_function/test/identity.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
+++ (empty file)
@@ -1,70 +0,0 @@
-
-// Copyright (C) 2009-2012 Lorenzo Caminiti
-// Distributed under the Boost Software License, Version 1.0
-// (see accompanying file LICENSE_1_0.txt or a copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-// Home at http://www.boost.org/libs/functional/overloaded_function
-
-#include <boost/functional/overloaded_function.hpp>
-#include <boost/function.hpp>
-#define BOOST_TEST_MODULE TestIdentity
-#include <boost/test/unit_test.hpp>
-#include <string>
-
-//[identity_make_checks
-template<typename F>
-void check(F identity) {
- BOOST_CHECK(identity("abc") == "abc");
- BOOST_CHECK(identity(123) == 123);
- BOOST_CHECK(identity(1.23) == 1.23);
-}
-//]
-
-//[identity_decls
-const std::string& identity_s(const std::string& x) { return x; } // As pointer.
-
-int identity_i_impl(int x) { return x; }
-int (&identity_i)(int) = identity_i_impl; // Function reference.
-
-double identity_d_impl(double x) { return x; }
-boost::function<double (double)> identity_d = identity_d_impl; // Functor.
-//]
-
-BOOST_AUTO_TEST_CASE(test_identity) {
- //[identity_calls
- BOOST_CHECK(identity_s("abc") == "abc");
- BOOST_CHECK(identity_i(123) == 123);
- BOOST_CHECK(identity_d(1.23) == 1.23);
- //]
-
- {
- //[identity
- boost::overloaded_function<
- const std::string& (const std::string&)
- , int (int)
- , double (double)
- > identity(identity_s, identity_i, identity_d);
-
- // All calls via single `identity` function.
- BOOST_CHECK(identity("abc") == "abc");
- BOOST_CHECK(identity(123) == 123);
- BOOST_CHECK(identity(1.23) == 1.23);
- //]
- }
-
- {
- //[identity_make
- BOOST_AUTO(identity, boost::make_overloaded_function(
- identity_s, identity_i, identity_d));
-
- BOOST_CHECK(identity("abc") == "abc");
- BOOST_CHECK(identity(123) == 123);
- BOOST_CHECK(identity(1.23) == 1.23);
- //]
- }
-
- //[identity_make_call
- check(boost::make_overloaded_function(identity_s, identity_i, identity_d));
- //]
-}
-

Added: trunk/libs/functional/overloaded_function/test/identity.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/functional/overloaded_function/test/identity.hpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -0,0 +1,25 @@
+
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// Home at http://www.boost.org/libs/functional/overloaded_function
+
+#ifndef IDENTITY_HPP_
+#define IDENTITY_HPP_
+
+#include <boost/function.hpp>
+#include <string>
+
+//[identity_decls
+const std::string& identity_s(const std::string& x) { return x; } // As pointer.
+
+int identity_i_impl(int x) { return x; }
+int (&identity_i)(int) = identity_i_impl; // Function reference.
+
+double identity_d_impl(double x) { return x; }
+boost::function<double (double)> identity_d = identity_d_impl; // Functor.
+//]
+
+#endif // #include guard
+

Added: trunk/libs/functional/overloaded_function/test/make_call.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/functional/overloaded_function/test/make_call.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -0,0 +1,27 @@
+
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// Home at http://www.boost.org/libs/functional/overloaded_function
+
+#include "identity.hpp"
+#include <boost/functional/overloaded_function.hpp>
+#define BOOST_TEST_MODULE TestMakeCall
+#include <boost/test/unit_test.hpp>
+
+//[identity_make_checks
+template<typename F>
+void check(F identity) {
+ BOOST_CHECK(identity("abc") == "abc");
+ BOOST_CHECK(identity(123) == 123);
+ BOOST_CHECK(identity(1.23) == 1.23);
+}
+//]
+
+BOOST_AUTO_TEST_CASE(test_identity) {
+ //[identity_make_call
+ check(boost::make_overloaded_function(identity_s, identity_i, identity_d));
+ //]
+}
+

Added: trunk/libs/functional/overloaded_function/test/make_decl.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/functional/overloaded_function/test/make_decl.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -0,0 +1,23 @@
+
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// Home at http://www.boost.org/libs/functional/overloaded_function
+
+#include "identity.hpp"
+#include <boost/functional/overloaded_function.hpp>
+#define BOOST_TEST_MODULE TestMakeDecl
+#include <boost/test/unit_test.hpp>
+
+BOOST_AUTO_TEST_CASE(test_make_decl) {
+ //[identity_make
+ BOOST_AUTO(identity, boost::make_overloaded_function(
+ identity_s, identity_i, identity_d));
+
+ BOOST_CHECK(identity("abc") == "abc");
+ BOOST_CHECK(identity(123) == 123);
+ BOOST_CHECK(identity(1.23) == 1.23);
+ //]
+}
+

Modified: trunk/libs/local_function/doc/advanced_topics.qbk
==============================================================================
--- trunk/libs/local_function/doc/advanced_topics.qbk (original)
+++ trunk/libs/local_function/doc/advanced_topics.qbk 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -368,6 +368,7 @@
 The [macroref BOOST_LOCAL_FUNCTION] and [macroref BOOST_LOCAL_FUNCTION_TPL] macros internally use `__LINE__` to generate unique identifiers.
 Therefore, if the same macro is expanded more than on time on the same line, the generated identifiers will no longer be unique and the code will not compile.
 (This restriction does not apply to MSVC and other compilers that provide the non-standard `__COUNTER__` macro.)
+Note that the [macroref BOOST_LOCAL_FUNCTION_NAME] macro can always be expanded multiple times on the same line because a unique local function name must be provided for each different expansion (so the is no need for a `BOOST_LOCAL_FUNCTION_NAME_ID` macro).
 ]
 
 Therefore, this library provides the additional macro [macroref BOOST_LOCAL_FUNCTION_ID] which can be expanded multiple times on the same line as long as programmers specify a unique identifier as the macro's first parameter.

Modified: trunk/libs/local_function/doc/examples.qbk
==============================================================================
--- trunk/libs/local_function/doc/examples.qbk (original)
+++ trunk/libs/local_function/doc/examples.qbk 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -17,11 +17,11 @@
 This code only works on compilers that support the statement expression GCC extension or that support __CPP11_lambda__ functions.
 ]
 
-For example (see also [@../../example/gcc_lambda.cpp =gcc_lambda.cpp=] and [@../../example/gcc_lambda_cpp11.cpp =gcc_lambda_cpp11.cpp=]):
+For example (see also [@../../example/gcc_lambda.cpp =gcc_lambda.cpp=] and [@../../example/gcc_lambda_cxx11.cpp =gcc_lambda_cxx11.cpp=]):
 
 [table
     [ [With Local Functions (GCC only)] [C++11 Lambdas] ]
- [ [[gcc_lambda]] [[gcc_lambda_cpp11]] ]
+ [ [[gcc_lambda]] [[gcc_lambda_cxx11]] ]
 ]
 
 Where the macros are defined in [@../../example/gcc_lambda.hpp =gcc_lambda.hpp=].

Modified: trunk/libs/local_function/doc/getting_started.qbk
==============================================================================
--- trunk/libs/local_function/doc/getting_started.qbk (original)
+++ trunk/libs/local_function/doc/getting_started.qbk 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -30,13 +30,13 @@
 
 The implementation of this library uses preprocessor and template meta-programming (as supported by __Boost_Preprocessor__ and __Boost_MPL__), templates with partial specializations and function pointers (similarly to __Boost_Function__).
 As a consequence, this library is fairly demanding on compilers' compliance with the __CPP03__ standard.
-At present, this library has been successfully compiled and tested on the following compilers and platforms:
+The authors originally developed and tested the library on:
 
-# GNU Compiler Collection (GCC) 4.5.1 on Ubuntu Linux 10.
+# GNU Compiler Collection (GCC) C++ 4.5.1 on Ubuntu Linux 10.
 # GCC 4.3.4 and 4.5.3 (with and without __CPP11__ features enabled `-std=c++0x`) on Cygwin.
-# Miscrosoft Visual Studio Compiler (MSVC) 8.0 on Windows XP and Windows 7.
+# Miscrosoft Visual C++ (MSVC) 8.0 on Windows XP and Windows 7.
 
-This library has not yet been tested on any other compiler and platform.
+See the library [@http://www.boost.org/development/tests/release/developer/local_function.html regressions test results] for detailed information on supported compilers and platforms.
 
 [endsect]
 

Modified: trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION.html
==============================================================================
--- trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION.html (original)
+++ trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_FUNCTION(declarations)</pre></div>
 <div class="refsect1">
-<a name="id880472"></a><h2>Description</h2>
+<a name="id869098"></a><h2>Description</h2>
 <p>This macro must be used within a declarative context, it must follow the local function result type, it must be followed by the local function body code, and then by the <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION_NAME.html" title="Macro BOOST_LOCAL_FUNCTION_NAME">BOOST_LOCAL_FUNCTION_NAME</a></code> macro (see the <a class="link" href="boost_localfunction/Tutorial.html" title="Tutorial">Tutorial</a> and <a class="link" href="boost_localfunction/Advanced_Topics.html" title="Advanced Topics"> Advanced Topics</a> sections): </p>
 <pre class="programlisting"><span class="special">{</span> <span class="comment">// Some declarative context.</span>
     <span class="special">...</span>

Modified: trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX.html
==============================================================================
--- trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX.html (original)
+++ trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX</pre></div>
 <div class="refsect1">
-<a name="id882737"></a><h2>Description</h2>
+<a name="id870681"></a><h2>Description</h2>
 <p>If programmers leave this configuration macro undefined, its default value is <code class="computeroutput">5</code> (increasing this number might increase compilation time). When defined by programmers, this macro must be a non-negative integer number.</p>
 <p><span class="bold"><strong>Note:</strong></span> This macro specifies the maximum number of local function parameters excluding bound variables (which are instead specified by <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX.html" title="Macro BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX">BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX</a></code>).</p>
 <p><span class="bold"><strong>See:</strong></span> <a class="link" href="boost_localfunction/Tutorial.html" title="Tutorial">Tutorial</a> section, <a class="link" href="boost_localfunction/Getting_Started.html" title="Getting Started"> Getting Started</a> section, <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX.html" title="Macro BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX">BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX</a></code>. </p>

Modified: trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX.html
==============================================================================
--- trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX.html (original)
+++ trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_FUNCTION_CONFIG_BIND_MAX</pre></div>
 <div class="refsect1">
-<a name="id882811"></a><h2>Description</h2>
+<a name="id870755"></a><h2>Description</h2>
 <p>If programmers leave this configuration macro undefined, its default value is <code class="computeroutput">10</code> (increasing this number might increase compilation time). When defined by programmers, this macro must be a non-negative integer number.</p>
 <p><span class="bold"><strong>Note:</strong></span> This macro specifies the maximum number of bound variables excluding local function parameters (which are instead specified by <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX.html" title="Macro BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX">BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX</a></code>).</p>
 <p><span class="bold"><strong>See:</strong></span> <a class="link" href="boost_localfunction/Tutorial.html" title="Tutorial">Tutorial</a> section, <a class="link" href="boost_localfunction/Getting_Started.html" title="Getting Started"> Getting Started</a> section, <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX.html" title="Macro BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX">BOOST_LOCAL_FUNCTION_CONFIG_ARITY_MAX</a></code>. </p>

Modified: trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_ID.html
==============================================================================
--- trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_ID.html (original)
+++ trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_ID.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_FUNCTION_ID(id, within_template, declarations)</pre></div>
 <div class="refsect1">
-<a name="id882031"></a><h2>Description</h2>
+<a name="id869962"></a><h2>Description</h2>
 <p>This macro is equivalent to <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION.html" title="Macro BOOST_LOCAL_FUNCTION">BOOST_LOCAL_FUNCTION</a></code> but it can be expanded multiple times on the same line if different identifiers <code class="computeroutput">id</code> are provided for each expansion (see <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION.html" title="Macro BOOST_LOCAL_FUNCTION">BOOST_LOCAL_FUNCTION</a></code> for more detail).</p>
 <p><span class="bold"><strong>Parameters:</strong></span> </p>
 <div class="informaltable"><table class="table">
@@ -59,7 +59,8 @@
 <p>
 </p>
 <p><span class="bold"><strong>Note:</strong></span> This macro can be useful when the local function macros are expanded within user-defined macros (because macros all expand on the same line). On some compilers (e.g., MSVC which supports the non standard <code class="computeroutput">__COUNTER__</code> macro) it might not be necessary to use this macro but the use of this macro when expanding multiple local function macros on the same line is always necessary to ensure portability (this is because this library can only portably use <code class="computeroutput">__LINE__</code> to internally generate unique identifiers).</p>
-<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput">BOOST_SCOPE_EXIT_END_ID</code>, <code class="computeroutput">BOOST_SCOPE_EXIT_ALL_ID</code>, <code class="computeroutput">BOOST_SCOPE_EXIT</code>, <code class="computeroutput">BOOST_SCOPE_EXIT_TPL</code>. </p>
+<p><span class="bold"><strong>Note:</strong></span> The <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION_NAME.html" title="Macro BOOST_LOCAL_FUNCTION_NAME">BOOST_LOCAL_FUNCTION_NAME</a></code> macro can always be expanded multiple times on the same line because a unique local function name must be provided for each different expansion (so the is no need for a <code class="computeroutput">BOOST_LOCAL_FUNCTION_NAME_ID</code> macro).</p>
+<p><span class="bold"><strong>See:</strong></span> <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION.html" title="Macro BOOST_LOCAL_FUNCTION">BOOST_LOCAL_FUNCTION</a></code>, <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION_TPL.html" title="Macro BOOST_LOCAL_FUNCTION_TPL">BOOST_LOCAL_FUNCTION_TPL</a></code>. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_NAME.html
==============================================================================
--- trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_NAME.html (original)
+++ trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_NAME.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_FUNCTION_NAME(qualified_function_name)</pre></div>
 <div class="refsect1">
-<a name="id882215"></a><h2>Description</h2>
+<a name="id870159"></a><h2>Description</h2>
 <p>This macro must follow the local function body code block <code class="computeroutput">{ ... }</code>: </p>
 <pre class="programlisting"><span class="special">{</span> <span class="comment">// Some declarative context.</span>
     <span class="special">...</span>

Modified: trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_TPL.html
==============================================================================
--- trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_TPL.html (original)
+++ trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_TPL.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_FUNCTION_TPL(declarations)</pre></div>
 <div class="refsect1">
-<a name="id881158"></a><h2>Description</h2>
+<a name="id869783"></a><h2>Description</h2>
 <p>This macro must be used instead of <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION.html" title="Macro BOOST_LOCAL_FUNCTION">BOOST_LOCAL_FUNCTION</a></code> when declaring a local function within a template. A part from that, this macro has the exact same syntax as <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION.html" title="Macro BOOST_LOCAL_FUNCTION">BOOST_LOCAL_FUNCTION</a></code> (see <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION.html" title="Macro BOOST_LOCAL_FUNCTION">BOOST_LOCAL_FUNCTION</a></code> for more information): </p>
 <pre class="programlisting"><span class="special">{</span> <span class="comment">// Some declarative context with a template.</span>
     <span class="special">...</span>

Modified: trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_TYPEOF.html
==============================================================================
--- trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_TYPEOF.html (original)
+++ trunk/libs/local_function/doc/html/BOOST_LOCAL_FUNCTION_TYPEOF.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_FUNCTION_TYPEOF(bound_variable_name)</pre></div>
 <div class="refsect1">
-<a name="id882524"></a><h2>Description</h2>
+<a name="id870468"></a><h2>Description</h2>
 <p>This macro can be used within the local functions body to refer to the bound variable types so to declare local variables, check concepts (using Boost.ConceptCheck), etc (see the <a class="link" href="boost_localfunction/Advanced_Topics.html" title="Advanced Topics"> Advanced Topics</a> section). This way the local function can be programmed entirely without explicitly specifying the bound variable types thus facilitating maintenance (e.g., if the type of a bound variable changes in the enclosing scope, the local function code does not have to change).</p>
 <p><span class="bold"><strong>Parameters:</strong></span> </p>
 <div class="informaltable"><table class="table">

Modified: trunk/libs/local_function/doc/html/boost_localfunction/Advanced_Topics.html
==============================================================================
--- trunk/libs/local_function/doc/html/boost_localfunction/Advanced_Topics.html (original)
+++ trunk/libs/local_function/doc/html/boost_localfunction/Advanced_Topics.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -909,7 +909,7 @@
 <span class="identifier">BOOST_AUTO_TEST_CASE</span><span class="special">(</span><span class="identifier">test_same_line</span><span class="special">)</span>
 <span class="special">{</span>
     <span class="keyword">int</span> <span class="identifier">delta</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
- <span class="identifier">LOCAL_INC_DEC</span><span class="special">(</span><span class="identifier">delta</span><span class="special">)</span> <span class="comment">// Declare local functions on same line using `_ID`.</span>
+ <span class="identifier">LOCAL_INC_DEC</span><span class="special">(</span><span class="identifier">delta</span><span class="special">)</span> <span class="comment">// Multiple local functions on same line.</span>
 
     <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">dec</span><span class="special">(</span><span class="identifier">inc</span><span class="special">(</span><span class="number">123</span><span class="special">))</span> <span class="special">==</span> <span class="number">123</span><span class="special">);</span>
 <span class="special">}</span>
@@ -1346,7 +1346,11 @@
           to generate unique identifiers. Therefore, if the same macro is expanded
           more than on time on the same line, the generated identifiers will no longer
           be unique and the code will not compile. (This restriction does not apply
- to MSVC and other compilers that provide the non-standard <code class="computeroutput"><span class="identifier">__COUNTER__</span></code> macro.)
+ to MSVC and other compilers that provide the non-standard <code class="computeroutput"><span class="identifier">__COUNTER__</span></code> macro.) Note that the <code class="computeroutput"><a class="link" href="../BOOST_LOCAL_FUNCTION_NAME.html" title="Macro BOOST_LOCAL_FUNCTION_NAME">BOOST_LOCAL_FUNCTION_NAME</a></code> macro
+ can always be expanded multiple times on the same line because a unique
+ local function name must be provided for each different expansion (so the
+ is no need for a <code class="computeroutput"><span class="identifier">BOOST_LOCAL_FUNCTION_NAME_ID</span></code>
+ macro).
         </p></div>
 <div class="footnote"><p><sup>[<a id="ftn.boost_localfunction.Advanced_Topics.limitations__operators__etc_.f1" href="#boost_localfunction.Advanced_Topics.limitations__operators__etc_.f1" class="para">27</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> This is the because a local

Modified: trunk/libs/local_function/doc/html/boost_localfunction/Alternatives.html
==============================================================================
--- trunk/libs/local_function/doc/html/boost_localfunction/Alternatives.html (original)
+++ trunk/libs/local_function/doc/html/boost_localfunction/Alternatives.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -966,14 +966,14 @@
               <p>
                 <span class="bold"><strong>Compiled with <code class="literal">bjam release ...</code>
                 for maximum optimization (<code class="literal">-O3 -finline-functions</code>)</strong></span>
- <span class="inlinemediaobject"><img src="../../../example/profile_gcc_cpp11_release.png" width="1170" alt="profile_gcc_cpp11_release"></span>
+ <span class="inlinemediaobject"><img src="../../../example/profile_gcc_cxx11_release.png" width="1170" alt="profile_gcc_cxx11_release"></span>
               </p>
             </td></tr>
 <tr><td>
               <p>
                 <span class="bold"><strong>Compiled with <code class="literal">bjam debug ...</code>
                 for no optimization (<code class="literal">-O0 -fno-inline</code>)</strong></span>
- <span class="inlinemediaobject"><img src="../../../example/profile_gcc_cpp11_debug.png" width="1170" alt="profile_gcc_cpp11_debug"></span>
+ <span class="inlinemediaobject"><img src="../../../example/profile_gcc_cxx11_debug.png" width="1170" alt="profile_gcc_cxx11_debug"></span>
               </p>
             </td></tr>
 </tbody>

Modified: trunk/libs/local_function/doc/html/boost_localfunction/Examples.html
==============================================================================
--- trunk/libs/local_function/doc/html/boost_localfunction/Examples.html (original)
+++ trunk/libs/local_function/doc/html/boost_localfunction/Examples.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -66,7 +66,7 @@
 </table></div>
 <p>
         For example (see also gcc_lambda.cpp
- and gcc_lambda_cpp11.cpp):
+ and gcc_lambda_cxx11.cpp):
       </p>
 <div class="informaltable"><table class="table">
 <colgroup>

Modified: trunk/libs/local_function/doc/html/boost_localfunction/Getting_Started.html
==============================================================================
--- trunk/libs/local_function/doc/html/boost_localfunction/Getting_Started.html (original)
+++ trunk/libs/local_function/doc/html/boost_localfunction/Getting_Started.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -78,12 +78,11 @@
         with partial specializations and function pointers (similarly to Boost.Function).
         As a consequence, this library is fairly demanding on compilers' compliance
         with the C++03
- standard. At present, this library has been successfully compiled and tested
- on the following compilers and platforms:
+ standard. The authors originally developed and tested the library on:
       </p>
 <div class="orderedlist"><ol class="orderedlist" type="1">
 <li class="listitem">
- GNU Compiler Collection (GCC) 4.5.1 on Ubuntu Linux 10.
+ GNU Compiler Collection (GCC) C++ 4.5.1 on Ubuntu Linux 10.
           </li>
 <li class="listitem">
             GCC 4.3.4 and 4.5.3 (with and without C++11
@@ -91,12 +90,13 @@
             on Cygwin.
           </li>
 <li class="listitem">
- Miscrosoft Visual Studio Compiler (MSVC) 8.0 on Windows XP and Windows
- 7.
+ Miscrosoft Visual C++ (MSVC) 8.0 on Windows XP and Windows 7.
           </li>
 </ol></div>
 <p>
- This library has not yet been tested on any other compiler and platform.
+ See the library <a href="http://www.boost.org/development/tests/release/developer/local_function.html" target="_top">regressions
+ test results</a> for detailed information on supported compilers and
+ platforms.
       </p>
 </div>
 <div class="section boost_localfunction_Getting_Started_installation">

Modified: trunk/libs/local_function/doc/html/boost_localfunction/No_Variadic_Macros.html
==============================================================================
--- trunk/libs/local_function/doc/html/boost_localfunction/No_Variadic_Macros.html (original)
+++ trunk/libs/local_function/doc/html/boost_localfunction/No_Variadic_Macros.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -113,16 +113,138 @@
     </p>
 <h6>
 <a name="boost_localfunction.No_Variadic_Macros.h1"></a>
- <span><a name="boost_localfunction.No_Variadic_Macros.an_example"></a></span><a class="link" href="No_Variadic_Macros.html#boost_localfunction.No_Variadic_Macros.an_example">An
- Example</a>
+ <span><a name="boost_localfunction.No_Variadic_Macros.examples"></a></span><a class="link" href="No_Variadic_Macros.html#boost_localfunction.No_Variadic_Macros.examples">Examples</a>
     </h6>
 <p>
- The following example shows a bit of all the different macro parameter combinations
- using the sequence syntax (see also seq.cpp):
- </p>
-<p>
- [seq]
+ For reference, the following is a list of most of the examples presented in
+ this documentation reprogrammed using the sequence syntax instead of the comma-separated
+ syntax (in alphabetic order):
     </p>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+ <p>
+ Files
+ </p>
+ </th></tr></thead>
+<tbody>
+<tr><td>
+ <p>
+ add_classifiers_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ add_default_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ add_except_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ add_inline_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ add_params_only_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ add_template_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ add_this_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ add_typed_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ add_with_default_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ all_decl_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ factorial_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ macro_commas_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ nesting_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ overload_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ return_assign_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ return_derivative_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ return_inc_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ return_setget_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ return_this_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ same_line_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ transform_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ typeof_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ typeof_template_seq.cpp
+ </p>
+ </td></tr>
+</tbody>
+</table></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
 <td align="left"></td>

Modified: trunk/libs/local_function/doc/html/index.html
==============================================================================
--- trunk/libs/local_function/doc/html/index.html (original)
+++ trunk/libs/local_function/doc/html/index.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -145,7 +145,7 @@
     <span class="keyword">int</span> <span class="identifier">nums</span><span class="special">[]</span> <span class="special">=</span> <span class="special">{</span><span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">};</span>
     <span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">nums</span><span class="special">,</span> <span class="identifier">nums</span> <span class="special">+</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">add</span><span class="special">);</span> <span class="comment">// Pass it to an algorithm.</span>
 
- <span class="identifier">BOOST_CHECK</span><span class="special">(</span> <span class="identifier">sum</span> <span class="special">==</span> <span class="number">60</span> <span class="special">);</span> <span class="comment">// Assert final summation value.</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">sum</span> <span class="special">==</span> <span class="number">60</span><span class="special">);</span> <span class="comment">// Assert final summation value.</span>
 <span class="special">}</span>
 </pre>
 <p>
@@ -224,7 +224,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: March 19, 2012 at 22:33:31 GMT</small></p></td>
+<td align="left"><p><small>Last revised: March 22, 2012 at 20:50:10 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/local_function/doc/local_function.qbk
==============================================================================
--- trunk/libs/local_function/doc/local_function.qbk (original)
+++ trunk/libs/local_function/doc/local_function.qbk 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -88,7 +88,7 @@
 [import ../test/same_line.cpp]
 
 [import ../example/gcc_lambda.cpp]
-[import ../example/gcc_lambda_cpp11.cpp]
+[import ../example/gcc_lambda_cxx11.cpp]
 [import ../example/const_block_error.cpp]
 [import ../example/scope_exit.cpp]
 [import ../example/scope_exit.hpp]

Modified: trunk/libs/local_function/doc/no_variadic_macros.qbk
==============================================================================
--- trunk/libs/local_function/doc/no_variadic_macros.qbk (original)
+++ trunk/libs/local_function/doc/no_variadic_macros.qbk 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,11 +33,36 @@
 
 [ten_void]
 
-[h5 An Example]
+[h5 Examples]
 
-The following example shows a bit of all the different macro parameter combinations using the sequence syntax (see also [@../../test/seq.cpp =seq.cpp=]):
+For reference, the following is a list of most of the examples presented in this documentation reprogrammed using the sequence syntax instead of the comma-separated syntax (in alphabetic order):
 
-[seq]
+[table
+ [ [Files] ]
+ [ [[@../../test/add_classifiers_seq.cpp =add_classifiers_seq.cpp=]] ]
+ [ [[@../../test/add_default_seq.cpp =add_default_seq.cpp=]] ]
+ [ [[@../../test/add_except_seq.cpp =add_except_seq.cpp=]] ]
+ [ [[@../../test/add_inline_seq.cpp =add_inline_seq.cpp=]] ]
+ [ [[@../../test/add_params_only_seq.cpp =add_params_only_seq.cpp=]] ]
+ [ [[@../../test/add_template_seq.cpp =add_template_seq.cpp=]] ]
+ [ [[@../../test/add_this_seq.cpp =add_this_seq.cpp=]] ]
+ [ [[@../../test/add_typed_seq.cpp =add_typed_seq.cpp=]] ]
+ [ [[@../../test/add_with_default_seq.cpp =add_with_default_seq.cpp=]] ]
+ [ [[@../../test/all_decl_seq.cpp =all_decl_seq.cpp=]] ]
+ [ [[@../../test/factorial_seq.cpp =factorial_seq.cpp=]] ]
+ [ [[@../../test/macro_commas_seq.cpp =macro_commas_seq.cpp=]] ]
+ [ [[@../../test/nesting_seq.cpp =nesting_seq.cpp=]] ]
+ [ [[@../../test/overload_seq.cpp =overload_seq.cpp=]] ]
+ [ [[@../../test/return_assign_seq.cpp =return_assign_seq.cpp=]] ]
+ [ [[@../../test/return_derivative_seq.cpp =return_derivative_seq.cpp=]] ]
+ [ [[@../../test/return_inc_seq.cpp =return_inc_seq.cpp=]] ]
+ [ [[@../../test/return_setget_seq.cpp =return_setget_seq.cpp=]] ]
+ [ [[@../../test/return_this_seq.cpp =return_this_seq.cpp=]] ]
+ [ [[@../../test/same_line_seq.cpp =same_line_seq.cpp=]] ]
+ [ [[@../../test/transform_seq.cpp =transform_seq.cpp=]] ]
+ [ [[@../../test/typeof_seq.cpp =typeof_seq.cpp=]] ]
+ [ [[@../../test/typeof_template_seq.cpp =typeof_template_seq.cpp=]] ]
+]
 
 [endsect]
 

Modified: trunk/libs/local_function/example/gcc_lambda_cxx11.cpp
==============================================================================
--- trunk/libs/local_function/example/gcc_lambda_cxx11.cpp (original)
+++ trunk/libs/local_function/example/gcc_lambda_cxx11.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -8,12 +8,12 @@
 #include <boost/config.hpp>
 #ifndef BOOST_NO_LAMBDAS
 
-#define BOOST_TEST_MODULE TestGccLambdaCpp11
+#define BOOST_TEST_MODULE TestGccLambdaCxx11
 #include <boost/test/unit_test.hpp>
 #include <algorithm>
 
-BOOST_AUTO_TEST_CASE(test_gcc_lambda_cpp11) {
- //[gcc_lambda_cpp11
+BOOST_AUTO_TEST_CASE(test_gcc_lambda_cxx11) {
+ //[gcc_lambda_cxx11
     int val = 2;
     int nums[] = {1, 2, 3};
     int* end = nums + 3;

Modified: trunk/libs/local_function/test/add_lambda.cpp
==============================================================================
--- trunk/libs/local_function/test/add_lambda.cpp (original)
+++ trunk/libs/local_function/test/add_lambda.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -25,7 +25,7 @@
     int nums[] = {2, 3};
     std::for_each(nums, nums + 2, add); // Pass it to an algorithm.
     
- BOOST_CHECK( sum == 60 ); // Assert final summation value.
+ BOOST_CHECK(sum == 60); // Assert final summation value.
 }
 //]
 

Modified: trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html (original)
+++ trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT(capture_list)</pre></div>
 <div class="refsect1">
-<a name="id889067"></a><h2>Description</h2>
+<a name="id884643"></a><h2>Description</h2>
 <p>The scope exit declaration schedules the execution of the scope exit body at the exit of the enclosing scope:</p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some local scope.</span>
         <span class="special">...</span>

Modified: trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL.html (original)
+++ trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT_ALL(capture_list)</pre></div>
 <div class="refsect1">
-<a name="id890352"></a><h2>Description</h2>
+<a name="id887021"></a><h2>Description</h2>
 <p>This macro accepts a capture list starting with either <code class="computeroutput">&amp;</code> or <code class="computeroutput">=</code> to capture all variables in scope by reference or value respectively (following the same syntax of C++11 lambdas). A part from that, this macro works like <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> (see <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> for more information).</p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some local scope.</span>
         <span class="special">...</span>

Modified: trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL_ID.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL_ID.html (original)
+++ trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL_ID.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT_ALL_ID(id, capture_list)</pre></div>
 <div class="refsect1">
-<a name="id890890"></a><h2>Description</h2>
+<a name="id887559"></a><h2>Description</h2>
 <p>This macro is equivalent to <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code> but it can be expanded multiple times on the same line if different identifiers <code class="computeroutput">id</code> are provided for each expansion (see <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code> for more detail).</p>
 <p><span class="bold"><strong>Parameters:</strong></span> </p>
 <div class="informaltable"><table class="table">

Modified: trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_CONFIG_USE_LAMBDA_IMPL.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_CONFIG_USE_LAMBDA_IMPL.html (original)
+++ trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_CONFIG_USE_LAMBDA_IMPL.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT_CONFIG_USE_LAMBDA_IMPL</pre></div>
 <div class="refsect1">
-<a name="id891389"></a><h2>Description</h2>
+<a name="id888058"></a><h2>Description</h2>
 <p>If programmers define this configuration macro on a C++11 compiler, lambda functions will be used to implement the <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> macro. By default this macro is not defined.</p>
 <p><span class="bold"><strong>Note:</strong></span> When <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> is implemented using lambda, the semantics of its variable captures follow the semantics of C++11 lambda captures which are in general different from the legacy capture semantics of this library (e.g., C++11 lambdas require to capture data members via capturing the object <code class="computeroutput">this</code> while this library always allowed to capture data members directly). Therefore, when this configuration macro is defined, <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> is no longer backward compatible.</p>
 <p>A semicolon <code class="computeroutput">;</code> can simply be used instead of <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_END.html" title="Macro BOOST_SCOPE_EXIT_END">BOOST_SCOPE_EXIT_END</a></code> when this configuration macro is defined.</p>

Modified: trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END.html (original)
+++ trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT_END</pre></div>
 <div class="refsect1">
-<a name="id891039"></a><h2>Description</h2>
+<a name="id887708"></a><h2>Description</h2>
 <p>This macro must follow the closing curly bracket <code class="computeroutput">}</code> that ends the scope exit body:</p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some local scope.</span>
         <span class="special">...</span>

Modified: trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END_ID.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END_ID.html (original)
+++ trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END_ID.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT_END_ID(id)</pre></div>
 <div class="refsect1">
-<a name="id891264"></a><h2>Description</h2>
+<a name="id887933"></a><h2>Description</h2>
 <p>This macro is equivalent to <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_END.html" title="Macro BOOST_SCOPE_EXIT_END">BOOST_SCOPE_EXIT_END</a></code> but it can be expanded multiple times on the same line if different identifiers <code class="computeroutput">id</code> are provided for each expansion (see <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_END.html" title="Macro BOOST_SCOPE_EXIT_END">BOOST_SCOPE_EXIT_END</a></code> for more detail).</p>
 <p><span class="bold"><strong>Parameters:</strong></span> </p>
 <div class="informaltable"><table class="table">

Modified: trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ID.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ID.html (original)
+++ trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ID.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT_ID(id, within_template, capture_list)</pre></div>
 <div class="refsect1">
-<a name="id890158"></a><h2>Description</h2>
+<a name="id886827"></a><h2>Description</h2>
 <p>This macro is equivalent to <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> but it can be expanded multiple times on the same line if different identifiers <code class="computeroutput">id</code> are provided for each expansion (see <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> for more detail).</p>
 <p><span class="bold"><strong>Parameters:</strong></span> </p>
 <div class="informaltable"><table class="table">

Modified: trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_TPL.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_TPL.html (original)
+++ trunk/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_TPL.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT_TPL(capture_list)</pre></div>
 <div class="refsect1">
-<a name="id889625"></a><h2>Description</h2>
+<a name="id886294"></a><h2>Description</h2>
 <p>Various versions of the GCC compiler do not compile <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> inside function templates. As a workaround, <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code> should be used instead of <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> in these cases:</p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some local scope.</span>
         <span class="special">...</span>

Modified: trunk/libs/scope_exit/doc/html/index.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/index.html (original)
+++ trunk/libs/scope_exit/doc/html/index.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -124,7 +124,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: March 19, 2012 at 22:24:35 GMT</small></p></td>
+<td align="left"><p><small>Last revised: March 22, 2012 at 20:40:16 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/scope_exit/doc/html/scope_exit/Alternatives.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/scope_exit/Alternatives.html (original)
+++ trunk/libs/scope_exit/doc/html/scope_exit/Alternatives.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -286,8 +286,8 @@
     <span class="keyword">bool</span> <span class="identifier">commit</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
 
     <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">a_person</span><span class="special">);</span>
- <span class="identifier">scope_exit</span> <span class="identifier">on_exit1</span><span class="special">([&amp;</span><span class="identifier">commit</span><span class="special">,</span> <span class="special">&amp;</span><span class="identifier">persons_</span><span class="special">](</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span> <span class="comment">// Use C++11 lambda.</span>
- <span class="keyword">if</span><span class="special">(!</span><span class="identifier">commit</span><span class="special">)</span> <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
+ <span class="identifier">scope_exit</span> <span class="identifier">on_exit1</span><span class="special">([&amp;</span><span class="identifier">commit</span><span class="special">,</span> <span class="keyword">this</span><span class="special">](</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span> <span class="comment">// Use C++11 lambda.</span>
+ <span class="keyword">if</span><span class="special">(!</span><span class="identifier">commit</span><span class="special">)</span> <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span> <span class="comment">// `persons_` via captured `this`.</span>
     <span class="special">});</span>
 
     <span class="comment">// ...</span>

Modified: trunk/libs/scope_exit/doc/html/scope_exit/Getting_Started.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/scope_exit/Getting_Started.html (original)
+++ trunk/libs/scope_exit/doc/html/scope_exit/Getting_Started.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -40,14 +40,17 @@
       and Platforms</a>
 </h3></div></div></div>
 <p>
- The library should be usable on any compiler that supports Boost.Typeof
- except:
+ The authors originally developed and tested the library on GNU Compiler Collection
+ (GCC) C++ 3.3, 3.4, 4.1, 4.2, 4.5.3 (with and without C++11 features <code class="literal">-std=c++0x</code>),
+ Microsoft Visual C++ (MSVC) 8.0, and Intel 10.1 under Linux, Cygwin, and
+ Windows 7. However, this library should be usable on any compiler that supports
+ Boost.Typeof except:
       </p>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
             MSVC 7.1 and 8.0 fail to link if a function with <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">Boost.ScopeExit</a>
- is included by multiple translation units. Furthermore, on MSVC 7.1 and
- 8.0 it is possible to capture the object <code class="computeroutput"><span class="identifier">this_</span></code>
+ is included by multiple translation units. Furthermore, on MSVC it is
+ possible to capture the object <code class="computeroutput"><span class="identifier">this_</span></code>
             only with native Boost.Typeof
             (and not in type-of emulation
             mode).
@@ -59,9 +62,9 @@
           </li>
 </ul></div>
 <p>
- The authors tested the library on GCC 3.3, 3.4, 4.1, 4.2, 4.5.3 (with and
- without C++11 features <code class="literal">-std=c++0x</code>), MSVC 8.0, and Intel
- 10.1 under Linux, Cygwin, and Windows 7.
+ See the library <a href="http://www.boost.org/development/tests/release/developer/scope_exit.html" target="_top">regression
+ test results</a> for detailed information on supported compilers and
+ platforms.
       </p>
 </div>
 <div class="section scope_exit_Getting_Started_installation">

Modified: trunk/libs/scope_exit/doc/html/scope_exit/No_Variadic_Macros.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/scope_exit/No_Variadic_Macros.html (original)
+++ trunk/libs/scope_exit/doc/html/scope_exit/No_Variadic_Macros.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -131,9 +131,9 @@
       <span><a name="scope_exit.No_Variadic_Macros.examples"></a></span><a class="link" href="No_Variadic_Macros.html#scope_exit.No_Variadic_Macros.examples">Examples</a>
     </h6>
 <p>
- The following is a list of most of the examples presented in this documentation
- reprogrammed using the Boost.Preprocessor
- sequence syntax instead of the comma-separated list:
+ For reference, the following is a list of most of the examples presented in
+ this documentation reprogrammed using the Boost.Preprocessor
+ sequence syntax instead of comma-separated lists (in alphabetic order):
     </p>
 <div class="informaltable"><table class="table">
 <colgroup><col></colgroup>
@@ -145,12 +145,17 @@
 <tbody>
 <tr><td>
               <p>
- world_checkpoint_seq.cpp
+ same_line_seq.cpp
               </p>
             </td></tr>
 <tr><td>
               <p>
- world_this_seq.cpp
+ scope_guard_seq.cpp
+ </p>
+ </td></tr>
+<tr><td>
+ <p>
+ try_catch_seq.cpp
               </p>
             </td></tr>
 <tr><td>
@@ -160,17 +165,17 @@
             </td></tr>
 <tr><td>
               <p>
- world_tpl_seq.cpp
+ world_checkpoint_seq.cpp
               </p>
             </td></tr>
 <tr><td>
               <p>
- try_catch_seq.cpp
+ world_this_seq.cpp
               </p>
             </td></tr>
 <tr><td>
               <p>
- scope_guard_seq.cpp
+ world_tpl_seq.cpp
               </p>
             </td></tr>
 </tbody>

Modified: trunk/libs/scope_exit/doc/html/scope_exit/Tutorial.html
==============================================================================
--- trunk/libs/scope_exit/doc/html/scope_exit/Tutorial.html (original)
+++ trunk/libs/scope_exit/doc/html/scope_exit/Tutorial.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -427,13 +427,13 @@
     <span class="keyword">int</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">delta</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
 
     <span class="special">{</span>
- <span class="identifier">SCOPE_EXIT_INC_DEC</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">delta</span><span class="special">)</span>
+ <span class="identifier">SCOPE_EXIT_INC_DEC</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">delta</span><span class="special">)</span> <span class="comment">// Multiple scope exits on same line.</span>
     <span class="special">}</span>
     <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">x</span> <span class="special">==</span> <span class="number">0</span><span class="special">);</span>
 
 <span class="preprocessor">#ifndef</span> <span class="identifier">BOOST_NO_LAMBDAS</span>
     <span class="special">{</span>
- <span class="identifier">SCOPE_EXIT_ALL_INC_DEC</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">delta</span><span class="special">)</span>
+ <span class="identifier">SCOPE_EXIT_ALL_INC_DEC</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">delta</span><span class="special">)</span> <span class="comment">// Multiple scope exits on same line.</span>
     <span class="special">}</span>
     <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">x</span> <span class="special">==</span> <span class="number">0</span><span class="special">);</span>
 <span class="preprocessor">#endif</span>
@@ -446,8 +446,8 @@
         <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_END_ID.html" title="Macro BOOST_SCOPE_EXIT_END_ID">BOOST_SCOPE_EXIT_END_ID</a></code>,
         and <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_ALL_ID.html" title="Macro BOOST_SCOPE_EXIT_ALL_ID">BOOST_SCOPE_EXIT_ALL_ID</a></code>
         macros are especially useful when it is necessary to invoke them multiple
- times within user-defined macros (because all nested macro will expand on
- the same line).
+ times within user-defined macros (because the preprocessor expands all nested
+ macros on the same line).
       </p>
 </div>
 <div class="footnotes">

Modified: trunk/libs/scope_exit/doc/scope_exit.qbk
==============================================================================
--- trunk/libs/scope_exit/doc/scope_exit.qbk (original)
+++ trunk/libs/scope_exit/doc/scope_exit.qbk 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -85,13 +85,14 @@
 
 [section Compilers and Platforms]
 
-The library should be usable on any compiler that supports __Boost_Typeof__ except:
+The authors originally developed and tested the library on GNU Compiler Collection (GCC) C++ 3.3, 3.4, 4.1, 4.2, 4.5.3 (with and without C++11 features [^-std=c++0x]), Microsoft Visual C++ (MSVC) 8.0, and Intel 10.1 under Linux, Cygwin, and Windows 7.
+However, this library should be usable on any compiler that supports __Boost_Typeof__ except:
 
 * MSVC 7.1 and 8.0 fail to link if a function with __Boost_ScopeExit__ is included by multiple translation units.
-Furthermore, on MSVC 7.1 and 8.0 it is possible to capture the object `this_` only with native __Boost_Typeof__ (and not in __typeof_emulation__ mode).
+Furthermore, on MSVC it is possible to capture the object `this_` only with native __Boost_Typeof__ (and not in __typeof_emulation__ mode).
 * GCC 3.3 cannot compile __Boost_ScopeExit__ inside a template (see [@http://lists.boost.org/Archives/boost/2007/02/116235.php] for more details).
 
-The authors tested the library on GCC 3.3, 3.4, 4.1, 4.2, 4.5.3 (with and without C++11 features [^-std=c++0x]), MSVC 8.0, and Intel 10.1 under Linux, Cygwin, and Windows 7.
+See the library [@http://www.boost.org/development/tests/release/developer/scope_exit.html regression test results] for detailed information on supported compilers and platforms.
 
 [endsect]
 
@@ -429,16 +430,17 @@
 
 [h5 Examples]
 
-The following is a list of most of the examples presented in this documentation reprogrammed using the __Boost_Preprocessor__ sequence syntax instead of the comma-separated list:
+For reference, the following is a list of most of the examples presented in this documentation reprogrammed using the __Boost_Preprocessor__ sequence syntax instead of comma-separated lists (in alphabetic order):
 
 [table
     [ [Files] ]
+ [ [[@../../test/same_line_seq.cpp =same_line_seq.cpp=]] ]
+ [ [[@../../example/scope_guard_seq.cpp =scope_guard_seq.cpp=]] ]
+ [ [[@../../example/try_catch_seq.cpp =try_catch_seq.cpp=]] ]
+ [ [[@../../test/world_checkpoint_all_seq.cpp =world_checkpoint_all_seq.cpp=]] ]
     [ [[@../../test/world_checkpoint_seq.cpp =world_checkpoint_seq.cpp=]] ]
     [ [[@../../test/world_this_seq.cpp =world_this_seq.cpp=]] ]
- [ [[@../../test/world_checkpoint_all_seq.cpp =world_checkpoint_all_seq.cpp=]] ]
     [ [[@../../test/world_tpl_seq.cpp =world_tpl_seq.cpp=]] ]
- [ [[@../../example/try_catch_seq.cpp =try_catch_seq.cpp=]] ]
- [ [[@../../example/scope_guard_seq.cpp =scope_guard_seq.cpp=]] ]
 ]
 
 [endsect]

Modified: trunk/libs/scope_exit/test/world_lambda.cpp
==============================================================================
--- trunk/libs/scope_exit/test/world_lambda.cpp (original)
+++ trunk/libs/scope_exit/test/world_lambda.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -34,8 +34,8 @@
     bool commit = false;
 
     persons_.push_back(a_person);
- scope_exit on_exit1([&commit, &persons_](void) { // Use C++11 lambda.
- if(!commit) persons_.pop_back();
+ scope_exit on_exit1([&commit, this](void) { // Use C++11 lambda.
+ if(!commit) persons_.pop_back(); // `persons_` via captured `this`.
     });
 
     // ...

Modified: trunk/libs/utility/identity_type/doc/html/index.html
==============================================================================
--- trunk/libs/utility/identity_type/doc/html/index.html (original)
+++ trunk/libs/utility/identity_type/doc/html/index.html 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -2,7 +2,8 @@
       Caminiti</p></div><div><div class="legalnotice" title="Legal Notice"><a name="boost_utility_identitytype.legal"></a><p>
         Distributed under the Boost Software License, Version 1.0 (see accompanying
         file LICENSE_1_0.txt or a copy at http://www.boost.org/LICENSE_1_0.txt)
- </p></div></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section">Motivation</span></dt><dt><span class="section">Solution</span></dt><dt><span class="section">Templates</span></dt><dt><span class="section">Abstract Types</span></dt><dt><span class="section">Annex: Usage</span></dt><dt><span class="section"><a href="#boost_utility_identitytype.annex__implementation">Annex:
+ </p></div></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section">Motivation</span></dt><dt><span class="section">Solution</span></dt><dt><span class="section">Templates</span></dt><dt><span class="section">Abstract Types</span></dt><dt><span class="section"><a href="#boost_utility_identitytype.compilers_and_platforms">Compilers
+ and Platforms</a></span></dt><dt><span class="section">Annex: Usage</span></dt><dt><span class="section"><a href="#boost_utility_identitytype.annex__implementation">Annex:
     Implementation</a></span></dt><dt><span class="section">Reference</span></dt></dl></div><p>
     This library allows to wrap type expressions within round parenthesis so they
     can be passed to macros even when they contain commas.
@@ -126,7 +127,7 @@
       to pass a meta-function with multiple template parameters to the assert macro
       (so to handle the commas separating the template parameters). In this case,
       if the meta-function is an abstract type, it needs to be manipulated adding
- and removing a reference to it (see also tmp_assert.cpp):
+ and removing a reference to it (see also abstract.cpp):
     </p><p>
 </p><pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">TMP_ASSERT</span><span class="special">(</span><span class="identifier">metafunction</span><span class="special">)</span> <span class="special">\</span>
     <span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(</span><span class="identifier">metafunction</span><span class="special">::</span><span class="identifier">value</span><span class="special">)</span>
@@ -147,20 +148,36 @@
     <span class="special">&gt;::</span><span class="identifier">type</span>
 <span class="special">);</span>
 </pre><p>
+ </p></div><div class="section boost_utility_identitytype_compilers_and_platforms" title="Compilers and Platforms"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="boost_utility_identitytype.compilers_and_platforms"></a><a class="link" href="#boost_utility_identitytype.compilers_and_platforms" title="Compilers and Platforms">Compilers
+ and Platforms</a></h2></div></div></div><p>
+ The authors originally developed and tested the library on:
+ </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+ GNU Compiler Collection (GCC) C++ 4.5.3 (with and without C++11 features
+ enabled <code class="computeroutput"><span class="special">-</span><span class="identifier">std</span><span class="special">=</span><span class="identifier">c</span><span class="special">++</span><span class="number">0</span><span class="identifier">x</span></code>) on
+ Cygwin.
+ </li><li class="listitem">
+ Miscrosoft Visual C++ (MSVC) 8.0 on Windows 7.
+ </li></ol></div><p>
+ See the library <a href="http://www.boost.org/development/tests/release/developer/utility-identity_type.html" target="_top">regressions
+ test results</a> for detailed information on supported compilers and platforms.
     </p></div><div class="section boost_utility_identitytype_annex__usage" title="Annex: Usage"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="boost_utility_identitytype.annex__usage"></a><a class="link" href="#boost_utility_identitytype.annex__usage" title="Annex: Usage">Annex: Usage</a></h2></div></div></div><p>
       The <code class="computeroutput"><a class="link" href="#BOOST_IDENTITY_TYPE" title="Macro BOOST_IDENTITY_TYPE">BOOST_IDENTITY_TYPE</a></code> macro
       can be used either when calling a user-defined macro (as shown by the examples
       so far), or internally in the definition of a user-defined macro (as shown
       below). When <code class="computeroutput"><a class="link" href="#BOOST_IDENTITY_TYPE" title="Macro BOOST_IDENTITY_TYPE">BOOST_IDENTITY_TYPE</a></code>
       is used in the user macro definition, the call of the user macro will only
- have to specify the extra parenthesis (see also tmp_assert.cpp):
+ have to specify the extra parenthesis (see also paren.cpp):
     </p><p>
 </p><pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">TMP_ASSERT_PAREN</span><span class="special">(</span><span class="identifier">parenthesized_metafunction</span><span class="special">)</span> <span class="special">\</span>
     <span class="comment">/* use `BOOST_IDENTITY_TYPE` in macro definition instead of invocation */</span> <span class="special">\</span>
     <span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(</span><span class="identifier">BOOST_IDENTITY_TYPE</span><span class="special">(</span><span class="identifier">parenthesized_metafunction</span><span class="special">)::</span><span class="identifier">value</span><span class="special">)</span>
 
+<span class="preprocessor">#define</span> <span class="identifier">TMP_ASSERT</span><span class="special">(</span><span class="identifier">metafunction</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">(</span><span class="identifier">metafunction</span><span class="special">::</span><span class="identifier">value</span><span class="special">)</span>
+
 <span class="comment">// Specify only extra parenthesis `((...))`.</span>
 <span class="identifier">TMP_ASSERT_PAREN</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_const</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&gt;));</span>
+
 <span class="comment">// Specify both the extra parenthesis `((...))` and `BOOST_IDENTITY_TYPE` macro.</span>
 <span class="identifier">TMP_ASSERT</span><span class="special">(</span><span class="identifier">BOOST_IDENTITY_TYPE</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_const</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">map</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&gt;)));</span>
 </pre><p>
@@ -169,6 +186,7 @@
       the extra parenthesis even when the macro parameters contain no comma:
     </p><p>
 </p><pre class="programlisting"><span class="identifier">TMP_ASSERT_PAREN</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&gt;));</span> <span class="comment">// Always extra `((...))`.</span>
+
 <span class="identifier">TMP_ASSERT</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_const</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&gt;);</span> <span class="comment">// No extra `((...))` and no macro.</span>
 </pre><p>
     </p><p>
@@ -221,7 +239,7 @@
 
 <a class="link" href="#BOOST_IDENTITY_TYPE" title="Macro BOOST_IDENTITY_TYPE">BOOST_IDENTITY_TYPE</a>(parenthesized_type)</pre><div class="refentry" title="Macro BOOST_IDENTITY_TYPE"><a name="BOOST_IDENTITY_TYPE"></a><div class="titlepage"></div><div class="refnamediv"><h2><span class="refentrytitle">Macro BOOST_IDENTITY_TYPE</span></h2><p>BOOST_IDENTITY_TYPE — This macro allows to wrap the specified type expression within extra round parenthesis so the type can be passed as a single macro parameter even if it contains commas (not already wrapped within round parenthesis). </p></div><h2 class="refsynopsisdiv-title">Synopsis</h2><div class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="#header.boost.utility.identity_type_hpp" title="Header &lt;boost/utility/identity_type.hpp&gt;">boost/utility/identity_type.hpp</a>&gt;
 
-</span>BOOST_IDENTITY_TYPE(parenthesized_type)</pre></div><div class="refsect1" title="Description"><a name="id512092"></a><h2>Description</h2><p><span class="bold"><strong>Parameters:</strong></span> </p><div class="informaltable"><table class="table"><colgroup><col><col></colgroup><tbody><tr><td><span class="bold"><strong><code class="computeroutput">parenthesized_type</code></strong></span></td><td>The type expression to be passed as macro parameter wrapped by a single set of round parenthesis <code class="computeroutput">(...)</code>. This type expression can contain an arbitrary number of commas. </td></tr></tbody></table></div><p>
+</span>BOOST_IDENTITY_TYPE(parenthesized_type)</pre></div><div class="refsect1" title="Description"><a name="id558453"></a><h2>Description</h2><p><span class="bold"><strong>Parameters:</strong></span> </p><div class="informaltable"><table class="table"><colgroup><col><col></colgroup><tbody><tr><td><span class="bold"><strong><code class="computeroutput">parenthesized_type</code></strong></span></td><td>The type expression to be passed as macro parameter wrapped by a single set of round parenthesis <code class="computeroutput">(...)</code>. This type expression can contain an arbitrary number of commas. </td></tr></tbody></table></div><p>
 </p><p>This macro works on any C++03 compiler (it does not require variadic macros).</p><p>This macro must be prefixed by <code class="computeroutput">typename</code> when used within templates. However, the compiler will not be able to automatically determine function template parameters when they are wrapped with this macro (these parameters need to be explicitly specified when calling the function template).</p><p>On some compilers (like GCC), using this macro on an abstract types requires to add and remove a reference to the type. </p></div></div></div></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a id="ftn.boost_utility_identitytype.solution.f0" href="#boost_utility_identitytype.solution.f0" class="para">1</a>] </sup>
         Using variadic macros, it would be possible to require a single set of extra
         parenthesis <code class="computeroutput"><span class="identifier">BOOST_IDENTITY_TYPE</span><span class="special">(</span></code><code class="literal"><span class="emphasis"><em>type</em></span></code><code class="computeroutput"><span class="special">)</span></code> instead of two <code class="computeroutput"><span class="identifier">BOOST_IDENTITY_TYPE</span><span class="special">((</span></code><code class="literal"><span class="emphasis"><em>type</em></span></code><code class="computeroutput"><span class="special">))</span></code> but variadic macros are not part of C++03

Modified: trunk/libs/utility/identity_type/doc/identity_type.qbk
==============================================================================
--- trunk/libs/utility/identity_type/doc/identity_type.qbk (original)
+++ trunk/libs/utility/identity_type/doc/identity_type.qbk 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -24,7 +24,8 @@
 [import ../test/var_error.cpp]
 [import ../test/var.cpp]
 [import ../test/template.cpp]
-[import ../test/tmp_assert.cpp]
+[import ../test/abstract.cpp]
+[import ../test/paren.cpp]
 
 [section Motivation]
 
@@ -101,22 +102,33 @@
 
 Let's program a macro that performs a static assertion on a [@http://en.wikipedia.org/wiki/Template_metaprogramming Template Meta-Programming] (TMP) meta-function (similarly to Boost.MPL [@http://www.boost.org/doc/libs/1_36_0/libs/mpl/doc/refmanual/assert.html `BOOST_MPL_ASSERT`]).
 The [macroref BOOST_IDENTITY_TYPE] macro can be used to pass a meta-function with multiple template parameters to the assert macro (so to handle the commas separating the template parameters).
-In this case, if the meta-function is an abstract type, it needs to be manipulated adding and removing a reference to it (see also [@../../test/tmp_assert.cpp =tmp_assert.cpp=]):
+In this case, if the meta-function is an abstract type, it needs to be manipulated adding and removing a reference to it (see also [@../../test/abstract.cpp =abstract.cpp=]):
 
-[tmp_assert_abstract]
+[abstract]
+
+[endsect]
+
+[section Compilers and Platforms]
+
+The authors originally developed and tested the library on:
+
+# GNU Compiler Collection (GCC) C++ 4.5.3 (with and without C++11 features enabled `-std=c++0x`) on Cygwin.
+# Miscrosoft Visual C++ (MSVC) 8.0 on Windows 7.
+
+See the library [@http://www.boost.org/development/tests/release/developer/utility-identity_type.html regressions test results] for detailed information on supported compilers and platforms.
 
 [endsect]
 
 [section Annex: Usage]
 
 The [macroref BOOST_IDENTITY_TYPE] macro can be used either when calling a user-defined macro (as shown by the examples so far), or internally in the definition of a user-defined macro (as shown below).
-When [macroref BOOST_IDENTITY_TYPE] is used in the user macro definition, the call of the user macro will only have to specify the extra parenthesis (see also [@../../test/tmp_assert.cpp =tmp_assert.cpp=]):
+When [macroref BOOST_IDENTITY_TYPE] is used in the user macro definition, the call of the user macro will only have to specify the extra parenthesis (see also [@../../test/paren.cpp =paren.cpp=]):
 
-[tmp_assert_alternative]
+[paren]
 
 However, note that the user will /always/ have to specify the extra parenthesis even when the macro parameters contain no comma:
 
-[tmp_assert_alternative_always]
+[paren_always]
 
 In some cases, using [macroref BOOST_IDENTITY_TYPE] within the user macro definition might provide the best syntax for the user.
 For example, this is the case for `BOOST_MPL_ASSERT` because the majority of template meta-programming expressions contain unwrapped commas so it is less confusing for the user to always specify the extra parenthesis `((...))` instead of using [macroref BOOST_IDENTITY_TYPE]:

Modified: trunk/libs/utility/identity_type/test/Jamfile.v2
==============================================================================
--- trunk/libs/utility/identity_type/test/Jamfile.v2 (original)
+++ trunk/libs/utility/identity_type/test/Jamfile.v2 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -10,5 +10,7 @@
 compile-fail var_error.cpp ;
 run var.cpp ;
 run template.cpp ;
-run tmp_assert.cpp ;
+run abstract.cpp ;
+run noncopyable.cpp ;
+run paren.cpp ;
 

Added: trunk/libs/utility/identity_type/test/abstract.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/utility/identity_type/test/abstract.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -0,0 +1,35 @@
+
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// Home at http://www.boost.org/libs/utility/identity_type
+
+#include <boost/utility/identity_type.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+//[abstract
+#define TMP_ASSERT(metafunction) \
+ BOOST_STATIC_ASSERT(metafunction::value)
+
+template<typename T, bool b>
+struct abstract {
+ static const bool value = b;
+ virtual void f(T const& x) = 0; // Pure virtual function.
+};
+
+TMP_ASSERT(
+ boost::remove_reference< // Add and remove
+ BOOST_IDENTITY_TYPE(( // reference for
+ boost::add_reference< // abstract type.
+ abstract<int, true>
+ >::type
+ ))
+ >::type
+);
+//]
+
+int main() { return 0; }
+

Added: trunk/libs/utility/identity_type/test/noncopyable.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/utility/identity_type/test/noncopyable.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -0,0 +1,25 @@
+
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// Home at http://www.boost.org/libs/utility/identity_type
+
+#include <boost/utility/identity_type.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/noncopyable.hpp>
+
+//[noncopyable
+#define TMP_ASSERT(metafunction) \
+ BOOST_STATIC_ASSERT(metafunction::value)
+
+template<typename T, T init>
+struct noncopyable : boost::noncopyable {
+ static const T value = init;
+};
+
+TMP_ASSERT(BOOST_IDENTITY_TYPE((noncopyable<bool, true>)));
+//]
+
+int main() { return 0; }
+

Added: trunk/libs/utility/identity_type/test/paren.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/utility/identity_type/test/paren.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
@@ -0,0 +1,35 @@
+
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// Home at http://www.boost.org/libs/utility/identity_type
+
+#include <boost/utility/identity_type.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <map>
+
+//[paren
+#define TMP_ASSERT_PAREN(parenthesized_metafunction) \
+ /* use `BOOST_IDENTITY_TYPE` in macro definition instead of invocation */ \
+ BOOST_STATIC_ASSERT(BOOST_IDENTITY_TYPE(parenthesized_metafunction)::value)
+
+#define TMP_ASSERT(metafunction) \
+ BOOST_STATIC_ASSERT(metafunction::value)
+
+// Specify only extra parenthesis `((...))`.
+TMP_ASSERT_PAREN((boost::is_const<std::map<int, char> const>));
+
+// Specify both the extra parenthesis `((...))` and `BOOST_IDENTITY_TYPE` macro.
+TMP_ASSERT(BOOST_IDENTITY_TYPE((boost::is_const<std::map<int, char> const>)));
+//]
+
+//[paren_always
+TMP_ASSERT_PAREN((boost::is_const<int const>)); // Always extra `((...))`.
+
+TMP_ASSERT(boost::is_const<int const>); // No extra `((...))` and no macro.
+//]
+
+int main() { return 0; }
+

Deleted: trunk/libs/utility/identity_type/test/tmp_assert.cpp
==============================================================================
--- trunk/libs/utility/identity_type/test/tmp_assert.cpp 2012-03-22 16:54:20 EDT (Thu, 22 Mar 2012)
+++ (empty file)
@@ -1,53 +0,0 @@
-
-// Copyright (C) 2009-2012 Lorenzo Caminiti
-// Distributed under the Boost Software License, Version 1.0
-// (see accompanying file LICENSE_1_0.txt or a copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-// Home at http://www.boost.org/libs/utility/identity_type
-
-#include <boost/utility/identity_type.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/type_traits/remove_reference.hpp>
-#include <map>
-
-//[tmp_assert_abstract
-#define TMP_ASSERT(metafunction) \
- BOOST_STATIC_ASSERT(metafunction::value)
-
-template<typename T, bool b>
-struct abstract {
- static const bool value = b;
- virtual void f(T const& x) = 0; // Pure virtual function.
-};
-
-TMP_ASSERT(
- boost::remove_reference< // Add and remove
- BOOST_IDENTITY_TYPE(( // reference for
- boost::add_reference< // abstract type.
- abstract<int, true>
- >::type
- ))
- >::type
-);
-//]
-
-//[tmp_assert_alternative
-#define TMP_ASSERT_PAREN(parenthesized_metafunction) \
- /* use `BOOST_IDENTITY_TYPE` in macro definition instead of invocation */ \
- BOOST_STATIC_ASSERT(BOOST_IDENTITY_TYPE(parenthesized_metafunction)::value)
-
-// Specify only extra parenthesis `((...))`.
-TMP_ASSERT_PAREN((boost::is_const<std::map<int, char> const>));
-// Specify both the extra parenthesis `((...))` and `BOOST_IDENTITY_TYPE` macro.
-TMP_ASSERT(BOOST_IDENTITY_TYPE((boost::is_const<std::map<int, char> const>)));
-//]
-
-//[tmp_assert_alternative_always
-TMP_ASSERT_PAREN((boost::is_const<int const>)); // Always extra `((...))`.
-TMP_ASSERT(boost::is_const<int const>); // No extra `((...))` and no macro.
-//]
-
-int main() { return 0; }
-


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