Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r70635 - in sandbox/local: boost/local libs/local/doc/html libs/local/doc/html/boost/local libs/local/doc/html/boost_local libs/local/doc/qbk libs/local/example
From: lorcaminiti_at_[hidden]
Date: 2011-03-27 11:04:10


Author: lcaminiti
Date: 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
New Revision: 70635
URL: http://svn.boost.org/trac/boost/changeset/70635

Log:
Proofread Tutorial docs.
Text files modified:
   sandbox/local/boost/local/exit.hpp | 4
   sandbox/local/libs/local/doc/html/BOOST_IDENTITY_TYPE.html | 2
   sandbox/local/libs/local/doc/html/BOOST_IDENTITY_VALUE.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK_END.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK_TPL.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_COMPLIANT.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_THIS_PARAM_NAME.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT.html | 6
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT_END.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT_TPL.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_NAME.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_PARAMS.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_PARAMS_TPL.html | 2
   sandbox/local/libs/local/doc/html/BOOST_LOCAL_TYPEOF.html | 2
   sandbox/local/libs/local/doc/html/boost/local/function.html | 2
   sandbox/local/libs/local/doc/html/boost_local/Advanced_Topics.html | 26 ++--
   sandbox/local/libs/local/doc/html/boost_local/Alternatives.html | 253 ++++++++++++++++++++++++++++-----------
   sandbox/local/libs/local/doc/html/boost_local/Examples.html | 7
   sandbox/local/libs/local/doc/html/boost_local/Getting_Started.html | 27 ++--
   sandbox/local/libs/local/doc/html/boost_local/Tutorial.html | 187 +++++++++++++++--------------
   sandbox/local/libs/local/doc/html/index.html | 2
   sandbox/local/libs/local/doc/qbk/advanced_topics.qbk | 28 ++--
   sandbox/local/libs/local/doc/qbk/alternatives.qbk | 108 +++-------------
   sandbox/local/libs/local/doc/qbk/examples.qbk | 16 +-
   sandbox/local/libs/local/doc/qbk/getting_started.qbk | 10
   sandbox/local/libs/local/doc/qbk/introduction.qbk | 2
   sandbox/local/libs/local/doc/qbk/local.qbk | 10 +
   sandbox/local/libs/local/doc/qbk/tutorial.qbk | 78 ++++++-----
   sandbox/local/libs/local/example/Jamfile.jam | 7 +
   sandbox/local/libs/local/example/add_x_y.cpp | 2
   sandbox/local/libs/local/example/add_x_y_default.cpp | 2
   sandbox/local/libs/local/example/add_x_y_default_va.cpp | 2
   sandbox/local/libs/local/example/add_x_y_default_with_va.cpp | 2
   sandbox/local/libs/local/example/add_x_y_va.cpp | 2
   36 files changed, 445 insertions(+), 366 deletions(-)

Modified: sandbox/local/boost/local/exit.hpp
==============================================================================
--- sandbox/local/boost/local/exit.hpp (original)
+++ sandbox/local/boost/local/exit.hpp 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -29,12 +29,14 @@
  * { // Some declarative context.
  * ...
  * BOOST_LOCAL_EXIT(bindings) {
- * ... // Block code.
+ * ... // Body code.
  * } BOOST_LOCAL_EXIT_END
  * ...
  * }
  * @endcode
  *
+ * The execution of the local exit body code is guaranteed only if the program
+ * does not terminate because of an uncaught exception.
  * As usual, exceptions specifications can be optionally programmed before the
  * body code block (but the specifications will only apply the body code and
  * not to the library code automatically generated by the macro expansion,

Modified: sandbox/local/libs/local/doc/html/BOOST_IDENTITY_TYPE.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_IDENTITY_TYPE.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_IDENTITY_TYPE.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_IDENTITY_TYPE(parenthesized_type)</pre></div>
 <div class="refsect1">
-<a name="id915536"></a><h2>Description</h2>
+<a name="id915945"></a><h2>Description</h2>
 <p>This macro expands to an expression that can be passed as a single macro parameter even if it contains commas and that evaluates to the specified type at compile-time (see the <a class="link" href="boost_local/Advanced_Topics.html" title="Advanced Topics"> Advanced Topics</a> section).</p>
 <p>For example <code class="computeroutput">BOOST_IDENTITY_TYPE((std::map&lt;int, double&gt;))</code> can be passed as a single macro parameter when instead <code class="computeroutput">std::map&lt;int, double&gt;</code> cannot (because it contains a comma not wrapped by round parenthesis so it will be interpreted as two separate macro parameters by the preprocessor).</p>
 <p><span class="bold"><strong>Parameters:</strong></span> </p>

Modified: sandbox/local/libs/local/doc/html/BOOST_IDENTITY_VALUE.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_IDENTITY_VALUE.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_IDENTITY_VALUE.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_IDENTITY_VALUE(parenthesized_value)</pre></div>
 <div class="refsect1">
-<a name="id915677"></a><h2>Description</h2>
+<a name="id916086"></a><h2>Description</h2>
 <p>This macro expands to an expression that can be passed as a single macro parameter even if it contains commas and that evaluates to the specified value at run-time (see the <a class="link" href="boost_local/Advanced_Topics.html" title="Advanced Topics"> Advanced Topics</a> section).</p>
 <p>For example <code class="computeroutput">BOOST_IDENTITY_VALUE((key_sizeof&lt;int, double&gt;::value))</code> can be passed as a single macro parameter when instead <code class="computeroutput">key_sizeof&lt;int, double&gt;::value</code> cannot (because it contains a comma not wrapped by round parenthesis so it will be interpreted as two separate macro parameters by the preprocessor).</p>
 <p><span class="bold"><strong>Parameters:</strong></span> </p>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_BLOCK(bindings)</pre></div>
 <div class="refsect1">
-<a name="id910483"></a><h2>Description</h2>
+<a name="id910882"></a><h2>Description</h2>
 <p>This macro must be used within a declarative context, it must be followed by the local block body code and then by the <code class="computeroutput"><a class="link" href="BOOST_LOCAL_BLOCK_END.html" title="Macro BOOST_LOCAL_BLOCK_END">BOOST_LOCAL_BLOCK_END</a></code> macro (see the Tutorial section): </p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some declarative context.</span>
       <span class="special">...</span>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK_END.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK_END.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK_END.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_BLOCK_END</pre></div>
 <div class="refsect1">
-<a name="id911221"></a><h2>Description</h2>
+<a name="id911627"></a><h2>Description</h2>
 <p>This macro must follow the local block body code <code class="computeroutput">{ ... }</code> as shown in the <code class="computeroutput"><a class="link" href="BOOST_LOCAL_BLOCK.html" title="Macro BOOST_LOCAL_BLOCK">BOOST_LOCAL_BLOCK</a></code> documentation.</p>
 <p><span class="bold"><strong>Note:</strong></span> This macro cannot be used multiple times on the same line because it internally uses the line number <code class="computeroutput">__LINE__</code> to generate unique identifiers.</p>
 <p><span class="bold"><strong>See:</strong></span> <code class="computeroutput"><a class="link" href="BOOST_LOCAL_BLOCK.html" title="Macro BOOST_LOCAL_BLOCK">BOOST_LOCAL_BLOCK</a></code>, <a class="link" href="boost_local/Tutorial.html" title="Tutorial">Tutorial</a> section. </p>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK_TPL.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK_TPL.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_BLOCK_TPL.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_BLOCK_TPL(bindings)</pre></div>
 <div class="refsect1">
-<a name="id911147"></a><h2>Description</h2>
+<a name="id911553"></a><h2>Description</h2>
 <p><span class="bold"><strong>See:</strong></span> <code class="computeroutput"><a class="link" href="BOOST_LOCAL_BLOCK.html" title="Macro BOOST_LOCAL_BLOCK">BOOST_LOCAL_BLOCK</a></code>, <a class="link" href="boost_local/Tutorial.html" title="Tutorial">Tutorial</a> section. </p>
 </div>
 </div>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_COMPLIANT.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_COMPLIANT.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_COMPLIANT.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_CONFIG_COMPLIANT</pre></div>
 <div class="refsect1">
-<a name="id911389"></a><h2>Description</h2>
+<a name="id911795"></a><h2>Description</h2>
 <p>If programmers leave this configuration macro undefined, its default value is to be left not defined.</p>
 <p>If this macro is defined, variadic macros and empty macro parameters are not used by this library. Using variadic macros and empty macro parameters allows this library to provide the <span class="emphasis"><em>variadic macro</em></span> and <span class="emphasis"><em>empty macro</em></span> syntaxes which some programmers might find more readable than the <span class="emphasis"><em>sequencing macro</em></span> syntax (see <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION_PARAMS.html" title="Macro BOOST_LOCAL_FUNCTION_PARAMS">BOOST_LOCAL_FUNCTION_PARAMS</a></code>, <code class="computeroutput"><a class="link" href="BOOST_LOCAL_BLOCK.html" title="Macro BOOST_LOCAL_BLOCK">BOOST_LOCAL_BLOCK</a></code>, and <code class="computeroutput"><a class="link" href="BOOST_LOCAL_EXIT.html" title="Macro BOOST_LOCAL_EXIT">BOOST_LOCAL_EXIT</a></code>). If this configuration macro is defined then only the sequencing macro syntax is allowed (regardless of whether the compiler supports variadic and e
mpty macros or not).</p>
 <p><span class="bold"><strong>Warning:</strong></span> The variadic and empty macro syntaxes are not supported by all C++ compilers so they should be used with care to avoid portability issues (and this configuration macro can be defined to disable them).</p>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX</pre></div>
 <div class="refsect1">
-<a name="id911568"></a><h2>Description</h2>
+<a name="id911975"></a><h2>Description</h2>
 <p>If programmers leave this configuration macro undefined, its default value is <code class="computeroutput">5</code>.</p>
 <p>This only refers to the number of local function parameters and not to the number of bound variables in scope (the limit on the number of bound variables is instead the maximum size allowed for a Boost.Preprocessor sequences).</p>
 <p><span class="bold"><strong>Warning:</strong></span> Increasing this number will increase compilation time.</p>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_THIS_PARAM_NAME.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_THIS_PARAM_NAME.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_CONFIG_THIS_PARAM_NAME.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_CONFIG_THIS_PARAM_NAME</pre></div>
 <div class="refsect1">
-<a name="id911663"></a><h2>Description</h2>
+<a name="id912070"></a><h2>Description</h2>
 <p>If programmers leave this configuration macro undefined, the default symbol used is <code class="computeroutput">this_</code>.</p>
 <p><span class="bold"><strong>Warning:</strong></span> Programmers should not define this macro unless it is absolutely necessary (e.g., to avoid name clashes with another library which cannot be changed). Changing the symbol <code class="computeroutput">this_</code> effectively changes the public API of this library.</p>
 <p><span class="bold"><strong>See:</strong></span> <a class="link" href="boost_local/Getting_Started.html" title="Getting Started"> Getting Started</a> section. </p>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,17 +33,17 @@
 
 </span>BOOST_LOCAL_EXIT(binding_list)</pre></div>
 <div class="refsect1">
-<a name="id911804"></a><h2>Description</h2>
+<a name="id912210"></a><h2>Description</h2>
 <p>This macro must be used within a declarative context, it must be followed by the local exit body code and then by the <code class="computeroutput"><a class="link" href="BOOST_LOCAL_EXIT_END.html" title="Macro BOOST_LOCAL_EXIT_END">BOOST_LOCAL_EXIT_END</a></code> macro (see the <a class="link" href="boost_local/Tutorial.html" title="Tutorial">Tutorial</a> section): </p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some declarative context.</span>
       <span class="special">...</span>
       <span class="identifier">BOOST_LOCAL_EXIT</span><span class="special">(</span><span class="identifier">bindings</span><span class="special">)</span> <span class="special">{</span>
- <span class="special">...</span> <span class="comment">// Block code.</span>
+ <span class="special">...</span> <span class="comment">// Body code.</span>
       <span class="special">}</span> <span class="identifier">BOOST_LOCAL_EXIT_END</span>
       <span class="special">...</span>
   <span class="special">}</span>
 </pre>
-<p>As usual, exceptions specifications can be optionally programmed before the body code block (but the specifications will only apply the body code and not to the library code automatically generated by the macro expansion, see <a class="link" href="boost_local/Advanced_Topics.html" title="Advanced Topics"> Advanced Topics</a>).</p>
+<p>The execution of the local exit body code is guaranteed only if the program does not terminate because of an uncaught exception. As usual, exceptions specifications can be optionally programmed before the body code block (but the specifications will only apply the body code and not to the library code automatically generated by the macro expansion, see <a class="link" href="boost_local/Advanced_Topics.html" title="Advanced Topics"> Advanced Topics</a>).</p>
 <p>Within templates, the special macro <code class="computeroutput"><a class="link" href="BOOST_LOCAL_EXIT_TPL.html" title="Macro BOOST_LOCAL_EXIT_TPL">BOOST_LOCAL_EXIT_TPL</a></code> must be used instead of <code class="computeroutput"><a class="link" href="BOOST_LOCAL_EXIT.html" title="Macro BOOST_LOCAL_EXIT">BOOST_LOCAL_EXIT</a></code>.</p>
 <p><span class="bold"><strong>Note:</strong></span> A <code class="computeroutput">return;</code> instruction from within a local exit body jumps to the end of the local exit body and it does not return the enclosing scope.</p>
 <p><span class="bold"><strong>Parameters:</strong></span> </p>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT_END.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT_END.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT_END.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_EXIT_END</pre></div>
 <div class="refsect1">
