Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r76497 - in sandbox/closure: boost libs/scope_exit/doc libs/scope_exit/doc/html libs/scope_exit/doc/html/scope_exit libs/scope_exit/test
From: lorcaminiti_at_[hidden]
Date: 2012-01-14 16:38:47


Author: lcaminiti
Date: 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
New Revision: 76497
URL: http://svn.boost.org/trac/boost/changeset/76497

Log:
Final ScopeExit fixes.
Text files modified:
   sandbox/closure/boost/scope_exit.hpp | 222 +++++++++++++++++++++------------------
   sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html | 6
   sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL.html | 2
   sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_CONFIG_NO_CPP11.html | 4
   sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END.html | 4
   sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_TPL.html | 2
   sandbox/closure/libs/scope_exit/doc/html/index.html | 12 +-
   sandbox/closure/libs/scope_exit/doc/html/scope_exit/Getting_Started.html | 10 +
   sandbox/closure/libs/scope_exit/doc/html/scope_exit/No_Variadic_Macros.html | 70 +++---------
   sandbox/closure/libs/scope_exit/doc/html/scope_exit/Tutorial.html | 69 +++++------
   sandbox/closure/libs/scope_exit/doc/html/scope_exit/acknowledgements.html | 2
   sandbox/closure/libs/scope_exit/doc/html/scope_exit/annex__alternatives.html | 2
   sandbox/closure/libs/scope_exit/doc/scope_exit.qbk | 83 +++++++-------
   sandbox/closure/libs/scope_exit/test/Jamfile.v2 | 5
   sandbox/closure/libs/scope_exit/test/native.cpp | 17 +-
   sandbox/closure/libs/scope_exit/test/world.cpp | 5
   sandbox/closure/libs/scope_exit/test/world_checkpoint.cpp | 6
   sandbox/closure/libs/scope_exit/test/world_checkpoint_all.cpp | 6
   sandbox/closure/libs/scope_exit/test/world_checkpoint_all_seq.cpp | 6
   sandbox/closure/libs/scope_exit/test/world_checkpoint_seq.cpp | 6
   sandbox/closure/libs/scope_exit/test/world_seq.cpp | 5
   sandbox/closure/libs/scope_exit/test/world_this.cpp | 7 +
   sandbox/closure/libs/scope_exit/test/world_this_seq.cpp | 11 +
   sandbox/closure/libs/scope_exit/test/world_tpl.cpp | 6 +
   sandbox/closure/libs/scope_exit/test/world_tpl_seq.cpp | 6 +
   sandbox/closure/libs/scope_exit/test/world_void.cpp | 5
   26 files changed, 295 insertions(+), 284 deletions(-)

Modified: sandbox/closure/boost/scope_exit.hpp
==============================================================================
--- sandbox/closure/boost/scope_exit.hpp (original)
+++ sandbox/closure/boost/scope_exit.hpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -139,10 +139,10 @@
 #define BOOST_SCOPE_EXIT_AUX_ARGS boost_scope_exit_aux_args
 extern boost::scope_exit::detail::undeclared BOOST_SCOPE_EXIT_AUX_ARGS;
 
-#define BOOST_SCOPE_EXIT_AUX_GUARD(id) BOOST_PP_CAT(boost_se_guard_, id)
-#define BOOST_SCOPE_EXIT_AUX_GUARD_T(id) BOOST_PP_CAT(boost_se_guard_t_, id)
-#define BOOST_SCOPE_EXIT_AUX_PARAMS(id) BOOST_PP_CAT(boost_se_params_, id)
-#define BOOST_SCOPE_EXIT_AUX_THIS_T(id) BOOST_PP_CAT(boost_se_this_t_, id)
+#define BOOST_SCOPE_EXIT_AUX_GUARD(id) BOOST_PP_CAT(boost_se_guard_, id)
+#define BOOST_SCOPE_EXIT_AUX_GUARD_T(id) BOOST_PP_CAT(boost_se_guard_t_, id)
+#define BOOST_SCOPE_EXIT_AUX_PARAMS(id) BOOST_PP_CAT(boost_se_params_, id)
+#define BOOST_SCOPE_EXIT_AUX_THIS_T(id) BOOST_PP_CAT(boost_se_this_t_, id)
 
 #define BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(id) \
     BOOST_PP_CAT(boost_se_params_t_, id)
@@ -166,33 +166,40 @@
     BOOST_PP_SEQ_CAT( (boost_se_wrapped_t_)(i)(_)(id) )
 
 #define BOOST_SCOPE_EXIT_AUX_DEREF(id, i, var) \
- boost::scope_exit::detail::deref(var, (BOOST_SCOPE_EXIT_DETAIL_TAG(id,i))0)
+ ::boost::scope_exit::detail::deref(var, \
+ static_cast<BOOST_SCOPE_EXIT_DETAIL_TAG(id, i)>(0))
 
 #define BOOST_SCOPE_EXIT_AUX_MEMBER(r, id, i, var) \
- boost::scope_exit::detail::member< \
+ ::boost::scope_exit::detail::member< \
         BOOST_SCOPE_EXIT_DETAIL_PARAM_T(id, i, var), \
         BOOST_SCOPE_EXIT_DETAIL_TAG(id, i) \
> BOOST_SCOPE_EXIT_DETAIL_PARAM(id, i, var);
 
-// idty is (id,typename) or (id,BOOST_PP_EMPTY())
-#define BOOST_SCOPE_EXIT_AUX_ARG_DECL(r, idty, i, var) \
- BOOST_PP_COMMA_IF(i) BOOST_PP_TUPLE_ELEM(2,1,idty) \
- BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(BOOST_PP_TUPLE_ELEM(2,0,idty)):: \
- BOOST_SCOPE_EXIT_DETAIL_PARAM_T(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var) var
+#define BOOST_SCOPE_EXIT_AUX_ARG_DECL(r, id_ty, i, var) \
+ BOOST_PP_COMMA_IF(i) \
+ BOOST_PP_TUPLE_ELEM(2, 1, id_ty) \
+ BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(BOOST_PP_TUPLE_ELEM(2, 0, id_ty)):: \
+ BOOST_SCOPE_EXIT_DETAIL_PARAM_T(BOOST_PP_TUPLE_ELEM(2, 0, id_ty), \
+ i, var) \
+ var
  
-#define BOOST_SCOPE_EXIT_AUX_ARG(r, id, i, var) BOOST_PP_COMMA_IF(i) \
- boost_se_params_->BOOST_SCOPE_EXIT_DETAIL_PARAM(id,i,var).value
+#define BOOST_SCOPE_EXIT_AUX_ARG(r, id, i, var) \
+ BOOST_PP_COMMA_IF(i) \
+ boost_se_params_->BOOST_SCOPE_EXIT_DETAIL_PARAM(id, i, var).value
 
 #define BOOST_SCOPE_EXIT_DETAIL_TAG_DECL(r, id, i, var) \
- typedef void (*BOOST_SCOPE_EXIT_DETAIL_TAG(id,i))(int var);
+ typedef void (*BOOST_SCOPE_EXIT_DETAIL_TAG(id, i))(int var);
 
 // Adam Butcher's workaround to deduce `this` type on MSVC revision < 10.
 // Boost.Typeof for VC71's typeid-based workaround does not work to determine
 // `this` type due to error C2355 being incorrectly reported. The typical
 // avoidance strategy implemented below is to make an indirect compile-time
 // constant by assigning an enum and use that as type-index-- this only works
-// with the sizeof() approach and not with the typeid() approach.
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1300) && !defined(BOOST_TYPEOF_EMULATION)
+// with the sizeof() approach and not with the typeid() approach. This does not
+// work in typeof emulation mode.
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1300) && /* MSVC 7.1 */ \
+ BOOST_WORKAROUND(BOOST_MSVC, <= 1400) && /* MSVC 8.0 */ \
+ !defined(BOOST_TYPEOF_EMULATION) /* doesn't work in typeof-emu mode */
 
 namespace boost { namespace scope_exit { namespace aux {
         namespace msvc_typeof_this {
@@ -266,18 +273,19 @@
 
 #if BOOST_SCOPE_EXIT_AUX_TPL_WORKAROUND_01
 
-#define BOOST_SCOPE_EXIT_AUX_PARAMS_T_CTOR(id, binds, has_this)
+#define BOOST_SCOPE_EXIT_AUX_PARAMS_T_CTOR(id, captures, has_this)
 
 #define BOOST_SCOPE_EXIT_DETAIL_PARAM_INIT(r, id, i, var) \
- BOOST_PP_COMMA_IF(i) { BOOST_SCOPE_EXIT_AUX_DEREF(id,i,var) }
+ BOOST_PP_COMMA_IF(i) { BOOST_SCOPE_EXIT_AUX_DEREF(id, i, var) }
 
-#define BOOST_SCOPE_EXIT_AUX_PARAMS_INIT(id, binds, has_this) \
- BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(binds), = { ) \
- BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_DETAIL_PARAM_INIT, id, binds)\
- BOOST_PP_COMMA_IF(BOOST_PP_BITAND(BOOST_PP_LIST_IS_CONS(binds), \
+#define BOOST_SCOPE_EXIT_AUX_PARAMS_INIT(id, captures, has_this) \
+ BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(captures), = { ) \
+ BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_DETAIL_PARAM_INIT, id, \
+ captures) \
+ BOOST_PP_COMMA_IF(BOOST_PP_BITAND(BOOST_PP_LIST_IS_CONS(captures), \
                 has_this)) \
         BOOST_PP_EXPR_IIF(has_this, this) /* no extra {...} needed here */ \
- BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(binds), } )
+ BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(captures), } )
 
 #else
 
@@ -291,75 +299,86 @@
 
 #define BOOST_SCOPE_EXIT_AUX_CTOR_ARG_THIS(id, comma01) \
     BOOST_PP_COMMA_IF(comma01) \
- BOOST_SCOPE_EXIT_AUX_THIS_T(id) /* ptr type so not & */ a_this
+ BOOST_SCOPE_EXIT_AUX_THIS_T(id) /* ptr type so no & */ a_this
 
 #define BOOST_SCOPE_EXIT_AUX_MEMBER_THIS_INIT(id, comma01) \
     BOOST_PP_COMMA_IF(comma01) \
     BOOST_SCOPE_EXIT_DETAIL_PARAM_THIS(id) ( a_this )
 
-#define BOOST_SCOPE_EXIT_AUX_PARAMS_T_CTOR(id, binds, has_this) \
+#define BOOST_SCOPE_EXIT_AUX_PARAMS_T_CTOR(id, captures, has_this) \
     BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(id)( \
- BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_CTOR_ARG, id, binds) \
+ BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_CTOR_ARG, id, captures) \
         BOOST_PP_IIF(has_this, \
             BOOST_SCOPE_EXIT_AUX_CTOR_ARG_THIS \
         , \
             BOOST_PP_TUPLE_EAT(2) \
- )(id, BOOST_PP_LIST_IS_CONS(binds)) \
+ )(id, BOOST_PP_LIST_IS_CONS(captures)) \
     ) \