-<a name="id912552"></a><h2>Description</h2>
+<a name="id912961"></a><h2>Description</h2>
 <p>This macro must follow the local exit body code <code class="computeroutput">{ ... }</code> as shown in the <code class="computeroutput"><a class="link" href="BOOST_LOCAL_EXIT.html" title="Macro BOOST_LOCAL_EXIT">BOOST_LOCAL_EXIT</a></code> documentation.</p>
 <p><span class="bold"><strong>Note:</strong></span> This macro cannot be used multiple times on the same line because it internally uses the line number <code class="computeroutput">__LINE__</code> to generate unique identifiers.</p>
 <p><span class="bold"><strong>See:</strong></span> <code class="computeroutput"><a class="link" href="BOOST_LOCAL_EXIT.html" title="Macro BOOST_LOCAL_EXIT">BOOST_LOCAL_EXIT</a></code>, <a class="link" href="boost_local/Tutorial.html" title="Tutorial">Tutorial</a> section. </p>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT_TPL.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT_TPL.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_EXIT_TPL.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_EXIT_TPL(binding_list)</pre></div>
 <div class="refsect1">
-<a name="id912478"></a><h2>Description</h2>
+<a name="id912887"></a><h2>Description</h2>
 <p><span class="bold"><strong>See:</strong></span> <code class="computeroutput"><a class="link" href="BOOST_LOCAL_EXIT.html" title="Macro BOOST_LOCAL_EXIT">BOOST_LOCAL_EXIT</a></code>, <a class="link" href="boost_local/Tutorial.html" title="Tutorial">Tutorial</a> section. </p>
 </div>
 </div>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_NAME.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_NAME.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_NAME.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_FUNCTION_NAME(name)</pre></div>
 <div class="refsect1">
-<a name="id915015"></a><h2>Description</h2>
+<a name="id915424"></a><h2>Description</h2>
 <p>This macro must follow the local function body code block <code class="computeroutput">{ ... }</code> as shown in the <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION_PARAMS.html" title="Macro BOOST_LOCAL_FUNCTION_PARAMS">BOOST_LOCAL_FUNCTION_PARAMS</a></code> documentation.</p>
 <p><span class="bold"><strong>Parameters:</strong></span> </p>
 <div class="informaltable"><table class="table">

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_PARAMS.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_PARAMS.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_PARAMS.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_FUNCTION_PARAMS(parameters)</pre></div>
 <div class="refsect1">
-<a name="id914041"></a><h2>Description</h2>
+<a name="id914450"></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_local/Tutorial.html" title="Tutorial">Tutorial</a> and <a class="link" href="boost_local/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: sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_PARAMS_TPL.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_PARAMS_TPL.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_FUNCTION_PARAMS_TPL.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_FUNCTION_PARAMS_TPL(parameters)</pre></div>
 <div class="refsect1">
-<a name="id914941"></a><h2>Description</h2>
+<a name="id915350"></a><h2>Description</h2>
 <p><span class="bold"><strong>See:</strong></span> <code class="computeroutput"><a class="link" href="BOOST_LOCAL_FUNCTION_PARAMS.html" title="Macro BOOST_LOCAL_FUNCTION_PARAMS">BOOST_LOCAL_FUNCTION_PARAMS</a></code>, <a class="link" href="boost_local/Tutorial.html" title="Tutorial">Tutorial</a> section. </p>
 </div>
 </div>

Modified: sandbox/local/libs/local/doc/html/BOOST_LOCAL_TYPEOF.html
==============================================================================
--- sandbox/local/libs/local/doc/html/BOOST_LOCAL_TYPEOF.html (original)
+++ sandbox/local/libs/local/doc/html/BOOST_LOCAL_TYPEOF.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -33,7 +33,7 @@
 
 </span>BOOST_LOCAL_TYPEOF(bound_variable_name)</pre></div>
 <div class="refsect1">
-<a name="id915208"></a><h2>Description</h2>
+<a name="id915618"></a><h2>Description</h2>
 <p>The type is fully qualified in that it contains the extra constant and reference qualifiers when they are specified for binding by constant and by reference. For example, if a variable named <code class="computeroutput">x</code> of type <code class="computeroutput">T</code> is: </p>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem"><p>Bound by value using <code class="computeroutput">bind x</code> then <code class="computeroutput">BOOST_LOCAL_TYPEOF(x)</code> is <code class="computeroutput">T</code>. </p></li>

Modified: sandbox/local/libs/local/doc/html/boost/local/function.html
==============================================================================
--- sandbox/local/libs/local/doc/html/boost/local/function.html (original)
+++ sandbox/local/libs/local/doc/html/boost/local/function.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -35,7 +35,7 @@
 <span class="keyword">struct</span> <a class="link" href="function.html" title="Struct template function">function</a> <span class="special">{</span>
 <span class="special">}</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id912913"></a><h2>Description</h2>
+<a name="id913322"></a><h2>Description</h2>
 <p>This template defines several specializations to handle a generic number of function parameters some of which can have default values. The number of supported function parameters <code class="computeroutput">N</code> goes from <code class="computeroutput">0</code> (for a function with no parameter) to a maximum of <code class="computeroutput"><a class="link" href="../../BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX.html" title="Macro BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX">BOOST_LOCAL_CONFIG_FUNCTION_ARITY_MAX</a></code>.</p>
 <p>Each template specialization defines call operators <code class="computeroutput">operator()(...)</code> with a different set of parameters to handle the number of default parameters specified by <code class="computeroutput">defaults</code> (see <a class="link" href="../../boost_local/Advanced_Topics.html" title="Advanced Topics">
  Advanced Topics</a> section): </p>

Modified: sandbox/local/libs/local/doc/html/boost_local/Advanced_Topics.html
==============================================================================
--- sandbox/local/libs/local/doc/html/boost_local/Advanced_Topics.html (original)
+++ sandbox/local/libs/local/doc/html/boost_local/Advanced_Topics.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -83,7 +83,7 @@
 <p>
         In addition, local function parameter types cannot start with non-alphanumeric
         symbols (alphanumeric symbols are <code class="computeroutput"><span class="identifier">A</span><span class="special">-</span><span class="identifier">Z</span></code>, <code class="computeroutput"><span class="identifier">a</span><span class="special">-</span><span class="identifier">z</span></code>,
- and <code class="computeroutput"><span class="number">0</span><span class="special">-</span><span class="number">9</span></code>). <sup>[<a name="id880955" href="#ftn.id880955" class="footnote">14</a>]</sup> The library will generate (cryptic) preprocessor errors if a
+ and <code class="computeroutput"><span class="number">0</span><span class="special">-</span><span class="number">9</span></code>). <sup>[<a name="id881358" href="#ftn.id881358" class="footnote">14</a>]</sup> The library will generate (cryptic) preprocessor errors if a
         parameter type starts with a non-alphanumeric symbol.
       </p>
 <p>
@@ -206,7 +206,7 @@
 <li class="listitem">
             Parenthesis to wrap the type expression (and therefore any commas <code class="computeroutput"><span class="special">,</span></code> that it contains) passed as parameter
             to the <code class="computeroutput"><a class="link" href="../BOOST_IDENTITY_TYPE.html" title="Macro BOOST_IDENTITY_TYPE">BOOST_IDENTITY_TYPE</a></code>
- macro. <sup>[<a name="id882313" href="#ftn.id882313" class="footnote">15</a>]</sup>
+ macro. <sup>[<a name="id882716" href="#ftn.id882716" class="footnote">15</a>]</sup>
           </li>
 </ol></div>
 <p>
@@ -407,7 +407,7 @@
         </p></td></tr>
 </table></div>
 <p>
- Consider the following complete example: <sup>[<a name="id883618" href="#ftn.id883618" class="footnote">16</a>]</sup>
+ Consider the following complete example: <sup>[<a name="id884020" href="#ftn.id884020" class="footnote">16</a>]</sup>
       </p>
 <div class="informaltable"><table class="table">
 <colgroup>
@@ -1892,14 +1892,14 @@
 </tbody>
 </table></div>
 <a name="boost_local.Advanced_Topics.limitations__overloading__operators__etc_.overloading"></a><h6>
-<a name="id909344"></a>
+<a name="id909749"></a>
         <a class="link" href="Advanced_Topics.html#boost_local.Advanced_Topics.limitations__overloading__operators__etc_.overloading">Overloading</a>
       </h6>
 <p>
         It is not possible to overload local functions. Declaring multiple local
         functions with the same name within the same enclosing scope generates a
         compile-time error (even if the different declarations specify different
- parameters). <sup>[<a name="id909368" href="#ftn.id909368" class="footnote">17</a>]</sup>
+ parameters). <sup>[<a name="id909773" href="#ftn.id909773" class="footnote">17</a>]</sup>
       </p>
 <p>
         For example, the following code will <span class="bold"><strong>not</strong></span>
@@ -1918,12 +1918,12 @@
 <span class="special">}</span>
 </pre>
 <a name="boost_local.Advanced_Topics.limitations__overloading__operators__etc_.operators"></a><h6>
-<a name="id909680"></a>
+<a name="id910079"></a>
         <a class="link" href="Advanced_Topics.html#boost_local.Advanced_Topics.limitations__overloading__operators__etc_.operators">Operators</a>
       </h6>
 <p>
         Local functions cannot be operators. Naming a local function <code class="computeroutput"><span class="keyword">operator</span><span class="special">...</span></code>
- will generate a compile-time error. <sup>[<a name="id909717" href="#ftn.id909717" class="footnote">18</a>]</sup>
+ will generate a compile-time error. <sup>[<a name="id910116" href="#ftn.id910116" class="footnote">18</a>]</sup>
       </p>
 <p>
         For example, the following code will <span class="bold"><strong>not</strong></span>
@@ -1944,7 +1944,7 @@
 <span class="special">}</span>
 </pre>
 <a name="boost_local.Advanced_Topics.limitations__overloading__operators__etc_.goto"></a><h6>
-<a name="id910092"></a>
+<a name="id910491"></a>
         <a class="link" href="Advanced_Topics.html#boost_local.Advanced_Topics.limitations__overloading__operators__etc_.goto">Goto</a>
       </h6>
 <p>
@@ -1970,21 +1970,21 @@
 </div>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a id="ftn.id880955" href="#id880955" class="para">14</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id881358" href="#id881358" class="para">14</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> This limitation derives from
           the fact that <code class="computeroutput"><a class="link" href="../BOOST_LOCAL_FUNCTION_PARAMS.html" title="Macro BOOST_LOCAL_FUNCTION_PARAMS">BOOST_LOCAL_FUNCTION_PARAMS</a></code>
           uses preprocessor token concatenation to inspect the parameter type token
           to see if the token is a parameter or a bound variable. The C++ preprocessor
           does not allow to concatenate non-alphanumeric tokens.
         </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id882313" href="#id882313" class="para">15</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id882716" href="#id882716" class="para">15</a>] </sup>
               <span class="bold"><strong>Rationale.</strong></span> Using variadic macros,
               this extra set of parenthesis could be eliminated requiring only the
               parenthesis to invoke the <code class="computeroutput"><a class="link" href="../BOOST_IDENTITY_TYPE.html" title="Macro BOOST_IDENTITY_TYPE">BOOST_IDENTITY_TYPE</a></code>
               macro. However, this feature is currently not implemented and the double
               parenthesis are always needed when invoking this macro.
             </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id883618" href="#id883618" class="para">16</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id884020" href="#id884020" class="para">16</a>] </sup>
           The authors recognize that the use of the <span class="emphasis"><em>identity macros</em></span>
           adds extra parenthesis to the already significant number of parenthesis
           required by the sequencing macro syntax. However, macro parameters usually
@@ -1992,14 +1992,14 @@
           (unless template metaprogramming is being used) so this is usually not
           a problem.
         </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id909368" href="#id909368" class="para">17</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id909773" href="#id909773" class="para">17</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> This is because a local function
           is a functor object declared as a local variable within the enclosing scope.
           Therefore, declaring two local functions with the same name within the
           same enclosing scope declares two local variables with the same name within
           the same scope and that is not allowed in C++.
         </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id909717" href="#id909717" class="para">18</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id910116" href="#id910116" class="para">18</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> This is the because a local
           function name must be a valid local variable name (the local variable to
           hold the local functor object) and operators cannot be used as local variable

Modified: sandbox/local/libs/local/doc/html/boost_local/Alternatives.html
==============================================================================
--- sandbox/local/libs/local/doc/html/boost_local/Alternatives.html (original)
+++ sandbox/local/libs/local/doc/html/boost_local/Alternatives.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -218,30 +218,57 @@
                 </p>
               </td>
 </tr>
-<tr>
-<td>
+</tbody>
+</table></div>
+<p>
+ For example, using this library local functions:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
                 <p>
- Examples
+ Variadic Macro Syntax (C99 and later compilers)
                 </p>
- </td>
+ </th>
+<th>
+ <p>
+ Sequencing Macro Syntax (all C++ compilers)
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
 <td>
                 <p>
                   
 </p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">algorithm</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
     <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
     <span class="keyword">int</span> <span class="identifier">factor</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
 
- <span class="keyword">void</span> <span class="identifier">BOOST_LOCAL_FUNCTION_PARAMS</span><span class="special">(</span>
- <span class="special">(</span><span class="keyword">double</span> <span class="identifier">num</span><span class="special">)</span> <span class="special">(</span><span class="identifier">bind</span><span class="special">&amp;</span> <span class="identifier">sum</span><span class="special">)</span>
- <span class="special">(</span><span class="keyword">const</span> <span class="identifier">bind</span><span class="special">&amp;</span> <span class="identifier">factor</span><span class="special">)</span> <span class="special">)</span> <span class="special">{</span>
- <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">factor</span> <span class="special">*</span> <span class="identifier">num</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">clog</span> <span class="special">&lt;&lt;</span> <span class="string">"Summed: "</span> <span class="special">&lt;&lt;</span>
- <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">v</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="number">2.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special">=</span> <span class="number">3.0</span><span class="special">;</span>
+
+ <span class="comment">// Unfortunately, cannot be defined at expression level.
+</span> <span class="keyword">void</span> <span class="identifier">BOOST_LOCAL_FUNCTION_PARAMS</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">num</span><span class="special">,</span>
+ <span class="comment">// Variable `factor` bound as constant.
+</span> <span class="identifier">bind</span><span class="special">&amp;</span> <span class="identifier">sum</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">bind</span><span class="special">&amp;</span> <span class="identifier">factor</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// Body uses normal C++ syntax.
+</span> <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">factor</span> <span class="special">*</span> <span class="identifier">num</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Summed: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="special">}</span> <span class="identifier">BOOST_LOCAL_FUNCTION_NAME</span><span class="special">(</span><span class="identifier">add</span><span class="special">)</span>
+ <span class="comment">// Local function `add` passed as template parameter.
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">add</span><span class="special">);</span>
 
- <span class="keyword">double</span> <span class="identifier">nums</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special">=</span> <span class="special">{</span><span class="number">1</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">3</span><span class="special">,</span> <span class="identifier">add</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
@@ -252,94 +279,178 @@
                 <p>
                   
 </p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">local</span><span class="special">/</span><span class="identifier">function</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">algorithm</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">factor</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">v</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="number">2.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special">=</span> <span class="number">3.0</span><span class="special">;</span>
+
+ <span class="comment">// Unfortunately, cannot be defined at expression level.
+</span> <span class="keyword">void</span> <span class="identifier">BOOST_LOCAL_FUNCTION_PARAMS</span><span class="special">(</span> <span class="special">(</span><span class="keyword">double</span> <span class="identifier">num</span><span class="special">)</span>
+ <span class="comment">// Variable `factor` bound as constant.
+</span> <span class="special">(</span><span class="identifier">bind</span><span class="special">&amp;</span> <span class="identifier">sum</span><span class="special">)</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">bind</span><span class="special">&amp;</span> <span class="identifier">factor</span><span class="special">)</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// Body uses normal C++ syntax.
+</span> <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">factor</span> <span class="special">*</span> <span class="identifier">num</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Summed: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span> <span class="identifier">BOOST_LOCAL_FUNCTION_NAME</span><span class="special">(</span><span class="identifier">add</span><span class="special">)</span>
+ <span class="comment">// Local function `add` passed as template parameter.
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">add</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+<p>
+ Or using C++ member functions of local classes:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">algorithm</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
     <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
     <span class="keyword">int</span> <span class="identifier">factor</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
 
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">v</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="number">2.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special">=</span> <span class="number">3.0</span><span class="special">;</span>
+
     <span class="keyword">struct</span> <span class="identifier">local</span> <span class="special">{</span>
         <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">add</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">num</span><span class="special">,</span>
- <span class="comment">// Unfortunately, cannot bind
-</span> <span class="comment">// (so specify variable types).
-</span> <span class="keyword">double</span><span class="special">&amp;</span> <span class="identifier">sum</span><span class="special">,</span>
- <span class="keyword">const</span> <span class="keyword">int</span><span class="special">&amp;</span> <span class="identifier">factor</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">factor</span> <span class="special">*</span> <span class="identifier">num</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">clog</span> <span class="special">&lt;&lt;</span> <span class="string">"Summed: "</span> <span class="special">&lt;&lt;</span>
- <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="comment">// Unfortunately, cannot bind so repeat local variable types.
+</span> <span class="keyword">double</span><span class="special">&amp;</span> <span class="identifier">sum</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">int</span><span class="special">&amp;</span> <span class="identifier">factor</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// Body uses normal C++ syntax.
+</span> <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">factor</span> <span class="special">*</span> <span class="identifier">num</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Summed: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
         <span class="special">}</span>
     <span class="special">};</span>
 
- <span class="keyword">double</span> <span class="identifier">nums</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special">=</span> <span class="special">{</span><span class="number">1</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="comment">// Unfortunately, cannot pass as
-</span> <span class="comment">// template parameter to `std::for_each`.
-</span> <span class="keyword">for</span> <span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">3</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
- <span class="comment">// Unfortunately, explicitly pass
-</span> <span class="comment">// variables `sum` and `factor`.
-</span> <span class="identifier">local</span><span class="special">::</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">nums</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">sum</span><span class="special">,</span> <span class="identifier">factor</span><span class="special">);</span>
+ <span class="comment">// Unfortunately, cannot pass as template parameter to `std::for_each`.
+</span> <span class="keyword">for</span> <span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// Unfortunately, explicitly pass variables `sum` and `factor`.
+</span> <span class="identifier">local</span><span class="special">::</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">v</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">sum</span><span class="special">,</span> <span class="identifier">factor</span><span class="special">);</span>
     <span class="special">}</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
 <p>
- </p>
- </td>
-<td>
- <p>
-
+ </p>
+<p>
+ Or using <a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Lambda_functions_and_expressions" target="_top">C++0x
+ lambda</a> functions:
+ </p>
+<p>
+
 </p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">algorithm</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
     <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
     <span class="keyword">int</span> <span class="identifier">factor</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
 
- <span class="keyword">double</span> <span class="identifier">numes</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special">=</span> <span class="special">{</span><span class="number">1</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">3</span><span class="special">,</span>
- <span class="comment">// Lambdas are defined at expression
-</span> <span class="comment">// level. Unfortunately, cannot bind
-</span> <span class="comment">// `factor` by `const&amp;`.
-</span> <span class="special">[&amp;</span><span class="identifier">sum</span><span class="special">,</span> <span class="identifier">factor</span><span class="special">](</span><span class="keyword">double</span> <span class="identifier">num</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">factor</span> <span class="special">*</span> <span class="identifier">num</span><span class="special">;</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">clog</span> <span class="special">&lt;&lt;</span> <span class="string">"Summed: "</span> <span class="special">&lt;&lt;</span>
- <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
- <span class="special">}</span>
- <span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">v</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="number">2.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special">=</span> <span class="number">3.0</span><span class="special">;</span>
+
+ <span class="comment">// Passed as template parameter and also defined at expression level.
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="special">[&amp;</span><span class="identifier">sum</span><span class="special">,</span> <span class="special">&amp;</span><span class="identifier">factor</span><span class="special">](</span><span class="keyword">double</span> <span class="identifier">num</span><span class="special">)</span> <span class="special">{</span>
+ <span class="comment">// Unfortunately, cannot make `factor` constant.
+</span> <span class="comment">// Body uses normal C++ syntax.
+</span> <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">factor</span> <span class="special">*</span> <span class="identifier">num</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Summed: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">});</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
 <p>
- </p>
- </td>
-<td>
- <p>
- The body of <code class="computeroutput"><span class="identifier">add</span></code>
- is too complex to be programmed using Boost.Lambda.
- </p>
- </td>
-<td>
- <p>
-
+ </p>
+<p>
+ Or using Boost.Lambda
+ functions:
+ </p>
+<p>
+
 </p>
-<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">lambda</span><span class="special">/</span><span class="identifier">lambda</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">algorithm</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
     <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
     <span class="keyword">int</span> <span class="identifier">factor</span> <span class="special">=</span> <span class="number">10</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">void</span><span class="special">(</span><span class="keyword">double</span><span class="special">)&gt;</span> <span class="identifier">add</span><span class="special">=(</span>
- <span class="comment">// Unfortunately, body cannot use
-</span> <span class="comment">// usual C++ syntax.
-</span> <span class="identifier">ref</span><span class="special">(</span><span class="identifier">sum</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">factor</span> <span class="special">*</span> <span class="identifier">_1</span><span class="special">,</span>
- <span class="identifier">std</span><span class="special">::</span><span class="identifier">clog</span> <span class="special">&lt;&lt;</span> <span class="identifier">var</span><span class="special">(</span><span class="string">"Summed: "</span><span class="special">)</span> <span class="special">&lt;&lt;</span>
- <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
- <span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">v</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="number">2.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special">=</span> <span class="number">3.0</span><span class="special">;</span>
 
- <span class="keyword">double</span> <span class="identifier">nums</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special">=</span> <span class="special">{</span><span class="number">1</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">3</span><span class="special">,</span> <span class="identifier">add</span><span class="special">);</span>
+ <span class="comment">// Passed as template parameter and also defined at expression level.
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="special">(</span>
+ <span class="comment">// Unfortunately, cannot make `factor` constant.
+</span> <span class="comment">// Unfortunately, body cannot use normal C++ syntax.
+</span> <span class="identifier">sum</span> <span class="special">+=</span> <span class="identifier">factor</span> <span class="special">*</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lambda</span><span class="special">::</span><span class="identifier">_1</span><span class="special">,</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lambda</span><span class="special">::</span><span class="identifier">var</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">"Summed: "</span> <span class="special">&lt;&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">lambda</span><span class="special">::</span><span class="identifier">var</span><span class="special">(</span><span class="identifier">sum</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">"\n"</span>
+ <span class="special">));</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
 <p>
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
+ </p>
+<p>
+ Or using Boost.Phoenix:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">vector</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">algorithm</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">sum</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">factor</span> <span class="special">=</span> <span class="number">10</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="identifier">v</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">v</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">=</span> <span class="number">2.0</span><span class="special">;</span> <span class="identifier">v</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special">=</span> <span class="number">3.0</span><span class="special">;</span>
+
+ <span class="comment">// Passed as template parameter and also defined at expression level.
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="special">(</span>
+ <span class="comment">// Unfortunately, cannot make `factor` constant.
+</span> <span class="comment">// Unfortunately, body cannot use normal C++ syntax.
+</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">sum</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">factor</span> <span class="special">*</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">,</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="string">"Summed: "</span><span class="special">)</span> <span class="special">&lt;&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">sum</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="string">"\n"</span>
+ <span class="special">));</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sum</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">

Modified: sandbox/local/libs/local/doc/html/boost_local/Examples.html
==============================================================================
--- sandbox/local/libs/local/doc/html/boost_local/Examples.html (original)
+++ sandbox/local/libs/local/doc/html/boost_local/Examples.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -740,9 +740,10 @@
 </h3></div></div></div>
 <p>
         The GCC compiler supports local functions under the name of <a href="http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html" target="_top">nested
- functions</a>. Nested functions are exclusively an extension of the GCC
- compiler and they are not part of any C++ standard (ISO C++, C99, C++0x,
- etc) nor they are supported by other compilers like MSVC.
+ functions</a>. Nested functions are exclusively a C extension of the
+ GCC compiler, they are not supported for C++ not even by the GCC compiler,
+ and they are not part of any C++ standard (ISO C++, C99, C++0x, etc) nor
+ they are supported by other compilers like MSVC.
       </p>
 <p>
         The following examples rework the GCC nested function examples using this

Modified: sandbox/local/libs/local/doc/html/boost_local/Getting_Started.html
==============================================================================
--- sandbox/local/libs/local/doc/html/boost_local/Getting_Started.html (original)
+++ sandbox/local/libs/local/doc/html/boost_local/Getting_Started.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -44,12 +44,13 @@
       Documentation</a>
 </h3></div></div></div>
 <p>