- BOOST_PP_EXPR_IIF(BOOST_PP_BITOR(BOOST_PP_LIST_IS_CONS(binds), \
+ BOOST_PP_EXPR_IIF(BOOST_PP_BITOR(BOOST_PP_LIST_IS_CONS(captures), \
                 has_this), \
             : \
         ) \
- BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_MEMBER_INIT, id, binds) \
+ BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_MEMBER_INIT, id, \
+ captures) \
         BOOST_PP_IIF(has_this, \
             BOOST_SCOPE_EXIT_AUX_MEMBER_THIS_INIT \
         , \
             BOOST_PP_TUPLE_EAT(2) \
- )(id, BOOST_PP_LIST_IS_CONS(binds)) \
+ )(id, BOOST_PP_LIST_IS_CONS(captures)) \
     {}
 
 #define BOOST_SCOPE_EXIT_DETAIL_PARAM_INIT(r, id, i, var) \
     BOOST_PP_COMMA_IF(i) BOOST_SCOPE_EXIT_AUX_DEREF(id,i,var)
 
-#define BOOST_SCOPE_EXIT_AUX_PARAMS_INIT(id, binds, has_this) \
- BOOST_PP_LPAREN_IF(BOOST_PP_LIST_IS_CONS(binds)) \
- BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_DETAIL_PARAM_INIT, id, binds)\
- BOOST_PP_COMMA_IF(BOOST_PP_BITAND(BOOST_PP_LIST_IS_CONS(binds), \
+#define BOOST_SCOPE_EXIT_AUX_PARAMS_INIT(id, captures, has_this) \
+ BOOST_PP_LPAREN_IF(BOOST_PP_LIST_IS_CONS(captures)) \
+ BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_DETAIL_PARAM_INIT, id, \
+ captures)\
+ BOOST_PP_COMMA_IF(BOOST_PP_BITAND(BOOST_PP_LIST_IS_CONS(captures), \
                 has_this)) \
         BOOST_PP_EXPR_IIF(has_this, this) \
- BOOST_PP_RPAREN_IF(BOOST_PP_LIST_IS_CONS(binds))
+ BOOST_PP_RPAREN_IF(BOOST_PP_LIST_IS_CONS(captures))
 
 #endif
 
 #if defined(BOOST_TYPEOF_EMULATION)
 
-#define BOOST_SCOPE_EXIT_DETAIL_CAPTURE_DECL(r, idty, i, var) \
- struct BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2,0,idty), i) \
- : BOOST_TYPEOF(boost::scope_exit::detail::wrap( \
- BOOST_SCOPE_EXIT_AUX_DEREF(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var))) \
- {}; typedef BOOST_PP_TUPLE_ELEM(2,1,idty) \
- BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2,0,idty), i)::type \
- BOOST_SCOPE_EXIT_DETAIL_CAPTURE_T(BOOST_PP_TUPLE_ELEM(2,0,idty), i, \
- var);
+#define BOOST_SCOPE_EXIT_DETAIL_CAPTURE_DECL(r, id_ty, i, var) \
+ struct BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2, 0, id_ty), i) \
+ : BOOST_TYPEOF(::boost::scope_exit::detail::wrap( \
+ BOOST_SCOPE_EXIT_AUX_DEREF(BOOST_PP_TUPLE_ELEM(2, 0, id_ty), \
+ i, var))) \
+ {}; \
+ typedef BOOST_PP_TUPLE_ELEM(2, 1,id_ty) \
+ BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2, 0, id_ty), i)::type\
+ BOOST_SCOPE_EXIT_DETAIL_CAPTURE_T(BOOST_PP_TUPLE_ELEM(2, 0, id_ty), \
+ i, var) \
+ ;
 
 #elif defined(BOOST_INTEL)
 
-#define BOOST_SCOPE_EXIT_DETAIL_CAPTURE_DECL(r, idty, i, var) \
- typedef BOOST_TYPEOF_KEYWORD( \
- BOOST_SCOPE_EXIT_AUX_DEREF(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var)) \
- BOOST_SCOPE_EXIT_DETAIL_CAPTURE_T(BOOST_PP_TUPLE_ELEM(2,0,idty), i, \
- var);
+#define BOOST_SCOPE_EXIT_DETAIL_CAPTURE_DECL(r, id_ty, i, var) \
+ typedef \
+ BOOST_TYPEOF_KEYWORD(BOOST_SCOPE_EXIT_AUX_DEREF( \
+ BOOST_PP_TUPLE_ELEM(2, 0, id_ty), i, var)) \
+ BOOST_SCOPE_EXIT_DETAIL_CAPTURE_T(BOOST_PP_TUPLE_ELEM(2, 0, id_ty), \
+ i, var) \
+ ;
 
 #else
 
-#define BOOST_SCOPE_EXIT_DETAIL_CAPTURE_DECL(r, idty, i, var) \
- typedef BOOST_TYPEOF(boost::scope_exit::detail::wrap( \
- BOOST_SCOPE_EXIT_AUX_DEREF(BOOST_PP_TUPLE_ELEM(2,0,idty), i, var))) \
- BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2,0,idty), i); \
- typedef BOOST_PP_TUPLE_ELEM(2,1,idty) \
- BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2,0,idty), i)::type \
- BOOST_SCOPE_EXIT_DETAIL_CAPTURE_T(BOOST_PP_TUPLE_ELEM(2,0,idty), i, \
- var);
+#define BOOST_SCOPE_EXIT_DETAIL_CAPTURE_DECL(r, id_ty, i, var) \
+ typedef \
+ BOOST_TYPEOF(::boost::scope_exit::detail::wrap( \
+ BOOST_SCOPE_EXIT_AUX_DEREF(BOOST_PP_TUPLE_ELEM(2, 0, id_ty), \
+ i, var))) \
+ BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2, 0, id_ty), i) \
+ ; \
+ typedef BOOST_PP_TUPLE_ELEM(2, 1, id_ty) \
+ BOOST_SCOPE_EXIT_AUX_WRAPPED(BOOST_PP_TUPLE_ELEM(2, 0, id_ty), i)::type\
+ BOOST_SCOPE_EXIT_DETAIL_CAPTURE_T(BOOST_PP_TUPLE_ELEM(2, 0, id_ty), \
+ i, var) \
+ ;
 
 #endif
 
@@ -373,38 +392,39 @@
 
 // Traits.
 
-#define BOOST_SCOPE_EXIT_AUX_TRAITS_OP_BIND(d, binds, this01, bind) \
- (BOOST_PP_LIST_APPEND(binds, (bind, BOOST_PP_NIL)), this01)
+#define BOOST_SCOPE_EXIT_AUX_TRAITS_OP_CAPTURE(d, captures, this01, capture) \
+ (BOOST_PP_LIST_APPEND(captures, (capture, BOOST_PP_NIL)), this01)
 
-#define BOOST_SCOPE_EXIT_AUX_TRAITS_OP_THIS(d, binds, this01, this_) \
- (binds, 1 /* has this (even if had it before, could have multiple this_) */)
+#define BOOST_SCOPE_EXIT_AUX_TRAITS_OP_THIS(d, captures, this01, this_) \
+ (captures, 1 /* has this (note, no error if multiple this_) */)
 
-#define BOOST_SCOPE_EXIT_AUX_TRAITS_OP(d, binds_this, bind) \
- BOOST_PP_IIF(BOOST_CLOSURE_DETAIL_PP_KEYWORD_IS_THISUNDERSCORE_BACK(bind), \
+#define BOOST_SCOPE_EXIT_AUX_TRAITS_OP(d, captures_this, capture) \
+ BOOST_PP_IIF(BOOST_CLOSURE_DETAIL_PP_KEYWORD_IS_THISUNDERSCORE_BACK( \
+ capture), \
         BOOST_SCOPE_EXIT_AUX_TRAITS_OP_THIS \
     , \
- BOOST_SCOPE_EXIT_AUX_TRAITS_OP_BIND \
- )(d, BOOST_PP_TUPLE_ELEM(2, 0, binds_this), \
- BOOST_PP_TUPLE_ELEM(2, 1, binds_this), bind)
+ BOOST_SCOPE_EXIT_AUX_TRAITS_OP_CAPTURE \
+ )(d, BOOST_PP_TUPLE_ELEM(2, 0, captures_this), \
+ BOOST_PP_TUPLE_ELEM(2, 1, captures_this), capture)
 
 // ref_val: & | =
 #define BOOST_SCOPE_EXIT_AUX_TRAITS_ALL_OP(ref_val, traits) \
     ( \
         BOOST_PP_LIST_APPEND((ref_val, BOOST_PP_NIL), \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits)) \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits)) \
     , \
         BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS(traits) \
     )
 
-#define BOOST_SCOPE_EXIT_AUX_TRAITS(binds) \
+#define BOOST_SCOPE_EXIT_AUX_TRAITS(captures) \
     BOOST_PP_LIST_FOLD_LEFT(BOOST_SCOPE_EXIT_AUX_TRAITS_OP, \
- (BOOST_PP_NIL, 0), binds)
+ (BOOST_PP_NIL, 0), captures)
 
-#define BOOST_SCOPE_EXIT_AUX_TRAITS_ALL(binds) \
- BOOST_SCOPE_EXIT_AUX_TRAITS_ALL_OP(BOOST_PP_LIST_FIRST(binds), \
- BOOST_SCOPE_EXIT_AUX_TRAITS(BOOST_PP_LIST_REST(binds)))
+#define BOOST_SCOPE_EXIT_AUX_TRAITS_ALL(captures) \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_ALL_OP(BOOST_PP_LIST_FIRST(captures), \
+ BOOST_SCOPE_EXIT_AUX_TRAITS(BOOST_PP_LIST_REST(captures)))
 
-#define BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits) \
+#define BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits) \
     BOOST_PP_TUPLE_ELEM(2, 0, traits)
 
 #define BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS(traits) \