- Programmers should be ready to use this library, at least at a basic level,
- after reading this section and the <a class="link" href="Tutorial.html" title="Tutorial">Tutorial</a>
- section. The <a class="link" href="Advanced_Topics.html" title="Advanced Topics">Advanced Topics</a>
+ Programmers should have enough knowledge to use this library after reading
+ the <a class="link" href="../index.html#boost_local.Introduction" title="Introduction">Introduction</a>, <a class="link" href="Getting_Started.html" title="Getting Started">Getting
+ Started</a>, and <a class="link" href="Tutorial.html" title="Tutorial">Tutorial</a>
+ sections. The <a class="link" href="Advanced_Topics.html" title="Advanced Topics">Advanced Topics</a>
         and Reference sections can be consulted
- at a later point to gain a more advanced knowledge of this library features.
- All the other sections of this documentation are for reference only.
+ at a later point to gain a more advanced knowledge of the library. All the
+ other sections of this documentation are for reference only.
       </p>
 <p>
         Some footnotes are marked by the word "<span class="bold"><strong>Rationale</strong></span>"
@@ -120,7 +121,7 @@
 </pre>
 <p>
         The following symbols are part of the library private API, they are not documented,
- and they should not be directly used by programmers: <sup>[<a name="id866124" href="#ftn.id866124" class="footnote">1</a>]</sup>
+ and they should not be directly used by programmers: <sup>[<a name="id866137" href="#ftn.id866137" class="footnote">1</a>]</sup>
       </p>
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
@@ -128,15 +129,14 @@
             directory (these header files should not be directly included by programmers).
           </li>
 <li class="listitem">
- Any symbol prefixed by <code class="computeroutput"><span class="identifier">BOOST_LOCAL_AUX</span></code>.
+ Any symbol prefixed by <code class="computeroutput"><span class="identifier">BOOST_LOCAL_AUX_</span><span class="special">...</span></code>.
           </li>
 <li class="listitem">
             Any symbol within the <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">local</span><span class="special">::</span><span class="identifier">aux</span></code>
             namespace.
           </li>
 <li class="listitem">
- Any symbol prefixed by <code class="computeroutput"><span class="identifier">boost_local_aux</span></code>
- (regardless of its namespace).
+ Any symbol prefixed by <code class="computeroutput"><span class="identifier">boost_local_aux</span><span class="special">...</span></code> (regardless of its namespace).
           </li>
 </ul></div>
 </div>
@@ -152,15 +152,14 @@
         it.
       </p>
 <p>
- All configuration macros have names prefixed by <code class="computeroutput"><span class="identifier">BOOST_LOCAL_CONFIG</span></code>
- (see Reference section). It is strongly
- recommended not to change the library configuration macro definitions unless
- strictly necessary.
+ All configuration macros have names prefixed by <code class="computeroutput"><span class="identifier">BOOST_LOCAL_CONFIG_</span><span class="special">...</span></code> (see Reference
+ section). It is strongly recommended not to change the library configuration
+ macro definitions unless strictly necessary.
       </p>
 </div>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a id="ftn.id866124" href="#id866124" class="para">1</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id866137" href="#id866137" class="para">1</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> This library concatenates symbols
           specified by the programmers (e.g., the local function name) with other
           symbols (e.g., special prefixes or preprocessor line numbers) to make internal

Modified: sandbox/local/libs/local/doc/html/boost_local/Tutorial.html
==============================================================================
--- sandbox/local/libs/local/doc/html/boost_local/Tutorial.html (original)
+++ sandbox/local/libs/local/doc/html/boost_local/Tutorial.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -63,15 +63,15 @@
 <p>
         The expansion of this macros declares a functor object with the local function
         name that can be called from the enclosing scope. The usual C++ scope visibility
- rules apply to local functions for which a local function is visible and
- can be called only within the enclosing scope in which it is declared.
+ rules apply to local functions for which a local function is visible only
+ within the enclosing scope in which it is declared.
       </p>
 <p>
         The local function parameters are passed to the <code class="computeroutput"><a class="link" href="../BOOST_LOCAL_FUNCTION_PARAMS.html" title="Macro BOOST_LOCAL_FUNCTION_PARAMS">BOOST_LOCAL_FUNCTION_PARAMS</a></code>
         macro either using the <span class="emphasis"><em>sequencing macro syntax</em></span> (which
         separates the parameters by wrapping them within round parenthesis <code class="computeroutput"><span class="special">()</span></code> and it is supported on all C++ compilers)
         or using the <span class="emphasis"><em>variadic macro syntax</em></span> (which separates
- the parameters using a comma <code class="computeroutput"><span class="special">,</span></code>
+ the parameters using commas <code class="computeroutput"><span class="special">,</span></code>
         but it is supported only on C99 and later compilers):
       </p>
 <div class="informaltable"><table class="table">
@@ -96,7 +96,7 @@
                 <p>
                   <code class="computeroutput"><a class="link" href="../BOOST_LOCAL_FUNCTION_PARAMS.html" title="Macro BOOST_LOCAL_FUNCTION_PARAMS">BOOST_LOCAL_FUNCTION_PARAMS</a><span class="special">(</span></code><code class="literal"><span class="emphasis"><em>parameter-type1
                   parameter-name1</em></span></code><code class="computeroutput"><span class="special">,</span></code>
- <code class="literal"><span class="emphasis"><em>parameter-type2 parameter-name2 ...</em></span></code><code class="computeroutput"><span class="special">)</span></code>
+ <code class="literal"><span class="emphasis"><em>parameter-type2 parameter-name2, ...</em></span></code><code class="computeroutput"><span class="special">)</span></code>
                 </p>
               </td>
 <td>
@@ -114,20 +114,20 @@
         The local function body is specified in a code block <code class="computeroutput"><span class="special">{</span>
         <span class="special">...</span> <span class="special">}</span></code>
         using the usual C++ syntax. The body is specified outside any of the macros
- so eventual compiler error messages and line numbers retain their usual meaning.
- <sup>[<a name="id866811" href="#ftn.id866811" class="footnote">2</a>]</sup>
+ so eventual compiler error messages and related line numbers retain their
+ usual meaning. <sup>[<a name="id866832" href="#ftn.id866832" class="footnote">2</a>]</sup>
       </p>
 <p>
         The macro <code class="computeroutput"><a class="link" href="../BOOST_LOCAL_FUNCTION_NAME.html" title="Macro BOOST_LOCAL_FUNCTION_NAME">BOOST_LOCAL_FUNCTION_NAME</a></code>
         is used to end the local function definition and to specify the local function
- name. <sup>[<a name="id866848" href="#ftn.id866848" class="footnote">3</a>]</sup>
+ name. <sup>[<a name="id866869" href="#ftn.id866869" class="footnote">3</a>]</sup>
       </p>
 <p>
         For example, let's program a local function named <code class="computeroutput"><span class="identifier">add</span></code>
- that takes two integer numbers <code class="computeroutput"><span class="identifier">x</span></code>
- and <code class="computeroutput"><span class="identifier">y</span></code>, and adds them together
- -- for simplicity, we will not bind any of the variables in scope just yet
- (binding is explained later in this section):
+ that adds together two integer numbers <code class="computeroutput"><span class="identifier">x</span></code>
+ and <code class="computeroutput"><span class="identifier">y</span></code> -- for simplicity,
+ we will not bind any of the variables in scope just yet (binding is explained
+ later in this section):
       </p>
 <div class="informaltable"><table class="table">
 <colgroup>
@@ -159,7 +159,7 @@
         <span class="keyword">return</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">y</span><span class="special">;</span>
     <span class="special">}</span> <span class="identifier">BOOST_LOCAL_FUNCTION_NAME</span><span class="special">(</span><span class="identifier">add</span><span class="special">)</span>
 
- <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
@@ -178,7 +178,7 @@
         <span class="keyword">return</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">y</span><span class="special">;</span>
     <span class="special">}</span> <span class="identifier">BOOST_LOCAL_FUNCTION_NAME</span><span class="special">(</span><span class="identifier">add</span><span class="special">)</span>
 
- <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
@@ -187,10 +187,6 @@
               </td>
 </tr></tbody>
 </table></div>
-<p>
- Note that not all compilers that support variadic macros also support empty
- macro parameters.
- </p>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
@@ -211,8 +207,8 @@
         macro <code class="computeroutput"><a class="link" href="../BOOST_LOCAL_FUNCTION_PARAMS.html" title="Macro BOOST_LOCAL_FUNCTION_PARAMS">BOOST_LOCAL_FUNCTION_PARAMS</a></code>
         cannot be invoked with an empty set of parenthesis <code class="computeroutput"><span class="special">()</span></code>
         unless programmers use compiler extensions that support empty macro parameters
- (e.g., C99 and later compilers). However, C++ also allows to specify an empty
- parameter list using the keyword <code class="computeroutput"><span class="keyword">void</span></code>:
+ (e.g., C99 and other modern compilers). However, C++ also allows to specify
+ an empty parameter list using the keyword <code class="computeroutput"><span class="keyword">void</span></code>:
       </p>
 <pre class="programlisting"><span class="keyword">int</span> <span class="identifier">ten</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span> <span class="special">{</span>
     <span class="keyword">return</span> <span class="number">10</span><span class="special">;</span>
@@ -225,8 +221,8 @@
         macros, the macro <code class="computeroutput"><a class="link" href="../BOOST_LOCAL_FUNCTION_PARAMS.html" title="Macro BOOST_LOCAL_FUNCTION_PARAMS">BOOST_LOCAL_FUNCTION_PARAMS</a></code>
         can be invoked passing one parameter <code class="computeroutput"><span class="keyword">void</span></code>
         (without the extra parenthesis). In summary, depending on your compiler support
- for empty macro parameters and variadic macros, this library accepts any
- of the following syntaxes to specify an empty parameter list:
+ for empty macro parameters and variadic macros, this library accepts the
+ following syntaxes to specify an empty parameter list:
       </p>
 <div class="informaltable"><table class="table">
 <colgroup>
@@ -237,7 +233,7 @@
 <thead><tr>
 <th>
                 <p>
- Empty Macro Syntax (C99 and later compilers)
+ Empty Macro Syntax (C99 and other modern compilers)
                 </p>
               </th>
 <th>
@@ -283,7 +279,7 @@
 <thead><tr>
 <th>
                 <p>
- Empty Macro Syntax (C99 and later compilers)
+ Empty Macro Syntax (C99 and other modern compilers)
                 </p>
               </th>
 <th>
@@ -357,6 +353,10 @@
               </td>
 </tr></tbody>
 </table></div>
+<p>
+ Note that not all compilers that support variadic macros also support empty
+ macro parameters.
+ </p>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
@@ -366,7 +366,7 @@
         This library also allows to specify default values for the local function
         parameters. However, the usual C++ syntax for default parameters that uses
         the assignment symbol <code class="computeroutput"><span class="special">=</span></code> cannot
- be used. <sup>[<a name="id868774" href="#ftn.id868774" class="footnote">4</a>]</sup> The keyword <code class="computeroutput"><span class="keyword">default</span></code>
+ be used. <sup>[<a name="id868891" href="#ftn.id868891" class="footnote">4</a>]</sup> The keyword <code class="computeroutput"><span class="keyword">default</span></code>
         is used instead:
       </p>
 <div class="informaltable"><table class="table">
@@ -403,7 +403,7 @@
 </table></div>
 <p>
         For example, let's assume that the we want to program a local function <code class="computeroutput"><span class="identifier">add</span><span class="special">(</span><span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span><span class="special">)</span></code>
- similar to the one programmed above but where the second parameter <code class="computeroutput"><span class="identifier">y</span></code> is optional and has a default value of
+ similar to the one programmed before but where the second parameter <code class="computeroutput"><span class="identifier">y</span></code> is optional and has a default value of
         <code class="computeroutput"><span class="number">2</span></code>:
       </p>
 <div class="informaltable"><table class="table">
@@ -436,7 +436,7 @@
         <span class="keyword">return</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">y</span><span class="special">;</span>
     <span class="special">}</span> <span class="identifier">BOOST_LOCAL_FUNCTION_NAME</span><span class="special">(</span><span class="identifier">add</span><span class="special">)</span>
 
- <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
@@ -455,7 +455,7 @@
         <span class="keyword">return</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">y</span><span class="special">;</span>
     <span class="special">}</span> <span class="identifier">BOOST_LOCAL_FUNCTION_NAME</span><span class="special">(</span><span class="identifier">add</span><span class="special">)</span>
 
- <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
@@ -490,7 +490,7 @@
         <span class="keyword">return</span> <span class="identifier">x</span> <span class="special">+</span> <span class="identifier">y</span><span class="special">;</span>
     <span class="special">}</span> <span class="identifier">BOOST_LOCAL_FUNCTION_NAME</span><span class="special">(</span><span class="identifier">add</span><span class="special">)</span>
 
- <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">add</span><span class="special">(</span><span class="number">1</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
@@ -508,7 +508,7 @@
         variables, the object <code class="computeroutput"><span class="keyword">this</span></code>,
         etc) can be bound to a local function declaration. The types of bound variables
         are automatically deduced by this library using Boost.Typeof.
- <sup>[<a name="id869998" href="#ftn.id869998" class="footnote">5</a>]</sup>
+ <sup>[<a name="id870252" href="#ftn.id870252" class="footnote">5</a>]</sup>
       </p>
 <div class="important"><table border="0" summary="Important">
 <tr>
@@ -516,8 +516,8 @@
 <th align="left">Important</th>
 </tr>
 <tr><td align="left" valign="top"><p>
- User defined <span class="bold"><strong>types need to be manually registered</strong></span>
- as usual when using Boost.Typeof
+ User defined types need to be manually registered as usual when using
+ Boost.Typeof
           (see the Boost.Typeof
           documentation and the <a class="link" href="Examples.html#boost_local.Examples.Boost_Typeof_for_User_Defined_Types" title="Boost.Typeof for User Defined Types">Boost.Typeof
           for User Defined Types</a> example).
@@ -525,7 +525,7 @@
 </table></div>
 <p>
         This library introduces the new "keyword" <code class="computeroutput"><span class="identifier">bind</span></code>
- <sup>[<a name="id870086" href="#ftn.id870086" class="footnote">6</a>]</sup> which is used in place of the parameter type to specify the name
+ <sup>[<a name="id870333" href="#ftn.id870333" class="footnote">6</a>]</sup> which is used in place of the parameter type to specify the name
         of a variable in scope to bind. The variable can be bound by value:
       </p>
 <pre class="programlisting"><span class="identifier">bind</span> <span class="emphasis"><em>variable-name</em></span> <span class="comment">// Bind by value.
@@ -559,21 +559,23 @@
         to ensure that variables bound by reference survive the scope of declaration
         of the local function otherwise the bound references will be invalid causing
         run-time errors (in other words, the usual care in using C++ references must
- be used for variables bound by reference).
+ be taken for variables bound by reference).
       </p>
 <p>
         The type of bound variables is automatically deduced and it is the exact
         same type used to declare such variables in the enclosing scope. Therefore,
- if a bound variable was declared constant using the <code class="computeroutput"><span class="keyword">const</span></code>
- qualifier then it will be bound by constant value or reference and if a bound
- variable was not declared constant then it will not be bound as constant
- unless constant binding is forced using <code class="computeroutput"><span class="keyword">const</span>
+ if a bound variable is declared constant using the <code class="computeroutput"><span class="keyword">const</span></code>
+ qualifier in the enclosing scope then it will be always bound by constant
+ value or reference even if <code class="computeroutput"><span class="keyword">const</span></code>
+ is not repeated by the local function binding. On the other hand, if a bound
+ variable was not declared constant by enclosing scope then it will not be
+ bound as constant unless constant binding is forced using <code class="computeroutput"><span class="keyword">const</span>
         <span class="identifier">bind</span> <span class="special">...</span></code>
         (note that binding by constant reference is not supported by <a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Lambda_functions_and_expressions" target="_top">C++0x
- lambda</a> functions). <sup>[<a name="id870365" href="#ftn.id870365" class="footnote">7</a>]</sup> Programmers might want to bind variables of complex types by
- (constant) reference instead than by value to avoid expensive copy operations
- when these variables are automatically passed to the local function (as usual
- with C++ function parameter passing).
+ lambda</a> functions). <sup>[<a name="id870898" href="#ftn.id870898" class="footnote">7</a>]</sup> As with passing parameters to usual C++ functions, programmers
+ might want to bind variables of complex types by (constant) reference instead
+ than by value to avoid expensive copy operations when these variables are
+ bound to a local function.
       </p>
 <p>
         For example, let's program a local function <code class="computeroutput"><span class="identifier">add</span></code>
@@ -651,7 +653,7 @@
 </tr></tbody>
 </table></div>
 <a name="boost_local.Tutorial.Binding.binding_the_object__code__phrase_role__keyword__this__phrase___code_"></a><h6>
-<a name="id871353"></a>
+<a name="id871745"></a>
         <a class="link" href="Tutorial.html#boost_local.Tutorial.Binding.binding_the_object__code__phrase_role__keyword__this__phrase___code_">Binding
         the Object <code class="computeroutput"><span class="keyword">this</span></code></a>
       </h6>
@@ -689,9 +691,9 @@
         a compile-time error if programmers try to use <code class="computeroutput"><span class="identifier">bind</span><span class="special">&amp;</span> <span class="keyword">this</span></code>
         or <code class="computeroutput"><span class="keyword">const</span> <span class="identifier">bind</span><span class="special">&amp;</span> <span class="keyword">this</span></code>).
         Note that <code class="computeroutput"><span class="keyword">this</span></code> is a pointer
- so the object is not copied even if it is bound by value (it is not possible
- to bind <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
- because <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
+ so the pointed object is never copied even if <code class="computeroutput"><span class="keyword">this</span></code>
+ is bound by value (also it is not allowed to directly bind <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code> because
+ <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>
         is an expression and not a valid name of a variable in scope).
       </p>
 <div class="warning"><table border="0" summary="Warning">
@@ -702,15 +704,13 @@
 <tr><td align="left" valign="top">
 <p>
           When the object <code class="computeroutput"><span class="keyword">this</span></code> is bound
- to a local function, the local function <span class="bold"><strong>body must
- use the special symbol</strong></span> <code class="computeroutput"><span class="identifier">this_</span></code>
- (instead of <code class="computeroutput"><span class="keyword">this</span></code>) to access
- the bound object. <sup>[<a name="id871672" href="#ftn.id871672" class="footnote">8</a>]</sup>
+ to a local function, the local function body must use the special symbol
+ <code class="computeroutput"><span class="identifier">this_</span></code> (instead of <code class="computeroutput"><span class="keyword">this</span></code>) to access the bound object. <sup>[<a name="id872067" href="#ftn.id872067" class="footnote">8</a>]</sup>
         </p>
 <p>
           Unfortunately, mistakenly using <code class="computeroutput"><span class="keyword">this</span></code>
           within the local function body instead of <code class="computeroutput"><span class="identifier">this_</span></code>
- will not necessarily generate a compile-time error. <sup>[<a name="id871765" href="#ftn.id871765" class="footnote">9</a>]</sup> Programmers are responsible to make sure that <code class="computeroutput"><span class="keyword">this</span></code> is never used within a local function
+ will not necessarily generate a compile-time error. <sup>[<a name="id872161" href="#ftn.id872161" class="footnote">9</a>]</sup> Programmers are responsible to make sure that <code class="computeroutput"><span class="keyword">this</span></code> is never used within a local function
           body which should only use the special symbol <code class="computeroutput"><span class="identifier">this_</span></code>.
         </p>
 </td></tr>
@@ -874,7 +874,7 @@
         place" where the block is defined.
       </p>
 <p>
- Only bound variables specified bu <code class="literal"><span class="emphasis"><em>bindings</em></span></code>
+ Only bound variables specified by <code class="literal"><span class="emphasis"><em>bindings</em></span></code>
         are accessible from within the local block body. Following the same syntax
         used for local functions, <code class="literal"><span class="emphasis"><em>bindings</em></span></code>
         can either be empty (using <code class="computeroutput"><span class="special">(</span><span class="keyword">void</span><span class="special">)</span></code>, <code class="computeroutput"><span class="keyword">void</span></code>, or an empty macro parameter depending
@@ -892,8 +892,7 @@
 <tr><td align="left" valign="top"><p>
           A <code class="computeroutput"><span class="keyword">return</span><span class="special">;</span></code>
           instruction from within a local block jumps to the end of the local block
- body and <span class="bold"><strong>it does not return the enclosing function</strong></span>.
- <sup>[<a name="id875056" href="#ftn.id875056" class="footnote">10</a>]</sup>
+ body and it does not return the enclosing function. <sup>[<a name="id875470" href="#ftn.id875470" class="footnote">10</a>]</sup>
         </p></td></tr>
 </table></div>
 <p>
@@ -992,12 +991,20 @@
 </pre>
 <p>
         These macros expand to code that executes the body instructions when the
- enclosing scope is exited (i.e., at the very end of the enclosing scope).
+ enclosing scope is exited (e.g., at the very end of the enclosing scope).
         If multiple local exits are declared within the same scope, their bodies
- will be executed in the reverse order in which they have been declared. The
- execution of the local exit code can be guaranteed only if the program does
- not terminate because of an uncaught exception. <sup>[<a name="id876285" href="#ftn.id876285" class="footnote">11</a>]</sup>
+ will be executed in the reverse order in which they have been declared.
       </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ The execution of the local exit body code is guaranteed only if the program
+ does not terminate because of an uncaught exception. <sup>[<a name="id876683" href="#ftn.id876683" class="footnote">11</a>]</sup>
+ </p></td></tr>
+</table></div>
 <p>
         Only bound variables specified by <code class="literal"><span class="emphasis"><em>bindings</em></span></code>
         are accessible from within the local exit body. Following the same syntax
@@ -1017,7 +1024,7 @@
 <tr><td align="left" valign="top"><p>
           A <code class="computeroutput"><span class="keyword">return</span><span class="special">;</span></code>
           instruction from within a local exit jumps to the end of the local exit
- body and <span class="bold"><strong>it does not return the enclosing function</strong></span>.
+ body and it does not return the enclosing function.
         </p></td></tr>
 </table></div>
 <p>
@@ -1100,7 +1107,7 @@
         Local exits are very similar to the <span class="emphasis"><em>scope exits</em></span> provided
         by Boost.ScopeExit
         with the addition that they also support constant binding and binding of
- the object <code class="computeroutput"><span class="keyword">this</span></code>. <sup>[<a name="id877537" href="#ftn.id877537" class="footnote">12</a>]</sup> Local exits can be used to emulate the <a href="http://d.digitalmars.com" target="_top">D
+ the object <code class="computeroutput"><span class="keyword">this</span></code>. <sup>[<a name="id877939" href="#ftn.id877939" class="footnote">12</a>]</sup> Local exits can be used to emulate the <a href="http://d.digitalmars.com" target="_top">D
         Programming Language</a> <span class="emphasis"><em>scope guards</em></span> (see the
         <a class="link" href="Examples.html#boost_local.Examples.Emulating_Ds_Scope_Guards" title="Emulating D's Scope Guards">Emulating
         D's Scope Guards</a> example).
@@ -1114,7 +1121,7 @@
         When local functions, local blocks, and local exits are programmed within
         templates, they need to be declared using the following special macros ending
         with the <code class="computeroutput"><span class="identifier">TPL</span></code> postfix (see
- the Reference section): <sup>[<a name="id877819" href="#ftn.id877819" class="footnote">13</a>]</sup>
+ the Reference section): <sup>[<a name="id878222" href="#ftn.id878222" class="footnote">13</a>]</sup>
       </p>
 <pre class="programlisting"><code class="computeroutput"><a class="link" href="../BOOST_LOCAL_FUNCTION_PARAMS_TPL.html" title="Macro BOOST_LOCAL_FUNCTION_PARAMS_TPL">BOOST_LOCAL_FUNCTION_PARAMS_TPL</a></code><span class="special">(</span><span class="emphasis"><em>parameters</em></span><span class="special">)</span>
 <code class="computeroutput"><a class="link" href="../BOOST_LOCAL_BLOCK_TPL.html" title="Macro BOOST_LOCAL_BLOCK_TPL">BOOST_LOCAL_BLOCK_TPL</a></code><span class="special">(</span><span class="emphasis"><em>bindings</em></span><span class="special">)</span>
@@ -1247,20 +1254,20 @@
 </div>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a id="ftn.id866811" href="#id866811" class="para">2</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id866832" href="#id866832" class="para">2</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> If the local function body
           were instead passed as a macro parameter, it would be expanded on a single
           line of code (because macros always expand as a single line of code). Therefore,
- eventual compiler error line numbers would all have the same value and
+ eventual compiler error line numbers would all report the same value and
           would no longer be useful to pinpoint the error.
         </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id866848" href="#id866848" class="para">3</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id866869" href="#id866869" class="para">3</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> The local function name must
           be passed to the macro <code class="computeroutput"><a class="link" href="../BOOST_LOCAL_FUNCTION_NAME.html" title="Macro BOOST_LOCAL_FUNCTION_NAME">BOOST_LOCAL_FUNCTION_NAME</a></code>
           ending the function definition so this macro can declare a local variable
           with the local function name to hold the local functor object.
         </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id868774" href="#id868774" class="para">4</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id868891" href="#id868891" class="para">4</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> The assignment symbol <code class="computeroutput"><span class="special">=</span></code> cannot be used to specify default parameter
           values because default values are not part of the parameter type so they
           cannot be handled using template metaprogamming. Default parameter values
@@ -1270,7 +1277,7 @@
           it counts the number of default values to provide the correct set of call
           operators for the local functor object.
         </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id869998" href="#id869998" class="para">5</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id870252" href="#id870252" class="para">5</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> By binding a variable in scope,
           the local function declaration is specifying that such a variable should
           be accessible within the local function body regardless of its type. Semantically,
@@ -1283,7 +1290,7 @@
           This is especially useful for maintenance so if a bound variable type is
           changed, the local function declaration does not have to change.
         </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id870086" href="#id870086" class="para">6</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id870333" href="#id870333" class="para">6</a>] </sup>
           The token <code class="computeroutput"><span class="identifier">bind</span></code> is not a
           real keyword of the C++ language. This library parses <code class="computeroutput"><span class="identifier">bind</span></code>
           during macro expansion using preprocessor metaprogramming. Therefore,
@@ -1292,7 +1299,7 @@
           within the syntax defined by the macros of this library -- thus it is referred
           to as a "keyword" only within quotes.
         </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id870365" href="#id870365" class="para">7</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id870898" href="#id870898" class="para">7</a>] </sup>
           An historical note: Constant binding of variables in scope was the main
           use case that originally motivated the authors in developing this library.
           The authors needed to locally create a chuck of code to assert some correctness
@@ -1307,7 +1314,7 @@
           generates an error because the bound variable is of <code class="computeroutput"><span class="keyword">const</span></code>
           type within the local function body.
         </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id871672" href="#id871672" class="para">8</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id872067" href="#id872067" class="para">8</a>] </sup>
             <span class="bold"><strong>Rationale.</strong></span> This limitation comes from
             the fact that <code class="computeroutput"><span class="keyword">this</span></code> is a
             reserved C++ keyword so it cannot be used as the name of the internal
@@ -1321,20 +1328,20 @@
             behaviour of <code class="computeroutput"><span class="keyword">static_cast</span></code></a>
             (which might not work on all platforms at the cost of portability).
           </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id871765" href="#id871765" class="para">9</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id872161" href="#id872161" class="para">9</a>] </sup>
             <span class="bold"><strong>Rationale.</strong></span> The local function body cannot
             be a static member function of the local functor object in order to support
             recursion (because the local function name is specified 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 only after the body so it must be make available via a functor
+ macro only after the body so it must be made available via a functor
             member variable named after the local function and local classes cannot
             have static member variables in C++) and nesting (because the argument
- binding variable must be declared as a member function so it is visible
- in a local function nested within another local function body). Therefore,
+ binding variable must be declared as a member variable so it is visible
+ in a local function nested within the body member function). Therefore,
             from within the local function body the variable <code class="computeroutput"><span class="keyword">this</span></code>
             is visible but it refers to the local functor object and not to the bound
             object.
           </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id875056" href="#id875056" class="para">10</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id875470" href="#id875470" class="para">10</a>] </sup>
             <span class="bold"><strong>Rationale.</strong></span> Programmers might expect
             <code class="computeroutput"><span class="keyword">return</span><span class="special">;</span></code>
             to exit the enclosing function instead of the local block (or local exit),
@@ -1352,16 +1359,18 @@
             <code class="computeroutput"><span class="identifier">BOOST_LOCAL_RETURN</span><span class="special">;</span></code>)
             to exit local blocks (and local exits).
           </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id876285" href="#id876285" class="para">11</a>] </sup>