@@ -415,7 +435,7 @@
 namespace boost { namespace scope_exit { namespace aux {
 
 template<typename This = void>
-struct guard { // With object `this_` binding (for backward compatibility).
+struct guard { // With object `this_` (for backward compatibility).
     explicit guard(This _this) : this_(_this) {}
     ~guard() { if(f_) f_(this_); }
     template<typename Lambda>
@@ -426,7 +446,7 @@
 };
 
 template<>
-struct guard<void> { // Without object `this_` binding (cant still bind `this`).
+struct guard<void> { // Without object `this_` (could capture `this` directly).
     ~guard() { if(f_) f_(); }
     template<typename Lambda>
     void operator=(Lambda f) { f_ = f; }
@@ -450,7 +470,7 @@
         ) \
     ; \
     BOOST_SCOPE_EXIT_AUX_GUARD(id) = [ \
- BOOST_PP_LIST_ENUM(BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits)) \
+ BOOST_PP_LIST_ENUM(BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits)) \
     ]( \
         BOOST_PP_IIF(BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS(traits), \
             /* no need for TYPEDEF THIS MSVC workaround on C++11 */ \
@@ -463,18 +483,12 @@
 
 #else // No lambdas.
 
-/** @todo rename binds/BINDS to captures/CAPTURES */
-/** @todo prefix all boost::... as ::boost::.. within macros */
-/** @todo unjustify the newline within macros */
-/** @todo test capture this_ with TYPEOF_EMULATION */
-/** @todo test capture this_ within template with GCC (_TPL) */
-
 // ty: EMPTY() | typename
 #define BOOST_SCOPE_EXIT_AUX_IMPL(id, traits, ty) \
     BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_DETAIL_TAG_DECL, id, \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits)) \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits)) \
     BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_DETAIL_CAPTURE_DECL, (id, ty), \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits)) \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits)) \
     BOOST_PP_IIF(BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS(traits), \
         BOOST_SCOPE_EXIT_DETAIL_TYPEDEF_TYPEOF_THIS \
     , \
@@ -482,24 +496,26 @@
     )(id, BOOST_SCOPE_EXIT_AUX_THIS_T(id)) \
     struct BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(id) { \
         BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_DETAIL_PARAM_DECL, (id, ty), \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits)) \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits)) \
         BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_MEMBER, id, \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits)) \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits)) \
         BOOST_PP_EXPR_IIF(BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS(traits), \
             BOOST_SCOPE_EXIT_AUX_THIS_T(id) \
                     BOOST_SCOPE_EXIT_DETAIL_PARAM_THIS(id) ; \
         ) \
         BOOST_SCOPE_EXIT_AUX_PARAMS_T_CTOR(id, \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits), \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits), \
                 BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS(traits)) \
     } BOOST_SCOPE_EXIT_AUX_PARAMS(id) \
         BOOST_SCOPE_EXIT_AUX_PARAMS_INIT(id, \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits), \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits), \
                 BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS(traits)) \
     ; \
- ::boost::scope_exit::detail::declared< boost::scope_exit::detail::resolve< \
- sizeof(BOOST_SCOPE_EXIT_AUX_ARGS)>::cmp1<0>::cmp2 > \
- BOOST_SCOPE_EXIT_AUX_ARGS; \
+ ::boost::scope_exit::detail::declared< \
+ ::boost::scope_exit::detail::resolve< \
+ sizeof(BOOST_SCOPE_EXIT_AUX_ARGS) \
+ >::cmp1<0>::cmp2 \
+ > BOOST_SCOPE_EXIT_AUX_ARGS; \
     BOOST_SCOPE_EXIT_AUX_ARGS.value = &BOOST_SCOPE_EXIT_AUX_PARAMS(id); \
     struct BOOST_SCOPE_EXIT_AUX_GUARD_T(id) { \
         BOOST_SCOPE_EXIT_DETAIL_PARAMS_T(id)* boost_se_params_; \
@@ -510,9 +526,9 @@
         ~BOOST_SCOPE_EXIT_AUX_GUARD_T(id)() { \
             boost_se_body( \
                 BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_ARG, id, \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits)) \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits)) \
                 BOOST_PP_COMMA_IF(BOOST_PP_BITAND(BOOST_PP_LIST_IS_CONS( \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits)), \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits)), \
                         BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS(traits))) \
                 BOOST_PP_EXPR_IIF(BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS( \
                         traits), \
@@ -522,9 +538,9 @@
         } \
         static void boost_se_body( \
             BOOST_PP_LIST_FOR_EACH_I(BOOST_SCOPE_EXIT_AUX_ARG_DECL, (id, ty), \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits)) \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits)) \
             BOOST_PP_COMMA_IF(BOOST_PP_BITAND(BOOST_PP_LIST_IS_CONS( \
- BOOST_SCOPE_EXIT_AUX_TRAITS_BINDS(traits)), \
+ BOOST_SCOPE_EXIT_AUX_TRAITS_CAPTURES(traits)), \
                     BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS(traits))) \
             BOOST_PP_EXPR_IIF(BOOST_SCOPE_EXIT_AUX_TRAITS_HAS_THIS(traits), \
                 BOOST_SCOPE_EXIT_AUX_THIS_T(id) this_ \
@@ -557,11 +573,11 @@
             BOOST_SCOPE_EXIT(void_or_seq)
 # endif
 # if defined(BOOST_SCOPE_EXIT_AUX_LAMBDAS) /* C++11 only */ \
-# define BOOST_SCOPE_EXIT_ALL(void_or_seq) \
+# define BOOST_SCOPE_EXIT_ALL(seq) \
             BOOST_SCOPE_EXIT_AUX_IMPL( \
                   BOOST_CLOSURE_DETAIL_PP_LINE_COUNTER \
                 , BOOST_SCOPE_EXIT_AUX_TRAITS_ALL( \
- BOOST_CLOSURE_DETAIL_PP_VOID_LIST(void_or_seq)) \
+ BOOST_CLOSURE_DETAIL_PP_NON_VOID_LIST(seq)) \
                 , ~ /* unused on C++11 */ \
             )
 # endif
@@ -591,7 +607,7 @@
             BOOST_SCOPE_EXIT_AUX_IMPL( \
                   BOOST_CLOSURE_DETAIL_PP_LINE_COUNTER \
                 , BOOST_SCOPE_EXIT_AUX_TRAITS_ALL( \
- BOOST_CLOSURE_DETAIL_PP_VOID_LIST(__VA_ARGS__)) \
+ BOOST_CLOSURE_DETAIL_PP_NON_VOID_LIST(__VA_ARGS__)) \
                 , ~ /* unused on C++11 */ \
             )
 # endif
@@ -672,15 +688,15 @@
 
 Only variables listed in the capture list, static variables, <c>extern</c> variables, global variables, functions, and enumerations from the enclosing scope can be used inside the scope exit body.
 
+On various GCC versions the special macro @RefMacro{BOOST_SCOPE_EXIT_TPL} must be used instead of @RefMacro{BOOST_SCOPE_EXIT} within templates (this is not necessary on C++11).
+
+On C++11, it is possible capture all variables in scope without listing their names using the macro @RefMacro{BOOST_SCOPE_EXIT_ALL}.
+
 @Warning The implementation executes the scope exit body within a destructor thus the scope exit body must never throw in order to comply with STL exception safety requirements.
 
 @Note The implementation uses Boost.Typeof to automatically deduce the types of the captured variables.
 In order to compile code in typeof-emulation mode, Boost.Typeof must be properly configured (see the @RefSectId{Getting_Started, Getting Started} section).
 
-_at_Note On various GCC versions the special macro @RefMacro{BOOST_SCOPE_EXIT_TPL} must be used instead of @RefMacro{BOOST_SCOPE_EXIT} within templates (this is not necessary on C++11).
-
-_at_Note On C++11, it is possible capture all variables in scope without listing their names using the macro @RefMacro{BOOST_SCOPE_EXIT_ALL}.
-
 @See @RefSect{Tutorial} section, @RefSectId{Getting_Started, Getting Started} section, @RefSectId{No_Variadic_Macros, No Variadic Macros} section, @RefMacro{BOOST_SCOPE_EXIT_TPL}, @RefMacro{BOOST_SCOPE_EXIT_ALL}, @RefMacro{BOOST_SCOPE_EXIT_END}.
 */
 #define BOOST_SCOPE_EXIT(capture_list)
@@ -796,7 +812,7 @@
     }
 @endcode
 