- <span class="bold"><strong>Rationale.</strong></span> This library (as well as Boost.ScopeExit)
- uses the destructor of a local variable to automatically execute the local
- exit code upon exit of the enclosing scope. However, in C++ it is no possible
- to (portably) ensure the execution of the destructor of all objects if
- the main program terminates because of an uncaught exception. (This is
- different from the D programming language which executes the scope exit
- code even if the main program terminates because of an uncaught exception.)
- </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id877537" href="#id877537" class="para">12</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id876683" href="#id876683" class="para">11</a>] </sup>
+ <span class="bold"><strong>Rationale.</strong></span> This library (as well as
+ Boost.ScopeExit)
+ uses the destructor of a local variable to automatically execute the
+ local exit code upon exit of the enclosing scope. However, in C++ it
+ is no possible to (portably) ensure the execution of the destructor of
+ all objects if the main program terminates because of an uncaught exception.
+ (This is different from the D programming language which executes the
+ scope exit code even if the main program terminates because of an uncaught
+ exception.)
+ </p></div>
+<div class="footnote"><p><sup>[<a id="ftn.id877939" href="#id877939" class="para">12</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> This library could be merged
           together with Boost.ScopeExit
           into a new library named Boost.Scope (from the meaning of the word "scope"
@@ -1379,16 +1388,16 @@
           <span class="identifier">bind</span></code> (in order to differentiate
           from constant and non-constant binding). Local blocks would be named "scope
           blocks" and they would be provided by the <code class="computeroutput"><span class="identifier">BOOST_SCOPE_BLOCK</span><span class="special">...</span></code> macros (the "scope block"
- names seem reasonably expressive). However, local functions would have
+ name seems reasonably expressive). However, local functions would have
           to be named "scope functions" and they would be provided by the
           <code class="computeroutput"><span class="identifier">BOOST_SCOPE_FUNCTION</span><span class="special">...</span></code>
- macros. These names might not expressive enough because local functions
- are not known under the name of "scope functions" -- they are
- indeed known by either the name of "local functions" or by the
- name of "<a href="http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html" target="_top">nested
+ macros. This name might not expressive enough because local functions are
+ not known under the name of "scope functions" -- they are indeed
+ known by either the name of "local functions" or by the name
+ of "<a href="http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html" target="_top">nested
           functions</a>" (GCC compiler extension).
         </p></div>
-<div class="footnote"><p><sup>[<a id="ftn.id877819" href="#id877819" class="para">13</a>] </sup>
+<div class="footnote"><p><sup>[<a id="ftn.id878222" href="#id878222" class="para">13</a>] </sup>
           <span class="bold"><strong>Rationale.</strong></span> Within templates, this library
           needs to use <code class="computeroutput"><span class="keyword">typename</span></code> to explicitly
           indicate that some expressions evaluate to a type. Because C++ does not

Modified: sandbox/local/libs/local/doc/html/index.html
==============================================================================
--- sandbox/local/libs/local/doc/html/index.html (original)
+++ sandbox/local/libs/local/doc/html/index.html 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -416,7 +416,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 25, 2011 at 15:58:33 GMT</small></p></td>
+<td align="left"><p><small>Last revised: March 27, 2011 at 14:50:23 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: sandbox/local/libs/local/doc/qbk/advanced_topics.qbk
==============================================================================
--- sandbox/local/libs/local/doc/qbk/advanced_topics.qbk (original)
+++ sandbox/local/libs/local/doc/qbk/advanced_topics.qbk 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -31,7 +31,7 @@
 Let's consider the following example:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [``
     ... __BOOST_LOCAL_FUNCTION_PARAMS__(
         const std::map<std::string, size_t>& m, // (1) Error.
@@ -56,7 +56,7 @@
 The macro `__BOOST_IDENTITY_TYPE__(`/parenthesized-type/`)` can be used to wrap a type within extra parenthesis `()` so to overcome this issue:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [``
     ... __BOOST_LOCAL_FUNCTION_PARAMS__(
         __BOOST_IDENTITY_TYPE__((const std::map<std::string, size_t>&)) m, // OK.
@@ -85,7 +85,7 @@
 The macros `__BOOST_IDENTITY_TYPE__` can also be used to overcome this issue:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [``
     ... __BOOST_LOCAL_FUNCTION_PARAMS__(
         ...
@@ -105,7 +105,7 @@
 For example, in this case the symbols `::` could have been simply dropped to obtain the following valid and more readable code:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [``
     ... __BOOST_LOCAL_FUNCTION_PARAMS__(
         ...
@@ -126,7 +126,7 @@
 Because this is a value expression (and not a type expression), it can be simply wrapped within an extra set of round parenthesis `()`:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [``
     ... __BOOST_LOCAL_FUNCTION_PARAMS__(
         ...
@@ -164,7 +164,7 @@
 ]
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [print_map_va_cpp] ] [ [print_map_cpp] ] ]
 ]
 
@@ -193,14 +193,14 @@
 For example:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [typeof_va_cpp] ] [ [typeof_cpp] ] ]
 ]
 
 Within templates, `__BOOST_LOCAL_TYPEOF__` does not require to be prefixed by the `typename` keyword but eventual type manipulations need the `typename` prefix as usual:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [typeof_tpl_va_cpp] ] [ [typeof_tpl_cpp] ] ]
 ]
 
@@ -240,7 +240,7 @@
 For example:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [doit_va_cpp] ] [ [doit_cpp] ] ]
 ]
 
@@ -248,7 +248,7 @@
 For example, the following local function `inc_sum` binds the local function `inc` so `inc_sum` can call `inc`:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [transform_va_cpp] ] [ [transform_cpp] ] ]
 ]
 
@@ -267,7 +267,7 @@
 For example:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [add_except_va_cpp] ] [ [add_except_cpp] ] ]
 ]
 
@@ -287,7 +287,7 @@
 For example:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [add_optimizers_va_cpp] ] [ [add_optimizers_cpp] ] ]
 ]
 
@@ -300,7 +300,7 @@
 For example, the following local function is used to recursively calculate and print the factorial of the specified numbers:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [factorial_va_cpp] ] [ [factorial_cpp] ] ]
 ]
 
@@ -313,7 +313,7 @@
 For example:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [nesting_va_cpp] ] [ [nesting_cpp] ] ]
 ]
 

Modified: sandbox/local/libs/local/doc/qbk/alternatives.qbk
==============================================================================
--- sandbox/local/libs/local/doc/qbk/alternatives.qbk (original)
+++ sandbox/local/libs/local/doc/qbk/alternatives.qbk 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -55,95 +55,31 @@
     [ Yes. ]
     [ Yes. ]
 ]
-[
- [ Examples ]
- [``
- int main() {
- double sum = 0.0;
- int factor = 10;
-
- void BOOST_LOCAL_FUNCTION_PARAMS(
- (double num) (bind& sum)
- (const bind& factor) ) {
- sum += factor * num;
- std::clog << "Summed: " <<
- sum << std::endl;
- } BOOST_LOCAL_FUNCTION_NAME(add)
-
- double nums[3] = {1, 2, 3};
- std::for_each(nums, nums + 3, add);
- return 0;
- }
- ``]
- [``
- int main() {
- double sum = 0.0;
- int factor = 10;
-
- struct local {
- static void add(double num,
- // Unfortunately, cannot bind
- // (so specify variable types).
- double& sum,
- const int& factor) {
- sum += factor * num;
- std::clog << "Summed: " <<
- sum << std::endl;
- }
- };
-
- double nums[3] = {1, 2, 3};
- // Unfortunately, cannot pass as
- // template parameter to `std::for_each`.
- for (size_t i = 0; i < 3; ++i) {
- // Unfortunately, explicitly pass
- // variables `sum` and `factor`.
- local::add(nums[i], sum, factor);
- }
- return 0;
- }
- ``]
- [``
- int main() {
- double sum = 0.0;
- int factor = 10;
-
- double numes[3] = {1, 2, 3};
- std::for_each(nums, nums + 3,
- // Lambdas are defined at expression
- // level. Unfortunately, cannot bind
- // `factor` by `const&`.
- [&sum, factor](double num) {
- sum += factor * num;
- std::clog << "Summed: " <<
- sum << std::endl;
- }
- );
- return 0;
- }
- ``]
- [ The body of `add` is too complex to be programmed using __Boost_Lambda__. ]
- [``
- int main() {
- double sum = 0.0;
- int factor = 10;
-
- boost::function<void(double)> add=(
- // Unfortunately, body cannot use
- // usual C++ syntax.
- ref(sum) += factor * _1,
- std::clog << var("Summed: ") <<
- sum << std::endl
- );
-
- double nums[3] = {1, 2, 3};
- std::for_each(nums, nums + 3, add);
- return 0;
- }
- ``]
 ]
+
+For example, using this library local functions:
+
+[table
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
+[ [ [add_boost_local_va_cpp] ] [ [add_boost_local_cpp] ] ]
 ]
 
+Or using C++ member functions of local classes:
+
+[add_local_class_cpp]
+
+Or using __CPP0x_lambda__ functions:
+
+[add_cpp0x_lambda_cpp]
+
+Or using __Boost_Lambda__ functions:
+
+[add_boost_lambda_cpp]
+
+Or using __Boost_Phoenix__:
+
+[add_boost_phoenix_cpp]
+
 [endsect]
 
 [section Local Blocks]

Modified: sandbox/local/libs/local/doc/qbk/examples.qbk
==============================================================================
--- sandbox/local/libs/local/doc/qbk/examples.qbk (original)
+++ sandbox/local/libs/local/doc/qbk/examples.qbk 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -14,7 +14,7 @@
 This example illustrates how to use __Boost_Typeof__ to register user defined types and then use these types to bind local exit variables.
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [world_exit_va_cpp] ] [ [world_exit_cpp] ] ]
 ]
 
@@ -27,14 +27,14 @@
 For example, using error codes:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [scope_guards_errno_va_cpp] ] [ [scope_guards_errno_cpp] ] ]
 ]
 
 Or similarly but using exceptions:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [scope_guards_except_va_cpp] ] [ [scope_guards_except_cpp] ] ]
 ]
 
@@ -46,7 +46,7 @@
 This example passes a local function to the STL algorithm `std::find_if`.
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [find_if_va_cpp] ] [ [find_if_cpp] ] ]
 ]
 
@@ -58,7 +58,7 @@
 This example binds the object in scope `this` to a local function.
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [this_va_cpp] ] [ [this_cpp] ] ]
 ]
 
@@ -67,12 +67,12 @@
 [section GCC Nested Functions]
 
 The GCC compiler supports local functions under the name of [@http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html nested functions].
-Nested functions are exclusively an extension of the GCC compiler and they are not part of any C++ standard (ISO C++, C99, C++0x, etc) nor they are supported by other compilers like MSVC.
+Nested functions are exclusively a C extension of the GCC compiler, they are not supported for C++ not even by the GCC compiler, and they are not part of any C++ standard (ISO C++, C99, C++0x, etc) nor they are supported by other compilers like MSVC.
 
 The following examples rework the GCC nested function examples using this library local functions.
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [gcc_square_va_cpp] ] [ [gcc_square_cpp] ] ]
 [ [ [gcc_access_va_cpp] ] [ [gcc_access_cpp] ] ]
 [ [ [gcc_store_va_cpp] ] [ [gcc_store_cpp] ] ]
@@ -85,7 +85,7 @@
 This example shows all possible parameter permutations (with and without binding, etc).
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [params_all_va_cpp] ] [ [params_all_cpp] ] ]
 ]
 

Modified: sandbox/local/libs/local/doc/qbk/getting_started.qbk
==============================================================================
--- sandbox/local/libs/local/doc/qbk/getting_started.qbk (original)
+++ sandbox/local/libs/local/doc/qbk/getting_started.qbk 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -10,8 +10,8 @@
 
 [section This Documentation]
 
-Programmers should be ready to use this library, at least at a basic level, after reading this section and the __Tutorial__ section.
-The __Advanced_Topics__ and __Reference__ sections can be consulted at a later point to gain a more advanced knowledge of this library features.
+Programmers should have enough knowledge to use this library after reading the __Introduction__, __Getting_Started__, and __Tutorial__ sections.
+The __Advanced_Topics__ and __Reference__ sections can be consulted at a later point to gain a more advanced knowledge of the library.
 All the other sections of this documentation are for reference only.
 
 Some footnotes are marked by the word "*Rationale*" because they explain reasons behind decisions made during the design and implementation of this library.
@@ -58,9 +58,9 @@
 ]
 
 * Any symbol defined by files within the `"boost/local/aux_/"` directory (these header files should not be directly included by programmers).
-* Any symbol prefixed by `BOOST_LOCAL_AUX`.
+* Any symbol prefixed by `BOOST_LOCAL_AUX_...`.
 * Any symbol within the `boost::local::aux` namespace.
-* Any symbol prefixed by `boost_local_aux` (regardless of its namespace).
+* Any symbol prefixed by `boost_local_aux...` (regardless of its namespace).
 
 [endsect]
 
@@ -69,7 +69,7 @@
 Some of the library behaviour can be changed at compile-time by defining special /configuration macros/.
 If a configuration macro is left undefined, the library will use an appropriate default value for it.
 
-All configuration macros have names prefixed by `BOOST_LOCAL_CONFIG` (see __Reference__ section).
+All configuration macros have names prefixed by `BOOST_LOCAL_CONFIG_...` (see __Reference__ section).
 It is strongly recommended not to change the library configuration macro definitions unless strictly necessary.
 
 [endsect]

Modified: sandbox/local/libs/local/doc/qbk/introduction.qbk
==============================================================================
--- sandbox/local/libs/local/doc/qbk/introduction.qbk (original)
+++ sandbox/local/libs/local/doc/qbk/introduction.qbk 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -45,7 +45,7 @@
 See the __Tutorial__ section for more details.
 
 [table
-[ [Notes] [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [Notes] [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [add_callouts_cpp] ] [ [add_va_cpp] ] [ [add_cpp] ] ]
 ]
 

Modified: sandbox/local/libs/local/doc/qbk/local.qbk
==============================================================================
--- sandbox/local/libs/local/doc/qbk/local.qbk (original)
+++ sandbox/local/libs/local/doc/qbk/local.qbk 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -70,6 +70,10 @@
 [def __BOOST_IDENTITY_VALUE__ [macroref BOOST_IDENTITY_VALUE]]
 [def __function__ [classref boost::local::function function]]
 
+[def __Variadic_Macro_Syntax__ Variadic Macro Syntax (C99 and later compilers)]
+[def __Sequencing_Macro_Syntax__ Sequencing Macro Syntax (all C++ compilers)]
+[def __Empty_Macro_Syntax__ Empty Macro Syntax (C99 and other modern compilers)]
+
 [import ../../example/add_callouts.cpp]
 [import ../../example/add.cpp]
 [import ../../example/add_va.cpp]
@@ -130,6 +134,12 @@
 [import ../../example/factorial_impl.cpp]
 [import ../../example/add_block_impl.cpp]
 [import ../../example/add_exit_impl.cpp]
+[import ../../example/add_boost_local.cpp]
+[import ../../example/add_boost_local_va.cpp]
+[import ../../example/add_local_class.cpp]
+[import ../../example/add_cpp0x_lambda.cpp]
+[import ../../example/add_boost_lambda.cpp]
+[import ../../example/add_boost_phoenix.cpp]
 
 The Boost Local library implements local functions, local blocks, and local exits for the C++ programming language.
 

Modified: sandbox/local/libs/local/doc/qbk/tutorial.qbk
==============================================================================
--- sandbox/local/libs/local/doc/qbk/tutorial.qbk (original)
+++ sandbox/local/libs/local/doc/qbk/tutorial.qbk 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -24,25 +24,25 @@
     }
 
 The expansion of this macros declares a functor object with the local function name that can be called from the enclosing scope.
-The usual C++ scope visibility rules apply to local functions for which a local function is visible and can be called only within the enclosing scope in which it is declared.
+The usual C++ scope visibility rules apply to local functions for which a local function is visible only within the enclosing scope in which it is declared.
 
-The local function parameters are passed to the `__BOOST_LOCAL_FUNCTION_PARAMS__` macro either using the /sequencing macro syntax/ (which separates the parameters by wrapping them within round parenthesis `()` and it is supported on all C++ compilers) or using the /variadic macro syntax/ (which separates the parameters using a comma `,` but it is supported only on C99 and later compilers):
+The local function parameters are passed to the `__BOOST_LOCAL_FUNCTION_PARAMS__` macro either using the /sequencing macro syntax/ (which separates the parameters by wrapping them within round parenthesis `()` and it is supported on all C++ compilers) or using the /variadic macro syntax/ (which separates the parameters using commas `,` but it is supported only on C99 and later compilers):
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [
-`__BOOST_LOCAL_FUNCTION_PARAMS__(`[^/parameter-type1 parameter-name1/]`,` [^/parameter-type2 parameter-name2 .../]`)`
+`__BOOST_LOCAL_FUNCTION_PARAMS__(`[^/parameter-type1 parameter-name1/]`,` [^/parameter-type2 parameter-name2, .../]`)`
 ] [
 `__BOOST_LOCAL_FUNCTION_PARAMS__( (`[^/parameter-type1 parameter-name1/]`) (`[^/parameter-type2 parameter-name2/]`)` [^/.../]`)`
 ] ]
 ]
 
 The local function body is specified in a code block `{ ... }` using the usual C++ syntax.
-The body is specified outside any of the macros so eventual compiler error messages and line numbers retain their usual meaning.
+The body is specified outside any of the macros so eventual compiler error messages and related line numbers retain their usual meaning.
 [footnote
 *Rationale.*
 If the local function body were instead passed as a macro parameter, it would be expanded on a single line of code (because macros always expand as a single line of code).
-Therefore, eventual compiler error line numbers would all have the same value and would no longer be useful to pinpoint the error.
+Therefore, eventual compiler error line numbers would all report the same value and would no longer be useful to pinpoint the error.
 ]
 
 The macro `__BOOST_LOCAL_FUNCTION_NAME__` is used to end the local function definition and to specify the local function name.
@@ -51,15 +51,13 @@
 The local function name must be passed to the macro `__BOOST_LOCAL_FUNCTION_NAME__` ending the function definition so this macro can declare a local variable with the local function name to hold the local functor object.
 ]
 
-For example, let's program a local function named `add` that takes two integer numbers `x` and `y`, and adds them together -- for simplicity, we will not bind any of the variables in scope just yet (binding is explained later in this section):
+For example, let's program a local function named `add` that adds together two integer numbers `x` and `y` -- for simplicity, we will not bind any of the variables in scope just yet (binding is explained later in this section):
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [add_x_y_va_cpp] ] [ [add_x_y_cpp] ] ]
 ]
 
-Note that not all compilers that support variadic macros also support empty macro parameters.
-
 [endsect]
 
 [section:Empty_Parameters Empty Parameters]
@@ -71,7 +69,7 @@
         return 10;
     }
 
-The ISO C++ standard does not allow pass empty parameters to a macro so the macro `__BOOST_LOCAL_FUNCTION_PARAMS__` cannot be invoked with an empty set of parenthesis `()` unless programmers use compiler extensions that support empty macro parameters (e.g., C99 and later compilers).
+The ISO C++ standard does not allow pass empty parameters to a macro so the macro `__BOOST_LOCAL_FUNCTION_PARAMS__` cannot be invoked with an empty set of parenthesis `()` unless programmers use compiler extensions that support empty macro parameters (e.g., C99 and other modern compilers).
 However, C++ also allows to specify an empty parameter list using the keyword `void`:
 
     int ten(void) {
@@ -80,10 +78,10 @@
 
 Therefore, on all C++ compilers the macro `__BOOST_LOCAL_FUNCTION_PARAMS__` can be invoked passing one parameter `(void)` to specify an empty parameter list.
 In addition, on compilers that support variadic macros, the macro `__BOOST_LOCAL_FUNCTION_PARAMS__` can be invoked passing one parameter `void` (without the extra parenthesis).
-In summary, depending on your compiler support for empty macro parameters and variadic macros, this library accepts any of the following syntaxes to specify an empty parameter list:
+In summary, depending on your compiler support for empty macro parameters and variadic macros, this library accepts the following syntaxes to specify an empty parameter list:
 
 [table
-[ [Empty Macro Syntax (C99 and later compilers)] [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Empty_Macro_Syntax__] [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [
 `__BOOST_LOCAL_FUNCTION_PARAMS__()`
 ] [
@@ -96,10 +94,12 @@
 For example, let's program the function `ten` as a local function:
 
 [table
-[ [Empty Macro Syntax (C99 and later compilers)] [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Empty_Macro_Syntax__] [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [ten_ep_cpp] ] [ [ten_va_cpp] ] [ [ten_cpp] ] ]
 ]
 
+Note that not all compilers that support variadic macros also support empty macro parameters.
+
 [endsect]
 
 [section Default Parameters]
@@ -114,7 +114,7 @@
 The keyword `default` is used instead:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [
 [^/parameter-type parameter-name/]`, default` [^/parameter-default-value/]`,` [^/.../]
 ] [
@@ -122,17 +122,17 @@
 ] ]
 ]
 
-For example, let's assume that the we want to program a local function `add(x, y)` similar to the one programmed above but where the second parameter `y` is optional and has a default value of `2`:
+For example, let's assume that the we want to program a local function `add(x, y)` similar to the one programmed before but where the second parameter `y` is optional and has a default value of `2`:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [add_x_y_default_va_cpp] ] [ [add_x_y_default_cpp] ] ]
 ]
 
 If this variadic macro syntax seems strange, programmers could define a `WITH_DEFAULT` macro similar to the following if they think it improves readability:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] ]
+[ [__Variadic_Macro_Syntax__] ]
 [ [ [add_x_y_default_with_va_cpp] ] ]
 ]
 
@@ -151,7 +151,7 @@
 ]
 
 [important
-User defined *types need to be manually registered* as usual when using __Boost_Typeof__ (see the __Boost_Typeof__ documentation and the __Examples_Boost_Typeof_for_User_Defined_Types__ example).
+User defined types need to be manually registered as usual when using __Boost_Typeof__ (see the __Boost_Typeof__ documentation and the __Examples_Boost_Typeof_for_User_Defined_Types__ example).
 ]
 
 This library introduces the new "keyword" `bind`
@@ -181,23 +181,24 @@
     
 If a variable is bound by value, then a copy of the variable value is taken at the point of the local function declaration.
 If a variable is bound by reference instead, the variable will refer to the value it has at the point of the local function call.
-Furthermore, it is the programmers' responsibility to ensure that variables bound by reference survive the scope of declaration of the local function otherwise the bound references will be invalid causing run-time errors (in other words, the usual care in using C++ references must be used for variables bound by reference).
+Furthermore, it is the programmers' responsibility to ensure that variables bound by reference survive the scope of declaration of the local function otherwise the bound references will be invalid causing run-time errors (in other words, the usual care in using C++ references must be taken for variables bound by reference).
 
 The type of bound variables is automatically deduced and it is the exact same type used to declare such variables in the enclosing scope.