-On C++11, this macro is not necessary and it can be replaced by a semi-column <c>;</c>
+On C++11, this macro is not necessary and it can be replaced by a semi-column <c>;</c> :
 @code
     { // Some local scope.
         ...
@@ -813,7 +829,7 @@
 #define BOOST_SCOPE_EXIT_END
 
 /**
-_at_brief Force to not use C++11 features.
+@brief Force not to use C++11 features.
 
 If programmers define this configuration macro, C++11 features will not be used even on C++11 compilers (only C++03 features will be used).
 By default this macro is not defined.

Modified: sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT(capture_list)</pre></div>
 <div class="refsect1">
-<a name="id788771"></a><h2>Description</h2>
+<a name="id799134"></a><h2>Description</h2>
 <p>The scope exit declaration schedules the execution of the scope exit body at the exit of the enclosing scope:</p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some local scope.</span>
         <span class="special">...</span>
@@ -74,10 +74,10 @@
 <p>From within a member function, the object <code class="computeroutput">this</code> can be captured using the special symbol <code class="computeroutput">this_</code> in both the capture list and the scope exit body (using <code class="computeroutput">this</code> instead of <code class="computeroutput">this_</code> in the scope exit body leads to undefined behaviour). On C++11 it is possible (but not required) to use <code class="computeroutput">this</code> instead of <code class="computeroutput">this_</code>.</p>
 <p>It is possible to capture no variable by specifying the capture list as <code class="computeroutput">void</code> (regardless of variadic macro support).</p>
 <p>Only variables listed in the capture list, static variables, <code class="computeroutput">extern</code> variables, global variables, functions, and enumerations from the enclosing scope can be used inside the scope exit body.</p>
+<p>On various GCC versions the special macro <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code> must be used instead of <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> within templates (this is not necessary on C++11).</p>
+<p>On C++11, it is possible capture all variables in scope without listing their names using the macro <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code>.</p>
 <p><span class="bold"><strong>Warning:</strong></span> The implementation executes the scope exit body within a destructor thus the scope exit body must never throw in order to comply with STL exception safety requirements.</p>
 <p><span class="bold"><strong>Note:</strong></span> The implementation uses Boost.Typeof to automatically deduce the types of the captured variables. In order to compile code in typeof-emulation mode, Boost.Typeof must be properly configured (see the <a class="link" href="scope_exit/Getting_Started.html" title="Getting Started"> Getting Started</a> section).</p>
-<p><span class="bold"><strong>Note:</strong></span> On various GCC versions the special macro <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code> must be used instead of <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> within templates (this is not necessary on C++11).</p>
-<p><span class="bold"><strong>Note:</strong></span> On C++11, it is possible capture all variables in scope without listing their names using the macro <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code>.</p>
 <p><span class="bold"><strong>See:</strong></span> <a class="link" href="scope_exit/Tutorial.html" title="Tutorial">Tutorial</a> section, <a class="link" href="scope_exit/Getting_Started.html" title="Getting Started"> Getting Started</a> section, <a class="link" href="scope_exit/No_Variadic_Macros.html" title="Annex: No Variadic Macros"> No Variadic Macros</a> section, <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code>, <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code>, <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_END.html" title="Macro BOOST_SCOPE_EXIT_END">BOOST_SCOPE_EXIT_END</a></code>. </p>
 </div>
 </div>

Modified: sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_ALL.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT_ALL(capture_list)</pre></div>
 <div class="refsect1">
-<a name="id790922"></a><h2>Description</h2>
+<a name="id800185"></a><h2>Description</h2>
 <p><span class="bold"><strong>Warning:</strong></span> This macro is only available on C++11 compilers. It is not defined on non-C++11 compilers so its use on non-C++11 compilers will generate a compiler error.</p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some local scope.</span>
         <span class="special">...</span>

Modified: sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_CONFIG_NO_CPP11.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_CONFIG_NO_CPP11.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_CONFIG_NO_CPP11.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -26,14 +26,14 @@
 <a name="BOOST_SCOPE_EXIT_CONFIG_NO_CPP11"></a><div class="titlepage"></div>
 <div class="refnamediv">
 <h2><span class="refentrytitle">Macro BOOST_SCOPE_EXIT_CONFIG_NO_CPP11</span></h2>
-<p>BOOST_SCOPE_EXIT_CONFIG_NO_CPP11 &#8212; Force to not use C++11 features. </p>
+<p>BOOST_SCOPE_EXIT_CONFIG_NO_CPP11 &#8212; Force not to use C++11 features. </p>
 </div>
 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="reference.html#header.boost.scope_exit_hpp" title="Header &lt;boost/scope_exit.hpp&gt;">boost/scope_exit.hpp</a>&gt;
 
 </span>BOOST_SCOPE_EXIT_CONFIG_NO_CPP11</pre></div>
 <div class="refsect1">
-<a name="id791662"></a><h2>Description</h2>
+<a name="id802017"></a><h2>Description</h2>
 <p>If programmers define this configuration macro, C++11 features will not be used even on C++11 compilers (only C++03 features will be used). By default this macro is not defined.</p>
 <p><span class="bold"><strong>Note:</strong></span> This macro does not disable comma-separated capture lists on compilers that support variadic macros (programmers can simply use Boost.Preprocessor sequences if they do not wish to use comma-separated capture lists).</p>
 <p><span class="bold"><strong>See:</strong></span> <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code>, <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code>, <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_END.html" title="Macro BOOST_SCOPE_EXIT_END">BOOST_SCOPE_EXIT_END</a></code>. </p>

Modified: sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_END.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT_END</pre></div>
 <div class="refsect1">
-<a name="id791436"></a><h2>Description</h2>
+<a name="id801791"></a><h2>Description</h2>
 <p>This macro must follow the closing curly bracket <code class="computeroutput">}</code> that ends the scope exit body:</p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some local scope.</span>
         <span class="special">...</span>
@@ -43,7 +43,7 @@
         <span class="special">...</span>
     <span class="special">}</span>
 </pre>
-<p>On C++11, this macro is not necessary and it can be replaced by a semi-column <code class="computeroutput">;</code> </p>
+<p>On C++11, this macro is not necessary and it can be replaced by a semi-column <code class="computeroutput">;</code> : </p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some local scope.</span>
         <span class="special">...</span>
         <span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(</span><span class="identifier">capture_list</span><span class="special">)</span> <span class="special">{</span>

Modified: sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_TPL.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_TPL.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/BOOST_SCOPE_EXIT_TPL.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -33,7 +33,7 @@
 
 </span>BOOST_SCOPE_EXIT_TPL(capture_list)</pre></div>
 <div class="refsect1">
-<a name="id789308"></a><h2>Description</h2>
+<a name="id799663"></a><h2>Description</h2>
 <p>Various versions of the GCC compiler do not compile <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> inside function templates. As a workaround, <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code> should be used instead of <code class="computeroutput"><a class="link" href="BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> in these cases:</p>
 <pre class="programlisting"> <span class="special">{</span> <span class="comment">// Some local scope.</span>
         <span class="special">...</span>

Modified: sandbox/closure/libs/scope_exit/doc/html/index.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/index.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/index.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -125,16 +125,16 @@
 <br><hr width="100" align="left">
 <div class="footnote"><p><sup>[<a id="ftn.scope_exit.intro.f0" href="#scope_exit.intro.f0" class="para">1</a>] </sup>
         Older versions of this library used a <a href="../../../../libs/preprocessor/index.html" target="_top">Boost.Preprocessor
- sequence</a> to specify the list of captured variable. While maintaining
- full backward compatibility, it is now also possible to specify the captured
- variables as a comma-separated list (which is the preferred syntax). See
- the <a class="link" href="scope_exit/No_Variadic_Macros.html" title="Annex: No Variadic Macros">No Variadic Macros</a>
- section for more details.
+ sequence</a> to specify the list of captured variables. While maintaining
+ full backward compatibility, it is now possible to specify the captured variables
+ also as a comma-separated list (which is the preferred syntax). See the
+ <a class="link" href="scope_exit/No_Variadic_Macros.html" title="Annex: No Variadic Macros">No Variadic Macros</a> section
+ for more details.
       </p></div>
 </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: January 13, 2012 at 22:45:48 GMT</small></p></td>
+<td align="left"><p><small>Last revised: January 14, 2012 at 21:32:03 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: sandbox/closure/libs/scope_exit/doc/html/scope_exit/Getting_Started.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/scope_exit/Getting_Started.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/scope_exit/Getting_Started.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -32,7 +32,7 @@
 <dt><span class="section">Installation</span></dt>
 </dl></div>
 <p>
- This section explains how to setup your system to use this library.
+ This section explains how to setup a system to use this library.
     </p>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
@@ -46,7 +46,11 @@
 <div class="itemizedlist"><ul class="itemizedlist" type="disc">
 <li class="listitem">
             MSVC 7.1 and 8.0 fail to link if a function with <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a>
- is included by multiple translation units.
+ is included by multiple translation units. Furthermore, on MSVC 7.1 and
+ 8.0 it is possible to capture the object <code class="computeroutput"><span class="identifier">this_</span></code>
+ only with native Boost.Typeof
+ (and not in Boost.Typeof
+ emulation mode).
           </li>
 <li class="listitem">
             GCC 3.3 cannot compile <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a> inside
@@ -84,7 +88,7 @@
         When using comma-separated lists to specify captures (see the <a class="link" href="No_Variadic_Macros.html" title="Annex: No Variadic Macros">No
         Variadic Macros</a> section), make sure that the <code class="computeroutput"><span class="identifier">BOOST_PP_VARIADICS</span></code>
         macro is defined (either automatically by Boost.Preprocessor
- or manually using your compiler options <code class="computeroutput"><span class="special">-</span><span class="identifier">D</span></code>, <code class="computeroutput"><span class="special">/</span><span class="identifier">D</span></code>, etc). <sup>[<a name="scope_exit.Getting_Started.installation.f0" href="#ftn.scope_exit.Getting_Started.installation.f0" class="footnote">2</a>]</sup>
+ or manually using compiler options <code class="computeroutput"><span class="special">-</span><span class="identifier">D</span></code>, <code class="computeroutput"><span class="special">/</span><span class="identifier">D</span></code>, etc). <sup>[<a name="scope_exit.Getting_Started.installation.f0" href="#ftn.scope_exit.Getting_Started.installation.f0" class="footnote">2</a>]</sup>
       </p>
 </div>
 <div class="footnotes">

Modified: sandbox/closure/libs/scope_exit/doc/html/scope_exit/No_Variadic_Macros.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/scope_exit/No_Variadic_Macros.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/scope_exit/No_Variadic_Macros.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -62,32 +62,16 @@
 <p>
 </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">world</span><span class="special">::</span><span class="identifier">add_person</span><span class="special">(</span><span class="identifier">person</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a_person</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">a_person</span><span class="special">);</span>
-
- <span class="comment">// This block must be no-throw.</span>
- <span class="identifier">person</span><span class="special">&amp;</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">back</span><span class="special">();</span>
- <span class="identifier">person</span><span class="special">::</span><span class="identifier">evolution_t</span> <span class="identifier">checkpoint</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">evolution_</span><span class="special">;</span>
- <span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(</span> <span class="special">(</span><span class="identifier">checkpoint</span><span class="special">)</span> <span class="special">(&amp;</span><span class="identifier">p</span><span class="special">)</span> <span class="special">(&amp;</span><span class="identifier">persons_</span><span class="special">)</span> <span class="special">)</span> <span class="special">{</span> <span class="comment">// Sequence, not commas.</span>
- <span class="keyword">if</span><span class="special">(</span><span class="identifier">checkpoint</span> <span class="special">==</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">evolution_</span><span class="special">)</span> <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
- <span class="special">}</span> <span class="identifier">BOOST_SCOPE_EXIT_END</span>
+ <span class="keyword">bool</span> <span class="identifier">commit</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
 
- <span class="comment">// ...</span>
-
- <span class="identifier">checkpoint</span> <span class="special">=</span> <span class="special">++</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">evolution_</span><span class="special">;</span>
-
- <span class="comment">// Assign new identifier to the person.</span>
- <span class="identifier">world</span><span class="special">::</span><span class="identifier">id_t</span> <span class="keyword">const</span> <span class="identifier">prev_id</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">id_</span><span class="special">;</span>
- <span class="identifier">p</span><span class="special">.</span><span class="identifier">id_</span> <span class="special">=</span> <span class="identifier">next_id_</span><span class="special">++;</span>
- <span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(</span> <span class="special">(</span><span class="identifier">checkpoint</span><span class="special">)</span> <span class="special">(&amp;</span><span class="identifier">p</span><span class="special">)</span> <span class="special">(&amp;</span><span class="identifier">next_id_</span><span class="special">)</span> <span class="special">(</span><span class="identifier">prev_id</span><span class="special">)</span> <span class="special">)</span> <span class="special">{</span>
- <span class="keyword">if</span><span class="special">(</span><span class="identifier">checkpoint</span> <span class="special">==</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">evolution_</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">next_id_</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">id_</span><span class="special">;</span>
- <span class="identifier">p</span><span class="special">.</span><span class="identifier">id_</span> <span class="special">=</span> <span class="identifier">prev_id</span><span class="special">;</span>
- <span class="special">}</span>
+ <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">a_person</span><span class="special">);</span>
+ <span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(</span> <span class="special">(&amp;</span><span class="identifier">commit</span><span class="special">)</span> <span class="special">(&amp;</span><span class="identifier">persons_</span><span class="special">)</span> <span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">if</span><span class="special">(!</span><span class="identifier">commit</span><span class="special">)</span> <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
     <span class="special">}</span> <span class="identifier">BOOST_SCOPE_EXIT_END</span>
 
     <span class="comment">// ...</span>
 
- <span class="identifier">checkpoint</span> <span class="special">=</span> <span class="special">++</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">evolution_</span><span class="special">;</span>
+ <span class="identifier">commit</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
 <span class="special">}</span>
 </pre>
 <p>
@@ -102,32 +86,17 @@
 <p>
 </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">world</span><span class="special">::</span><span class="identifier">add_person</span><span class="special">(</span><span class="identifier">person</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a_person</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">a_person</span><span class="special">);</span>
+ <span class="keyword">bool</span> <span class="identifier">commit</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
 
- <span class="comment">// This block must be no-throw.</span>
- <span class="identifier">person</span><span class="special">&amp;</span> <span class="identifier">p</span> <span class="special">=</span> <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">back</span><span class="special">();</span>
- <span class="identifier">person</span><span class="special">::</span><span class="identifier">evolution_t</span> <span class="identifier">checkpoint</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">evolution_</span><span class="special">;</span>
- <span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(</span><span class="identifier">checkpoint</span><span class="special">,</span> <span class="special">&amp;</span><span class="identifier">p</span><span class="special">,</span> <span class="special">&amp;</span><span class="identifier">persons_</span><span class="special">)</span> <span class="special">{</span>
- <span class="keyword">if</span><span class="special">(</span><span class="identifier">checkpoint</span> <span class="special">==</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">evolution_</span><span class="special">)</span> <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
+ <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">a_person</span><span class="special">);</span> <span class="comment">// (1) direct action</span>
+ <span class="comment">// Following block is executed when the enclosing scope exits.</span>
+ <span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(&amp;</span><span class="identifier">commit</span><span class="special">,</span> <span class="special">&amp;</span><span class="identifier">persons_</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">if</span><span class="special">(!</span><span class="identifier">commit</span><span class="special">)</span> <span class="identifier">persons_</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span> <span class="comment">// (2) rollback action</span>
     <span class="special">}</span> <span class="identifier">BOOST_SCOPE_EXIT_END</span>
 
- <span class="comment">// ...</span>
-
- <span class="identifier">checkpoint</span> <span class="special">=</span> <span class="special">++</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">evolution_</span><span class="special">;</span>
-
- <span class="comment">// Assign new identifier to the person.</span>
- <span class="identifier">world</span><span class="special">::</span><span class="identifier">id_t</span> <span class="keyword">const</span> <span class="identifier">prev_id</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">id_</span><span class="special">;</span>
- <span class="identifier">p</span><span class="special">.</span><span class="identifier">id_</span> <span class="special">=</span> <span class="identifier">next_id_</span><span class="special">++;</span>
- <span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(</span><span class="identifier">checkpoint</span><span class="special">,</span> <span class="special">&amp;</span><span class="identifier">p</span><span class="special">,</span> <span class="special">&amp;</span><span class="identifier">next_id_</span><span class="special">,</span> <span class="identifier">prev_id</span><span class="special">)</span> <span class="special">{</span>
- <span class="keyword">if</span><span class="special">(</span><span class="identifier">checkpoint</span> <span class="special">==</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">evolution_</span><span class="special">)</span> <span class="special">{</span>
- <span class="identifier">next_id_</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">id_</span><span class="special">;</span>
- <span class="identifier">p</span><span class="special">.</span><span class="identifier">id_</span> <span class="special">=</span> <span class="identifier">prev_id</span><span class="special">;</span>
- <span class="special">}</span>
- <span class="special">}</span> <span class="identifier">BOOST_SCOPE_EXIT_END</span>
-
- <span class="comment">// ...</span>
+ <span class="comment">// ... // (3) other operations</span>
 
- <span class="identifier">checkpoint</span> <span class="special">=</span> <span class="special">++</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">evolution_</span><span class="special">;</span>
+ <span class="identifier">commit</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span> <span class="comment">// (4) disable rollback actions</span>
 <span class="special">}</span>
 </pre>
 <p>
@@ -144,10 +113,10 @@
 <p>
         The following is a list of most of the examples presented in this documentation
         reprogrammed using the <a href="../../../../../libs/preprocessor/index.html" target="_top">Boost.Preprocessor
- sequence</a> syntax instead of comma-separated lists: "world_commit_seq.cpp",
- "world_commit_this_seq.cpp",
- "world_all_seq.cpp",
- "world_commit_tpl_seq.cpp",
+ sequence</a> syntax instead of comma-separated lists: "world_checkpoint_seq.cpp",
+ "world_this_seq.cpp",
+ "world_checkpoint_all_seq.cpp",
+ "world_tpl_seq.cpp",
         <a href="../../../example/try_catch_seq.cpp" target="_top">"try_catch_seq.cpp"</a>,
         <a href="../../../example/scope_guard_seq.cpp" target="_top">"scope_guard_seq.cpp"</a>.
       </p>
@@ -157,10 +126,9 @@
 <div class="footnote"><p><sup>[<a id="ftn.scope_exit.No_Variadic_Macros.sequence_syntax.f0" href="#scope_exit.No_Variadic_Macros.sequence_syntax.f0" class="para">8</a>] </sup>
           Note that on compilers with variadic macro support, the same <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> macro accepts both
           a comma-separated list and a <a href="../../../../../libs/preprocessor/index.html" target="_top">Boost.Preprocessor
- sequence</a> for specifying the capture list. The same it true also
- for the <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code>
- and <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code>
- macros.
+ sequence</a> for specifying the capture list. That is true also for
+ <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code>
+ and <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code>.
         </p></div>
 </div>
 </div>

Modified: sandbox/closure/libs/scope_exit/doc/html/scope_exit/Tutorial.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/scope_exit/Tutorial.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/scope_exit/Tutorial.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -45,10 +45,9 @@
 <a name="scope_exit.Tutorial.capturing_variables"></a><a class="link" href="Tutorial.html#scope_exit.Tutorial.capturing_variables" title="Capturing Variables">Capturing Variables</a>
 </h3></div></div></div>
 <p>
- Imagine that you want to make many modifications to data members of the
- <code class="computeroutput"><span class="identifier">world</span></code> class in the <code class="computeroutput"><span class="identifier">world</span><span class="special">::</span><span class="identifier">add_person</span></code> function. You start with adding
- a new <code class="computeroutput"><span class="identifier">person</span></code> object to a
- vector of persons:
+ Imagine that we want to make many modifications to data members of the <code class="computeroutput"><span class="identifier">world</span></code> class in the <code class="computeroutput"><span class="identifier">world</span><span class="special">::</span><span class="identifier">add_person</span></code>
+ function. You start with adding a new <code class="computeroutput"><span class="identifier">person</span></code>
+ object to a vector of persons:
       </p>
 <pre class="programlisting"><span class="keyword">void</span> <span class="identifier">world</span><span class="special">::</span><span class="identifier">add_person</span><span class="special">(</span><span class="identifier">person</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">a_person</span><span class="special">)</span> <span class="special">{</span>
     <span class="keyword">bool</span> <span class="identifier">commit</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
@@ -64,9 +63,9 @@
       </p>
 <p>
         In particular, the last added person must be deleted from <code class="computeroutput"><span class="identifier">persons_</span></code>
- if the function throws. All you need is to define a delayed action (release
+ if the function throws. All we need is to define a delayed action (release
         of a resource) right after the direct action (resource acquisition). For
- example (see also "world_commit.cpp"):
+ example (see also "world.cpp"):
       </p>
 <p>
 </p>
@@ -91,7 +90,10 @@
         declaration. Unlike point <code class="computeroutput"><span class="special">(</span><span class="number">1</span><span class="special">)</span></code>, an execution
         of the <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a> body will be delayed until
         the end of the current scope. In this case it will be executed either after
- point <code class="computeroutput"><span class="special">(</span><span class="number">4</span><span class="special">)</span></code> or on any exception.
+ point <code class="computeroutput"><span class="special">(</span><span class="number">4</span><span class="special">)</span></code> or on any exception. (On various versions
+ of the GCC compiler, it is necessary to use <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code>
+ instead of <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code>
+ within templates, see later in this section for details.)
       </p>
 <p>
         The <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a> declaration starts with the
@@ -104,10 +106,7 @@
         will be available inside the <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a>
         body; otherwise, a copy of the variable will be made after the <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a>
         declaration at point <code class="computeroutput"><span class="special">(</span><span class="number">1</span><span class="special">)</span></code> and only the copy will be available inside
- the body. On various versions of the GCC compiler, it is necessary to use
- <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code> instead
- of <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code> within
- templates (see later in this section for more details).
+ the body (in this case, the captured variable's type must be <code class="computeroutput"><span class="identifier">CopyConstructible</span></code>).
       </p>
 <p>
         In the example above, the variables <code class="computeroutput"><span class="identifier">commit</span></code>
@@ -134,7 +133,11 @@
 </tr>
 <tr><td align="left" valign="top"><p>
           In order to comply with the STL exception safety requirements, the <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a> body must never throw (because the
- library implementation executes the body within a destructor).
+ library implementation executes the body within a destructor). This is
+ true for all <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a> macros (including
+ <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code>
+ and <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code>)
+ on both C++03 and C++11.
         </p></td></tr>
 </table></div>
 <p>
@@ -148,7 +151,7 @@
         body so we can compare it with the final value of <code class="computeroutput"><span class="identifier">evolution_</span></code>.
         If the latter was not incremented since we saved it, the rollback action
         inside the <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a> body should be executed.
- For example (see also "world.cpp"):
+ For example (see also "world_checkpoint.cpp"):
       </p>
 <p>
 </p>
@@ -197,7 +200,7 @@
 <p>
         Within a member function, it is also possible to capture the object <code class="computeroutput"><span class="keyword">this</span></code>. However, the special symbol <code class="computeroutput"><span class="identifier">this_</span></code> must be used instead of <code class="computeroutput"><span class="keyword">this</span></code> in the <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a>
         declaration and body to capture and access the object. For example (see also
- "world_commit_this.cpp"):
+ "world_this.cpp"):
       </p>
 <p>
 </p>
@@ -208,7 +211,7 @@
 <p>
       </p>
 <p>
- On C++11, it is possible (but not required) to directly use <code class="computeroutput"><span class="keyword">this</span></code> instead of the special symbol <code class="computeroutput"><span class="identifier">this_</span></code>. <sup>[<a name="scope_exit.Tutorial.capturing_the_object__this_.f0" href="#ftn.scope_exit.Tutorial.capturing_the_object__this_.f0" class="footnote">4</a>]</sup> For example (see also "world_commit_this.cpp"):
+ On C++11, it is possible (but not required) to directly use <code class="computeroutput"><span class="keyword">this</span></code> instead of the special symbol <code class="computeroutput"><span class="identifier">this_</span></code>. <sup>[<a name="scope_exit.Tutorial.capturing_the_object__this_.f0" href="#ftn.scope_exit.Tutorial.capturing_the_object__this_.f0" class="footnote">4</a>]</sup> For example (see also "world_this.cpp"):
       </p>
 <p>
 </p>
@@ -238,7 +241,7 @@
         (similarly to the C syntax that allows to declare a function with no parameter
         using <code class="computeroutput"><span class="identifier">result_type</span> <span class="identifier">func</span><span class="special">(</span><span class="keyword">void</span><span class="special">);</span></code>).
         <sup>[<a name="scope_exit.Tutorial.capturing_no_variable.f0" href="#ftn.scope_exit.Tutorial.capturing_no_variable.f0" class="footnote">5</a>]</sup> For example, this can be useful when the <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a>
- body only needs to access global variables (see also "world_commit_void.cpp"):
+ body only needs to access global variables (see also "world_void.cpp"):
       </p>
 <p>
 </p>
@@ -286,7 +289,7 @@
         that no variable name is specified by these leading captures). Additional
         captures of specific variables can follow the leading <code class="computeroutput"><span class="special">&amp;</span></code>
         or <code class="computeroutput"><span class="special">=</span></code> and they will override
- the default reference or value captures. For example (see also "world_all.cpp"):
+ the default reference or value captures. For example (see also "world_checkpoint_all.cpp"):
       </p>
 <p>
 </p>
@@ -332,16 +335,6 @@
         which is captured by reference (in particular, <code class="computeroutput"><span class="identifier">checkpoint</span></code>,
         <code class="computeroutput"><span class="identifier">prev_id</span></code>, and <code class="computeroutput"><span class="keyword">this</span></code> are captured by value).
       </p>
-<div class="warning"><table border="0" summary="Warning">
-<tr>
-<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../doc/src/images/warning.png"></td>
-<th align="left">Warning</th>
-</tr>
-<tr><td align="left" valign="top"><p>
- Again, in order to comply with the STL exception safety requirements, the
- <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a> body must never throw.
- </p></td></tr>
-</table></div>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
@@ -377,16 +370,6 @@
         The <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_TPL.html" title="Macro BOOST_SCOPE_EXIT_TPL">BOOST_SCOPE_EXIT_TPL</a></code>
         macro has the exact same syntax of <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code>.
       </p>
-<div class="warning"><table border="0" summary="Warning">
-<tr>
-<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../doc/src/images/warning.png"></td>
-<th align="left">Warning</th>
-</tr>
-<tr><td align="left" valign="top"><p>
- Again, in order to comply with the STL exception safety requirements, the
- <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a> body must never throw.
- </p></td></tr>
-</table></div>
 </div>
 <div class="footnotes">
 <br><hr width="100" align="left">
@@ -414,7 +397,17 @@
 <div class="footnote"><p><sup>[<a id="ftn.scope_exit.Tutorial.capturing_all_variables__c__11_only_.f0" href="#scope_exit.Tutorial.capturing_all_variables__c__11_only_.f0" class="para">6</a>] </sup>
           The <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code>
           macro is only defined on C++11 compilers. Using <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code>
- on C++03 compilers will generate a (possibly cryptic) compiler error.
+ on C++03 compilers will generate a (possibly cryptic) compiler error. Note
+ that a new macro <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code>
+ needed to be introduced instead of reusing <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT.html" title="Macro BOOST_SCOPE_EXIT">BOOST_SCOPE_EXIT</a></code>
+ because <code class="computeroutput"><span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(&amp;)</span></code> and <code class="computeroutput"><span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(=)</span></code> could not be distinguished from <code class="computeroutput"><span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(</span><span class="keyword">void</span><span class="special">)</span></code> or
+ <code class="computeroutput"><span class="identifier">BOOST_SCOPE_EXIT</span><span class="special">(</span><span class="identifier">this_</span><span class="special">)</span></code>
+ using the preprocessor because the symbols <code class="computeroutput"><span class="special">&amp;</span></code>
+ and <code class="computeroutput"><span class="special">=</span></code> are neither prefxied
+ or postfixed by alphanumeric tokens (this is not an issue for <code class="computeroutput"><a class="link" href="../BOOST_SCOPE_EXIT_ALL.html" title="Macro BOOST_SCOPE_EXIT_ALL">BOOST_SCOPE_EXIT_ALL</a></code> which always
+ has <code class="computeroutput"><span class="special">&amp;</span></code> or <code class="computeroutput"><span class="special">=</span></code> as the first capture so the first capture
+ token is never compared with neither <code class="computeroutput"><span class="keyword">void</span></code>
+ of <code class="computeroutput"><span class="identifier">this_</span></code> for this macro).
         </p></div>
 <div class="footnote"><p><sup>[<a id="ftn.scope_exit.Tutorial.gcc_template_workaround.f0" href="#scope_exit.Tutorial.gcc_template_workaround.f0" class="para">7</a>] </sup>
           GCC versions compliant with C++11 do not present this issue and given that

Modified: sandbox/closure/libs/scope_exit/doc/html/scope_exit/acknowledgements.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/scope_exit/acknowledgements.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/scope_exit/acknowledgements.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -56,7 +56,7 @@
       Adam Butcher for a workaround to error C2355 when deducing the type of <code class="computeroutput"><span class="keyword">this</span></code> on some MSVC versions.
     </p>
 <p>
- Lorenzo Caminiti for variadic macro support, capture of the object <code class="computeroutput"><span class="identifier">this_</span></code>, empty captures, and <code class="computeroutput"><span class="identifier">BOOST_SCOPE_EXIT_ALL</span></code>.
+ Lorenzo Caminiti for variadic macro support, capture of the object <code class="computeroutput"><span class="identifier">this_</span></code>, empty captures using <code class="computeroutput"><span class="keyword">void</span></code>, and <code class="computeroutput"><span class="identifier">BOOST_SCOPE_EXIT_ALL</span></code>.
     </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: sandbox/closure/libs/scope_exit/doc/html/scope_exit/annex__alternatives.html
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/html/scope_exit/annex__alternatives.html (original)
+++ sandbox/closure/libs/scope_exit/doc/html/scope_exit/annex__alternatives.html 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -284,7 +284,7 @@
 </h3></div></div></div>
 <p>
         Using C++11 lambdas, it is relatively easy to implement the <a class="link" href="../index.html" title="Chapter&#160;1.&#160;Boost.ScopeExit 1.1.0">ScopeExit</a>
- construct. For example (see also "world_commit_lambda.cpp"):
+ construct. For example (see also "world_lambda.cpp"):
       </p>
 <p>
 </p>

Modified: sandbox/closure/libs/scope_exit/doc/scope_exit.qbk
==============================================================================
--- sandbox/closure/libs/scope_exit/doc/scope_exit.qbk (original)
+++ sandbox/closure/libs/scope_exit/doc/scope_exit.qbk 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -37,12 +37,12 @@
 
 [import ../test/world.cpp]
 [import ../test/world_seq.cpp]
-[import ../test/world_commit.cpp]
-[import ../test/world_commit_this.cpp]
-[import ../test/world_commit_void.cpp]
-[import ../test/world_all.cpp]
-[import ../test/world_commit_tpl.cpp]
-[import ../test/world_commit_lambda.cpp]
+[import ../test/world_checkpoint.cpp]
+[import ../test/world_this.cpp]
+[import ../test/world_void.cpp]
+[import ../test/world_checkpoint_all.cpp]
+[import ../test/world_tpl.cpp]
+[import ../test/world_lambda.cpp]
 [import ../example/try_catch.cpp]
 [import ../example/scope_guard.cpp]
 
@@ -58,12 +58,12 @@
 Programmers can put resource acquisition directly in their code and next to it, they can write code that releases the resource using this library.
 For example:
 [footnote
-Older versions of this library used a __pp_seq__ to specify the list of captured variable.
-While maintaining full backward compatibility, it is now also possible to specify the captured variables as a comma-separated list (which is the preferred syntax).
+Older versions of this library used a __pp_seq__ to specify the list of captured variables.
+While maintaining full backward compatibility, it is now possible to specify the captured variables also as a comma-separated list (which is the preferred syntax).
 See the __No_Variadic_Macros__ section for more details.
 ]
 
-[test_world_commit]
+[test_world]
 
 Read the __Tutorial__ section to find out how to write programs with __scope_exit__ or jump to the __Reference__ section.
 
@@ -71,13 +71,14 @@
 
 [section:Getting_Started Getting Started]
 
-This section explains how to setup your system to use this library.
+This section explains how to setup a system to use this library.
 
 [section Compilers and Platforms]
 
 The library should be usable on any compiler that supports __typeof__ except:
 
 * MSVC 7.1 and 8.0 fail to link if a function with __scope_exit__ is included by multiple translation units.
+Furthermore, on MSVC 7.1 and 8.0 it is possible to capture the object `this_` only with native __typeof__ (and not in __typeof__ emulation mode).
 * GCC 3.3 cannot compile __scope_exit__ inside a template (see [@http://lists.boost.org/Archives/boost/2007/02/116235.php] for more details).
 
 The authors tested the library on GCC 3.3, 3.4, 4.1, 4.2, 4.5.3 (with and without C++11 features [^-std=c++0x]), MSVC 8.0, and Intel 10.1 under Linux, Cygwin, and Windows 7.
@@ -93,7 +94,7 @@
 The library implementation uses __typeof__ to automatically deduce the types of the __scope_exit__ captured variables (see the __Tutorial__ section).
 In order to compile code in __typeof_emulation__ mode, all types should be properly registered with __typeof_REGISTER_TYPE__ or __typeof_REGISTER_TEMPLATE__ macros, or appropriate __typeof__ headers should be included.
 
-When using comma-separated lists to specify captures (see the __No_Variadic_Macros__ section), make sure that the `BOOST_PP_VARIADICS` macro is defined (either automatically by __pp__ or manually using your compiler options `-D`, `/D`, etc).
+When using comma-separated lists to specify captures (see the __No_Variadic_Macros__ section), make sure that the `BOOST_PP_VARIADICS` macro is defined (either automatically by __pp__ or manually using compiler options `-D`, `/D`, etc).
 [footnote
 It is not sufficient for the `BOOST_NO_VARIADIC_MACROS` macro to be undefined, the `BOOST_PP_VARIADICS` macro must be defined.
 ]
@@ -108,7 +109,7 @@
 
 [section Capturing Variables]
 
-Imagine that you want to make many modifications to data members of the `world` class in the `world::add_person` function.
+Imagine that we want to make many modifications to data members of the `world` class in the `world::add_person` function.
 You start with adding a new `person` object to a vector of persons:
 
     void world::add_person(person const& a_person) {
@@ -121,17 +122,17 @@
 This all-or-nothing semantic is also known as __strong_guarantee__.
 
 In particular, the last added person must be deleted from `persons_` if the function throws.
-All you need is to define a delayed action (release of a resource) right after the direct action (resource acquisition).
-For example (see also [@../../test/world_commit.cpp "world_commit.cpp"]):
+All we need is to define a delayed action (release of a resource) right after the direct action (resource acquisition).
+For example (see also [@../../test/world.cpp "world.cpp"]):
 
-[test_world_commit]
+[test_world]
 
 The block below point `(1)` is a __scope_exit__ declaration.
 Unlike point `(1)`, an execution of the __scope_exit__ body will be delayed until the end of the current scope. In this case it will be executed either after point `(4)` or on any exception.
+(On various versions of the GCC compiler, it is necessary to use [macroref BOOST_SCOPE_EXIT_TPL] instead of [macroref BOOST_SCOPE_EXIT] within templates, see later in this section for details.)
 
 The __scope_exit__ declaration starts with the [macroref BOOST_SCOPE_EXIT] macro invocation which accepts a comma-separated list of captured variables (a __pp_seq__ is also accepted here for compilers that do not support variadic macros and for backward compatibility with older versions of this library, see the __No_Variadic_Macros__ section).
-If a capture starts with the ampersand sign `&`, a reference to the captured variable will be available inside the __scope_exit__ body; otherwise, a copy of the variable will be made after the __scope_exit__ declaration at point `(1)` and only the copy will be available inside the body.
-On various versions of the GCC compiler, it is necessary to use [macroref BOOST_SCOPE_EXIT_TPL] instead of [macroref BOOST_SCOPE_EXIT] within templates (see later in this section for more details).
+If a capture starts with the ampersand sign `&`, a reference to the captured variable will be available inside the __scope_exit__ body; otherwise, a copy of the variable will be made after the __scope_exit__ declaration at point `(1)` and only the copy will be available inside the body (in this case, the captured variable's type must be `CopyConstructible`).
 
 In the example above, the variables `commit` and `persons_` are captured by reference because the final value of the `commit` variable should be used to determine whether to execute rollback actions or not and the action should modify the `persons_` object, not its copy.
 This is the most common case but passing a variable by value is sometimes useful as well.
@@ -145,15 +146,16 @@
 
 [warning
 In order to comply with the STL exception safety requirements, the __scope_exit__ body must never throw (because the library implementation executes the body within a destructor).
+This is true for all __scope_exit__ macros (including [macroref BOOST_SCOPE_EXIT_TPL] and [macroref BOOST_SCOPE_EXIT_ALL]) on both C++03 and C++11.
 ]
 
 Consider a more complex example where `world::add_person` can save intermediate states at some point and roll back to the last saved state.
 We use `person::evolution_` to store a version of the changes and increment it to cancel all rollback actions associated with those changes.
 If we pass a current value of `evolution_` stored in the `checkpoint` variable by value, it remains unchanged within the __scope_exit__ body so we can compare it with the final value of `evolution_`.
 If the latter was not incremented since we saved it, the rollback action inside the __scope_exit__ body should be executed.
-For example (see also [@../../test/world.cpp "world.cpp"]):
+For example (see also [@../../test/world_checkpoint.cpp "world_checkpoint.cpp"]):
 
-[test_world]
+[test_world_checkpoint]
 
 When multiple __scope_exit__ blocks are declared within the same enclosing scope, the __scope_exit__ bodies are executed in the reversed order of their declarations.
 
@@ -163,18 +165,18 @@
 
 Within a member function, it is also possible to capture the object `this`.
 However, the special symbol `this_` must be used instead of `this` in the __scope_exit__ declaration and body to capture and access the object.
-For example (see also [@../../test/world_commit_this.cpp "world_commit_this.cpp"]):
+For example (see also [@../../test/world_this.cpp "world_this.cpp"]):
 
-[test_world_commit_this_]
+[test_world_this_]
 
 On C++11, it is possible (but not required) to directly use `this` instead of the special symbol `this_`.
 [footnote
 The special symbol `this_` can still be used on C++11 to write portable code that can be used on both C++03 and C++11 compilers.
 Unfortunately, using `this` instead of `this_` on C++03 compilers leads to undefined behaviour (it will likely generate a compiler error but that is not guaranteed).
 ]
-For example (see also [@../../test/world_commit_this.cpp "world_commit_this.cpp"]):
+For example (see also [@../../test/world_this.cpp "world_this.cpp"]):
 
-[test_world_commit_this]
+[test_world_this]
 
 It is never possible to capture the object `this_` (or `this`) by reference because C++ does not allow to take a reference to `this`.
 If the enclosing member function is constant then the captured object will also be constant, otherwise the captured object will be mutable.
@@ -188,9 +190,9 @@
 [footnote
 Unfortunately, it is not possible to simply invoke the __scope_exit__ macro with no parameters `BOOST_SCOPE_EXIT()` because the preprocessor cannot detect emptiness of a macro parameter when the parameter can start with a non-alphanumeric symbol (which is the case when capturing a variable by reference `&variable`).
 ]
-For example, this can be useful when the __scope_exit__ body only needs to access global variables (see also [@../../test_world_commit_void.cpp "world_commit_void.cpp"]):
+For example, this can be useful when the __scope_exit__ body only needs to access global variables (see also [@../../test/world_void.cpp "world_void.cpp"]):
 
-[test_world_commit_void]
+[test_world_void]
 
 This same syntax is supported for both compilers with and without variadic macro support.
 
@@ -202,21 +204,18 @@
 [footnote
 The [macroref BOOST_SCOPE_EXIT_ALL] macro is only defined on C++11 compilers.
 Using [macroref BOOST_SCOPE_EXIT_ALL] on C++03 compilers will generate a (possibly cryptic) compiler error.
+Note that a new macro [macroref BOOST_SCOPE_EXIT_ALL] needed to be introduced instead of reusing [macroref BOOST_SCOPE_EXIT] because `BOOST_SCOPE_EXIT(&)` and `BOOST_SCOPE_EXIT(=)` could not be distinguished from `BOOST_SCOPE_EXIT(void)` or `BOOST_SCOPE_EXIT(this_)` using the preprocessor because the symbols `&` and `=` are neither prefxied or postfixed by alphanumeric tokens (this is not an issue for [macroref BOOST_SCOPE_EXIT_ALL] which always has `&` or `=` as the first capture so the first capture token is never compared with neither `void` of `this_` for this macro).
 ]
 
 Following the same syntax adopted by C++11 lambdas, the [macroref BOOST_SCOPE_EXIT_ALL] macro accepts a comma-separated list of captures which must start with either `&` or `=` to capture all variables in scope respectively by reference or by value (note that no variable name is specified by these leading captures).
 Additional captures of specific variables can follow the leading `&` or `=` and they will override the default reference or value captures.
-For example (see also [@../../test_world_all.cpp "world_all.cpp"]):
+For example (see also [@../../test/world_checkpoint_all.cpp "world_checkpoint_all.cpp"]):
 
-[test_world_all]
+[test_world_checkpoint_all]
 
 The first __scope_exit__ declaration captures all variables in scope by reference but `checkpoint` and `this_` which are explicitly captured by value (in particular, `p` and `persons_` are captured by reference).
 The second __scope_exit__ declaration instead captures all variables in scope by value but `p` which is captured by reference (in particular, `checkpoint`, `prev_id`, and `this` are captured by value).
 
-[warning
-Again, in order to comply with the STL exception safety requirements, the __scope_exit__ body must never throw.
-]
-
 [endsect]
 
 [section GCC Template Workaround]
@@ -227,14 +226,10 @@
 ]
 As a workaround, [macroref BOOST_SCOPE_EXIT_TPL] should be used instead of [macroref BOOST_SCOPE_EXIT] in these cases:
 
-[test_world_commit_tpl]
+[test_world_tpl]
 
 The [macroref BOOST_SCOPE_EXIT_TPL] macro has the exact same syntax of [macroref BOOST_SCOPE_EXIT].
 
-[warning
-Again, in order to comply with the STL exception safety requirements, the __scope_exit__ body must never throw.
-]
-
 [endsect]
 
 [endsect]
@@ -372,9 +367,9 @@
 [section C++11 Lambdas]
 
 Using C++11 lambdas, it is relatively easy to implement the __scope_exit__ construct.
-For example (see also [@../../test/world_commit_lambda.cpp "world_commit_lambda.cpp"]):
+For example (see also [@../../test/world_lambda.cpp "world_lambda.cpp"]):
 
-[test_world_commit_lambda]
+[test_world_lambda]
 
 However, this library allows to program the __scope_exit__ construct in a way that is portable between C++03 and C++11 compilers.
 
@@ -405,7 +400,7 @@
 However, in the current version of this library and on compilers with variadic macro support, the following syntax is preferred (see also [@../../test/world.cpp "world.cpp"]):
 [footnote
 Note that on compilers with variadic macro support, the same [macroref BOOST_SCOPE_EXIT] macro accepts both a comma-separated list and a __pp_seq__ for specifying the capture list.
-The same it true also for the [macroref BOOST_SCOPE_EXIT_TPL] and [macroref BOOST_SCOPE_EXIT_ALL] macros.
+That is true also for [macroref BOOST_SCOPE_EXIT_TPL] and [macroref BOOST_SCOPE_EXIT_ALL].
 ]
 
 [test_world]
@@ -417,10 +412,10 @@
 [section Examples]
 
 The following is a list of most of the examples presented in this documentation reprogrammed using the __pp_seq__ syntax instead of comma-separated lists:
-[@../../test/world_commit_seq.cpp "world_commit_seq.cpp"],
-[@../../test/world_commit_this_seq.cpp "world_commit_this_seq.cpp"],
-[@../../test/world_all_seq.cpp "world_all_seq.cpp"],
-[@../../test/world_commit_tpl_seq.cpp "world_commit_tpl_seq.cpp"],
+[@../../test/world_checkpoint_seq.cpp "world_checkpoint_seq.cpp"],
+[@../../test/world_this_seq.cpp "world_this_seq.cpp"],
+[@../../test/world_checkpoint_all_seq.cpp "world_checkpoint_all_seq.cpp"],
+[@../../test/world_tpl_seq.cpp "world_tpl_seq.cpp"],
 [@../../example/try_catch_seq.cpp "try_catch_seq.cpp"],
 [@../../example/scope_guard_seq.cpp "scope_guard_seq.cpp"].
 
@@ -451,7 +446,7 @@
 
 Adam Butcher for a workaround to error C2355 when deducing the type of `this` on some MSVC versions.
 
-Lorenzo Caminiti for variadic macro support, capture of the object `this_`, empty captures, and `BOOST_SCOPE_EXIT_ALL`.
+Lorenzo Caminiti for variadic macro support, capture of the object `this_`, empty captures using `void`, and `BOOST_SCOPE_EXIT_ALL`.
 
 [endsect]
 

Modified: sandbox/closure/libs/scope_exit/test/Jamfile.v2
==============================================================================
--- sandbox/closure/libs/scope_exit/test/Jamfile.v2 (original)
+++ sandbox/closure/libs/scope_exit/test/Jamfile.v2 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -25,12 +25,13 @@
     [ run world_checkpoint_all.cpp ]
     [ run world_checkpoint_all_seq.cpp ]
     
- [ run world_commit_lambda.cpp ]
+ [ run world_lambda.cpp ]
 ;
 
 test-suite native_tests :
     [ run native.cpp : : : <define>BOOST_TYPEOF_NATIVE ]
     [ run native_tpl.cpp : : : <define>BOOST_TYPEOF_NATIVE ]
+ [ run native_this.cpp : : : <define>BOOST_TYPEOF_NATIVE ]
     [ compile-fail native_const_error.cpp : <define>BOOST_TYPEOF_NATIVE ]
     [ compile-fail native_cv_error.cpp : <define>BOOST_TYPEOF_NATIVE ]
     # Following test is known to fail on MSVC 7.1 and 8.0.
@@ -42,6 +43,8 @@
     [ run native.cpp : : : <define>BOOST_TYPEOF_EMULATION : emulation : ]
     [ run native_tpl.cpp : : : <define>BOOST_TYPEOF_EMULATION :
             emulation_tpl : ]
+ [ run native_this.cpp : : : <define>BOOST_TYPEOF_EMULATION :
+ emulation_this : ]
     [ compile-fail native_const_error.cpp : <define>BOOST_TYPEOF_EMULATION :
             emulation_const_error : ]
     [ compile-fail native_cv_error.cpp : <define>BOOST_TYPEOF_EMULATION :

Modified: sandbox/closure/libs/scope_exit/test/native.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/native.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/native.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -31,6 +31,10 @@
     // ... and one local variable as well:
     int i = 0;
 
+ BOOST_SCOPE_EXIT(void) {
+ BOOST_CHECK(Holder<>::g_long == 3);
+ } BOOST_SCOPE_EXIT_END
+
     BOOST_SCOPE_EXIT( (i) )
     {
         BOOST_CHECK(i == 0);
@@ -169,13 +173,13 @@
     BOOST_CHECK(results[1] == false);
 }
 
-void test_cxx0x()
+void test_cpp11()
 {
-#if defined(BOOST_SCOPE_EXIT_AUX_CXX0X)
+#if !defined(BOOST_NO_LAMBDAS) && !defined(BOOST_SCOPE_EXIT_CONFIG_NO_CPP11)
     int i = 0, j = 1;
 
     {
- BOOST_SCOPE_EXIT((=))
+ BOOST_SCOPE_EXIT_ALL(=)
         {
             i = j = 1; // modify copies
         };
@@ -184,7 +188,7 @@
     BOOST_CHECK(j == 1);
 
     {
- BOOST_SCOPE_EXIT((&))
+ BOOST_SCOPE_EXIT_ALL(&)
         {
             i = 1;
             j = 2;
@@ -196,7 +200,7 @@
     BOOST_CHECK(j == 2);
 
     {
- BOOST_SCOPE_EXIT((=)(&j))
+ BOOST_SCOPE_EXIT_ALL(=, &j)
         {
             i = 2; // modify a copy
             j = 3;
@@ -206,7 +210,6 @@
     }
     BOOST_CHECK(i == 1);
     BOOST_CHECK(j == 3);
-
 #endif
 }
 
@@ -215,6 +218,6 @@
     framework::master_test_suite().p_name.value = "Unit test for ScopeExit";
     framework::master_test_suite().add( BOOST_TEST_CASE( &test_non_local ));
     framework::master_test_suite().add( BOOST_TEST_CASE( &test_types ));
- framework::master_test_suite().add( BOOST_TEST_CASE( &test_cxx0x ));
+ framework::master_test_suite().add( BOOST_TEST_CASE( &test_cpp11 ));
     return 0;
 }

Modified: sandbox/closure/libs/scope_exit/test/world.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -1,11 +1,16 @@
 
 #include <boost/scope_exit.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/vector.hpp>
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
 #define BOOST_TEST_MODULE TestWorld
 #include <boost/test/unit_test.hpp>
 #include <vector>
 
+struct person; BOOST_TYPEOF_REGISTER_TYPE(person)
 struct person {};
 
+struct world; BOOST_TYPEOF_REGISTER_TYPE(world)
 struct world {
     void add_person(person const& a_person);
     std::vector<person> persons_;

Modified: sandbox/closure/libs/scope_exit/test/world_checkpoint.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world_checkpoint.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world_checkpoint.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -10,6 +10,7 @@
 #include <iostream>
 #include <sstream>
 
+class person; BOOST_TYPEOF_REGISTER_TYPE(person)
 class person {
     friend class world;
 public:
@@ -26,8 +27,7 @@
     evolution_t evolution_;
 };
 
-BOOST_TYPEOF_REGISTER_TYPE(person)
-
+class world; BOOST_TYPEOF_REGISTER_TYPE(world)
 class world {
 public:
     typedef unsigned int id_t;
@@ -48,8 +48,6 @@
     std::vector<person> persons_;
 };
 
-BOOST_TYPEOF_REGISTER_TYPE(world)
-
 //[test_world_checkpoint
 void world::add_person(person const& a_person) {
     persons_.push_back(a_person);

Modified: sandbox/closure/libs/scope_exit/test/world_checkpoint_all.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world_checkpoint_all.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world_checkpoint_all.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -14,6 +14,7 @@
 #include <iostream>
 #include <sstream>
 
+class person; BOOST_TYPEOF_REGISTER_TYPE(person)
 class person {
     friend class world;
 public:
@@ -30,8 +31,7 @@
     evolution_t evolution_;
 };
 
-BOOST_TYPEOF_REGISTER_TYPE(person)
-
+class world; BOOST_TYPEOF_REGISTER_TYPE(world)
 class world {
 public:
     typedef unsigned int id_t;
@@ -52,8 +52,6 @@
     std::vector<person> persons_;
 };
 
-BOOST_TYPEOF_REGISTER_TYPE(world)
-
 //[test_world_checkpoint_all
 void world::add_person(person const& a_person) {
     persons_.push_back(a_person);

Modified: sandbox/closure/libs/scope_exit/test/world_checkpoint_all_seq.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world_checkpoint_all_seq.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world_checkpoint_all_seq.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -14,6 +14,7 @@
 #include <iostream>
 #include <sstream>
 
+class person; BOOST_TYPEOF_REGISTER_TYPE(person)
 class person {
     friend class world;
 public:
@@ -30,8 +31,7 @@
     evolution_t evolution_;
 };
 
-BOOST_TYPEOF_REGISTER_TYPE(person)
-
+class world; BOOST_TYPEOF_REGISTER_TYPE(world)
 class world {
 public:
     typedef unsigned int id_t;
@@ -52,8 +52,6 @@
     std::vector<person> persons_;
 };
 
-BOOST_TYPEOF_REGISTER_TYPE(world)
-
 //[test_world_checkpoint_all_seq
 void world::add_person(person const& a_person) {
     persons_.push_back(a_person);

Modified: sandbox/closure/libs/scope_exit/test/world_checkpoint_seq.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world_checkpoint_seq.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world_checkpoint_seq.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -10,6 +10,7 @@
 #include <iostream>
 #include <sstream>
 
+class person; BOOST_TYPEOF_REGISTER_TYPE(person)
 class person {
     friend class world;
 public:
@@ -26,8 +27,7 @@
     evolution_t evolution_;
 };
 
-BOOST_TYPEOF_REGISTER_TYPE(person)
-
+class world; BOOST_TYPEOF_REGISTER_TYPE(world)
 class world {
 public:
     typedef unsigned int id_t;
@@ -48,8 +48,6 @@
     std::vector<person> persons_;
 };
 
-BOOST_TYPEOF_REGISTER_TYPE(world)
-
 //[test_world_checkpoint_seq
 void world::add_person(person const& a_person) {
     persons_.push_back(a_person);

Modified: sandbox/closure/libs/scope_exit/test/world_seq.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world_seq.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world_seq.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -1,11 +1,16 @@
 
 #include <boost/scope_exit.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/vector.hpp>
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
 #define BOOST_TEST_MODULE TestWorldSeq
 #include <boost/test/unit_test.hpp>
 #include <vector>
 
+struct person; BOOST_TYPEOF_REGISTER_TYPE(person)
 struct person {};
 
+struct world; BOOST_TYPEOF_REGISTER_TYPE(world)
 struct world {
     void add_person(person const& a_person);
     std::vector<person> persons_;

Modified: sandbox/closure/libs/scope_exit/test/world_this.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world_this.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world_this.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -1,12 +1,17 @@
 
 #include <boost/scope_exit.hpp>
-#include <boost/config.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/vector.hpp>
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
 #define BOOST_TEST_MODULE TestWorldThis
 #include <boost/test/unit_test.hpp>
+#include <boost/config.hpp>
 #include <vector>
 
+struct person; BOOST_TYPEOF_REGISTER_TYPE(person)
 struct person {};
 
+struct world; BOOST_TYPEOF_REGISTER_TYPE(world)
 struct world {
     void add_person(person const& a_person);
     std::vector<person> persons_;

Modified: sandbox/closure/libs/scope_exit/test/world_this_seq.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world_this_seq.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world_this_seq.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -1,12 +1,17 @@
 
 #include <boost/scope_exit.hpp>
-#include <boost/config.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/vector.hpp>
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
 #define BOOST_TEST_MODULE TestWorldThisSeq
 #include <boost/test/unit_test.hpp>
+#include <boost/config.hpp>
 #include <vector>
 
+struct person; BOOST_TYPEOF_REGISTER_TYPE(person)
 struct person {};
 
+struct world; BOOST_TYPEOF_REGISTER_TYPE(world)
 struct world {
     void add_person(person const& a_person);
     std::vector<person> persons_;
@@ -17,13 +22,13 @@
 
     persons_.push_back(a_person);
 #ifdef BOOST_NO_LAMBDAS
- //[test_world_this_seq_
+ //[test_world_this_
     BOOST_SCOPE_EXIT( (&commit) (this_) ) { // Capture object `this_`.
         if(!commit) this_->persons_.pop_back();
     } BOOST_SCOPE_EXIT_END
     //]
 #else
- //[test_world_this_seq
+ //[test_world_this
     BOOST_SCOPE_EXIT( (&commit) (this) ) { // Use `this` (C++11).
         if(!commit) this->persons_.pop_back();
     }; // Use `;` instead of `BOOST_SCOPE_EXIT_END` (C++11).

Modified: sandbox/closure/libs/scope_exit/test/world_tpl.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world_tpl.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world_tpl.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -1,10 +1,16 @@
 
 #include <boost/scope_exit.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/vector.hpp>
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
 #define BOOST_TEST_MODULE TestWorldTpl
 #include <boost/test/unit_test.hpp>
+#include <vector>
 
+struct person; BOOST_TYPEOF_REGISTER_TYPE(peron)
 struct person {};
 
+template<typename Person> struct world; BOOST_TYPEOF_REGISTER_TEMPLATE(world, 1)
 template<typename Person>
 struct world {
     void add_person(Person const& a_person);

Modified: sandbox/closure/libs/scope_exit/test/world_tpl_seq.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world_tpl_seq.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world_tpl_seq.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -1,10 +1,16 @@
 
 #include <boost/scope_exit.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/vector.hpp>
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
 #define BOOST_TEST_MODULE TestWorldTplSeq
 #include <boost/test/unit_test.hpp>
+#include <vector>
 
+struct person; BOOST_TYPEOF_REGISTER_TYPE(person)
 struct person {};
 
+template<typename Person> struct world; BOOST_TYPEOF_REGISTER_TEMPLATE(world, 1)
 template<typename Person>
 struct world {
     void add_person(Person const& a_person);

Modified: sandbox/closure/libs/scope_exit/test/world_void.cpp
==============================================================================
--- sandbox/closure/libs/scope_exit/test/world_void.cpp (original)
+++ sandbox/closure/libs/scope_exit/test/world_void.cpp 2012-01-14 16:38:45 EST (Sat, 14 Jan 2012)
@@ -1,11 +1,16 @@
 
 #include <boost/scope_exit.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/vector.hpp>
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
 #define BOOST_TEST_MODULE TestWorldVoid
 #include <boost/test/unit_test.hpp>
 #include <vector>
 
+struct person; BOOST_TYPEOF_REGISTER_TYPE(person)
 struct person {};
 
+struct world_t; BOOST_TYPEOF_REGISTER_TYPE(world_t)
 //[test_world_void
 struct world_t {
     std::vector<person> persons;


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