-Therefore, if a bound variable was declared constant using the `const` qualifier then it will be bound by constant value or reference and if a bound variable was not declared constant then it will not be bound as constant unless constant binding is forced using `const bind ...` (note that binding by constant reference is not supported by __CPP0x_lambda__ functions).
+Therefore, if a bound variable is declared constant using the `const` qualifier in the enclosing scope then it will be always bound by constant value or reference even if `const` is not repeated by the local function binding.
+On the other hand, if a bound variable was not declared constant by enclosing scope then it will not be bound as constant unless constant binding is forced using `const bind ...` (note that binding by constant reference is not supported by __CPP0x_lambda__ functions).
 [footnote
 An historical note: Constant binding of variables in scope was the main use case that originally motivated the authors in developing this library.
 The authors needed to locally create a chuck of code to assert some correctness conditions while these assertions were not supposed to modify any of the variables they were using (see the __Contractpp__ library).
 This was achieved by binding by constant reference the variables needed by the assertions and then by programming the local function body to check the assertions (or more conveniently by using `__BOOST_LOCAL_BLOCK__`).
 This way if any of the assertions mistakenly changes a bound variable (for example confusing the operator `==` with `=`), the compiler correctly generates an error because the bound variable is of `const` type within the local function body.
 ]
-Programmers might want to bind variables of complex types by (constant) reference instead than by value to avoid expensive copy operations when these variables are automatically passed to the local function (as usual with C++ function parameter passing).
+As with passing parameters to usual C++ functions, programmers might want to bind variables of complex types by (constant) reference instead than by value to avoid expensive copy operations when these variables are bound to a local function.
 
 For example, let's program a local function `add` similar to the one in the example from the __Introduction__ section.
 We bind the local variable `factor` by constant value, the local variable `sum` by (non-constant) reference, and program the body to perform the summation:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [add_function_va_cpp] ] [ [add_function_cpp] ] ]
 ]
 
@@ -218,10 +219,10 @@
 In this case the local function will never be able to modify the object (regardless of whether the enclosing scope is a constant member or not).
 
 Note that the object `this` can never be bound by reference because C++ does not allow to obtain a reference to `this` (the library will generate a compile-time error if programmers try to use `bind& this` or `const bind& this`).
-Note that `this` is a pointer so the object is not copied even if it is bound by value (it is not possible to bind `*this` because `*this` is an expression and not a valid name of a variable in scope).
+Note that `this` is a pointer so the pointed object is never copied even if `this` is bound by value (also it is not allowed to directly bind `*this` because `*this` is an expression and not a valid name of a variable in scope).
 
 [warning
-When the object `this` is bound to a local function, the local function *body must use the special symbol* `this_` (instead of `this`) to access the bound object.
+When the object `this` is bound to a local function, the local function body must use the special symbol `this_` (instead of `this`) to access the bound object.
 [footnote
 *Rationale.*
 This limitation comes from the fact that `this` is a reserved C++ keyword so it cannot be used as the name of the internal parameter passing the bound object to the local function body.
@@ -231,7 +232,7 @@
 Unfortunately, mistakenly using `this` within the local function body instead of `this_` will not necessarily generate a compile-time error.
 [footnote
 *Rationale.*
-The local function body cannot be a static member function of the local functor object in order to support recursion (because the local function name is specified by the `__BOOST_LOCAL_FUNCTION_NAME__` macro only after the body so it must be make available via a functor member variable named after the local function and local classes cannot have static member variables in C++) and nesting (because the argument binding variable must be declared as a member function so it is visible in a local function nested within another local function body).
+The local function body cannot be a static member function of the local functor object in order to support recursion (because the local function name is specified by the `__BOOST_LOCAL_FUNCTION_NAME__` macro only after the body so it must be made available via a functor member variable named after the local function and local classes cannot have static member variables in C++) and nesting (because the argument binding variable must be declared as a member variable so it is visible in a local function nested within the body member function).
 Therefore, from within the local function body the variable `this` is visible but it refers to the local functor object and not to the bound object.
 ]
 Programmers are responsible to make sure that `this` is never used within a local function body which should only use the special symbol `this_`.
@@ -240,7 +241,7 @@
 For example, let's rewrite a local function `add` similar to the one in the example from the __Introduction__ section but using a member function to illustrate how to bind the object `this`:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [add_this_va_cpp] ] [ [add_this_cpp] ] ]
 ]
 
@@ -263,11 +264,11 @@
 
 These macros expand to code that executes the body instructions "in place" where the block is defined.
 
-Only bound variables specified bu [^/bindings/] are accessible from within the local block body.
+Only bound variables specified by [^/bindings/] are accessible from within the local block body.
 Following the same syntax used for local functions, [^['bindings]] can either be empty (using `(void)`, `void`, or an empty macro parameter depending on your compiler extensions, see __Tutorial_Empty_Parameters__), or they can list the variables to bind using the "keyword" `bind` in place of the parameter type, using `const bind` for constant binding, prefixing the bound variable name with `&` to bind by reference, and using `this` to bind the object in scope (see __Tutorial_Binding__).
 
 [important
-A `return;` instruction from within a local block jumps to the end of the local block body and *it does not return the enclosing function*.
+A `return;` instruction from within a local block jumps to the end of the local block body and it does not return the enclosing function.
 [footnote
 *Rationale.*
 Programmers might expect `return;` to exit the enclosing function instead of the local block (or local exit), especially if the enclosing function has a `void` result type.
@@ -279,7 +280,7 @@
 For example, let's program a local block similar to the one in the example from the __Introduction__ section:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [add_block_va_cpp] ] [ [add_block_cpp] ] ]
 ]
 
@@ -300,27 +301,30 @@
         ...
     }
 
-These macros expand to code that executes the body instructions when the enclosing scope is exited (i.e., at the very end of the enclosing scope).
+These macros expand to code that executes the body instructions when the enclosing scope is exited (e.g., at the very end of the enclosing scope).
 If multiple local exits are declared within the same scope, their bodies will be executed in the reverse order in which they have been declared.
-The execution of the local exit code can be guaranteed only if the program does not terminate because of an uncaught exception.
+
+[note
+The execution of the local exit body code is guaranteed only if the program does not terminate because of an uncaught exception.
 [footnote
 *Rationale.*
 This library (as well as __Boost_ScopeExit__) uses the destructor of a local variable to automatically execute the local exit code upon exit of the enclosing scope.
 However, in C++ it is no possible to (portably) ensure the execution of the destructor of all objects if the main program terminates because of an uncaught exception.
 (This is different from the D programming language which executes the scope exit code even if the main program terminates because of an uncaught exception.)
 ]
+]
 
 Only bound variables specified by [^['bindings]] are accessible from within the local exit body.
 Following the same syntax used for local functions, [^['bindings]] can either be empty (using `(void)`, `void`, or an empty macro parameter depending on your compiler extensions, see __Tutorial_Empty_Parameters__), or they can list the variables to bind using the "keyword" `bind` in place of the parameter type, using `const bind` for constant binding, prefixing the bound variable name with `&` to bind by reference, and using `this` to bind the object in scope (see __Tutorial_Binding__).
 
 [important
-A `return;` instruction from within a local exit jumps to the end of the local exit body and *it does not return the enclosing function*.
+A `return;` instruction from within a local exit jumps to the end of the local exit body and it does not return the enclosing function.
 ]
 
 For example, let's program a local exit similar to the one in the example from the __Introduction__ section:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [add_exit_va_cpp] ] [ [add_exit_cpp] ] ]
 ]
 
@@ -331,9 +335,9 @@
 This would be justified by the fact that `__BOOST_LOCAL_EXIT__` simply extends the functionality already provided by `BOOST_SCOPE_EXIT`.
 The headers will be `"boost/scope/function.hpp"`, `"boost/scope/block.hpp"`, and `"boost/scope/exit.hpp"` (for backward compatibility with __Boost_ScopeExit__, the header `"boost/scope_exit.hpp"` could also be kept and it would be equivalent to including `"boost/scope/exit.hpp"`).
 However, the new `BOOST_SCOPE_EXIT` macro will not be backward compatible with the current __Boost_ScopeExit__ macro because it will require to prefix the bound variable with `bind` or `const bind` (in order to differentiate from constant and non-constant binding).
-Local blocks would be named "scope blocks" and they would be provided by the `BOOST_SCOPE_BLOCK...` macros (the "scope block" names seem reasonably expressive).
+Local blocks would be named "scope blocks" and they would be provided by the `BOOST_SCOPE_BLOCK...` macros (the "scope block" name seems reasonably expressive).
 However, local functions would have to be named "scope functions" and they would be provided by the `BOOST_SCOPE_FUNCTION...` macros.
-These names might not expressive enough because local functions are not known under the name of "scope functions" -- they are indeed known by either the name of "local functions" or by the name of "[@http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html nested functions]" (GCC compiler extension).
+This name might not expressive enough because local functions are not known under the name of "scope functions" -- they are indeed known by either the name of "local functions" or by the name of "[@http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html nested functions]" (GCC compiler extension).
 ]
 Local exits can be used to emulate the __D_Programming_Language__ /scope guards/ (see the __Examples_Emulating_Ds_Scope_Guards__ example).
 
@@ -357,7 +361,7 @@
 For example, let's rewrite a local function, a local exit, and a local block similar to the ones from the __Introduction__ section but wrapped within a template:
 
 [table
-[ [Variadic Macro Syntax (C99 and later compilers)] [Sequencing Macro Syntax (all C++ compilers)] ]
+[ [__Variadic_Macro_Syntax__] [__Sequencing_Macro_Syntax__] ]
 [ [ [add_template_va_cpp] ] [ [add_template_cpp] ] ]
 ]
 

Modified: sandbox/local/libs/local/example/Jamfile.jam
==============================================================================
--- sandbox/local/libs/local/example/Jamfile.jam (original)
+++ sandbox/local/libs/local/example/Jamfile.jam 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -104,3 +104,10 @@
 exe world_exit : world_exit.cpp ;
 exe world_exit_va : world_exit_va.cpp ;
 
+exe add_boost_local : add_boost_local.cpp ;
+exe add_boost_local_va : add_boost_local_va.cpp ;
+exe add_local_class : add_local_class.cpp ;
+exe add_cpp0x_lambda : add_cpp0x_lambda.cpp ;
+exe add_boost_lambda : add_boost_lambda.cpp ;
+exe add_boost_phoenix : add_boost_phoenix.cpp ;
+

Modified: sandbox/local/libs/local/example/add_x_y.cpp
==============================================================================
--- sandbox/local/libs/local/example/add_x_y.cpp (original)
+++ sandbox/local/libs/local/example/add_x_y.cpp 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -13,7 +13,7 @@
         return x + y;
     } BOOST_LOCAL_FUNCTION_NAME(add)
 
- add(1, 2);
+ std::cout << add(1, 2) << std::endl;
     return 0;
 }
 //]

Modified: sandbox/local/libs/local/example/add_x_y_default.cpp
==============================================================================
--- sandbox/local/libs/local/example/add_x_y_default.cpp (original)
+++ sandbox/local/libs/local/example/add_x_y_default.cpp 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -13,7 +13,7 @@
         return x + y;
     } BOOST_LOCAL_FUNCTION_NAME(add)
 
- add(1);
+ std::cout << add(1) << std::endl;
     return 0;
 }
 //]

Modified: sandbox/local/libs/local/example/add_x_y_default_va.cpp
==============================================================================
--- sandbox/local/libs/local/example/add_x_y_default_va.cpp (original)
+++ sandbox/local/libs/local/example/add_x_y_default_va.cpp 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -22,7 +22,7 @@
         return x + y;
     } BOOST_LOCAL_FUNCTION_NAME(add)
 
- add(1);
+ std::cout << add(1) << std::endl;
     return 0;
 }
 //]

Modified: sandbox/local/libs/local/example/add_x_y_default_with_va.cpp
==============================================================================
--- sandbox/local/libs/local/example/add_x_y_default_with_va.cpp (original)
+++ sandbox/local/libs/local/example/add_x_y_default_with_va.cpp 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -24,7 +24,7 @@
         return x + y;
     } BOOST_LOCAL_FUNCTION_NAME(add)
 
- add(1);
+ std::cout << add(1) << std::endl;
     return 0;
 }
 //]

Modified: sandbox/local/libs/local/example/add_x_y_va.cpp
==============================================================================
--- sandbox/local/libs/local/example/add_x_y_va.cpp (original)
+++ sandbox/local/libs/local/example/add_x_y_va.cpp 2011-03-27 11:04:04 EDT (Sun, 27 Mar 2011)
@@ -22,7 +22,7 @@
         return x + y;
     } BOOST_LOCAL_FUNCTION_NAME(add)
 
- add(1, 2);
+ std::cout << add(1, 2) << std::endl;
     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