Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r66509 - in sandbox/statistics/support/boost/assign/v2: anon chain chain/checking chain/traits detail detail/config detail/functor detail/keyword detail/mpl detail/relational_op detail/type_traits put put/modifier put/range put/range/modifier put/wrapper ref ref/anon ref/anon/csv ref/anon/detail ref/anon/functor ref/anon/generic ref/detail/fusion_list ref/detail/unwrap ref/wrapper
From: erwann.rogard_at_[hidden]
Date: 2010-11-11 21:45:54


Author: e_r
Date: 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
New Revision: 66509
URL: http://svn.boost.org/trac/boost/changeset/66509

Log:
updating proposal for boost_assign_v2
Text files modified:
   sandbox/statistics/support/boost/assign/v2/anon/anon.hpp | 3
   sandbox/statistics/support/boost/assign/v2/anon/cont.hpp | 59 +++++---
   sandbox/statistics/support/boost/assign/v2/anon/make.hpp | 18 --
   sandbox/statistics/support/boost/assign/v2/chain/chain.hpp | 5
   sandbox/statistics/support/boost/assign/v2/chain/checking/distinct_values.hpp | 1
   sandbox/statistics/support/boost/assign/v2/chain/checking/twin_values.hpp | 14 +
   sandbox/statistics/support/boost/assign/v2/chain/traits/result.hpp | 2
   sandbox/statistics/support/boost/assign/v2/detail/config/arity_bound.hpp | 15 +
   sandbox/statistics/support/boost/assign/v2/detail/config/enable_cpp_0x.hpp | 18 --
   sandbox/statistics/support/boost/assign/v2/detail/detail.hpp | 1
   sandbox/statistics/support/boost/assign/v2/detail/functor/constructor.hpp | 31 ++--
   sandbox/statistics/support/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp | 232 +++++++++++++++---------------------
   sandbox/statistics/support/boost/assign/v2/detail/functor/identity.hpp | 27 ++--
   sandbox/statistics/support/boost/assign/v2/detail/functor/new.hpp | 16 +-
   sandbox/statistics/support/boost/assign/v2/detail/keyword/deduce.hpp | 41 ------
   sandbox/statistics/support/boost/assign/v2/detail/keyword/fun.hpp | 52 -------
   sandbox/statistics/support/boost/assign/v2/detail/keyword/keyword.hpp | 4
   sandbox/statistics/support/boost/assign/v2/detail/keyword/lookup.hpp | 32 ----
   sandbox/statistics/support/boost/assign/v2/detail/keyword/repeat.hpp | 42 ------
   sandbox/statistics/support/boost/assign/v2/detail/mpl/mpl.hpp | 2
   sandbox/statistics/support/boost/assign/v2/detail/relational_op/crtp.hpp | 23 ++-
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/meta_convert.hpp | 6
   sandbox/statistics/support/boost/assign/v2/put/modifier/at_next.hpp | 18 ++
   sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp | 39 ++++-
   sandbox/statistics/support/boost/assign/v2/put/modifier/def.hpp | 4
   sandbox/statistics/support/boost/assign/v2/put/modifier/incr_lookup.hpp | 80 +++++++++++
   sandbox/statistics/support/boost/assign/v2/put/modifier/insert.hpp | 24 ---
   sandbox/statistics/support/boost/assign/v2/put/modifier/keyword.hpp | 39 -----
   sandbox/statistics/support/boost/assign/v2/put/modifier/modifier.hpp | 5
   sandbox/statistics/support/boost/assign/v2/put/modifier/push.hpp | 24 ---
   sandbox/statistics/support/boost/assign/v2/put/modifier/push_back.hpp | 29 ----
   sandbox/statistics/support/boost/assign/v2/put/modifier/repeat.hpp | 110 +++++++++++++++-
   sandbox/statistics/support/boost/assign/v2/put/put.hpp | 4
   sandbox/statistics/support/boost/assign/v2/put/range/adaptor.hpp | 2
   sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp | 6
   sandbox/statistics/support/boost/assign/v2/put/range/modifier/put.hpp | 3
   sandbox/statistics/support/boost/assign/v2/put/range/range.hpp | 2
   sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp | 257 ---------------------------------------
   sandbox/statistics/support/boost/assign/v2/put/wrapper/make.hpp | 123 ------------------
   sandbox/statistics/support/boost/assign/v2/put/wrapper/wrapper.hpp | 6
   sandbox/statistics/support/boost/assign/v2/ref/anon/anon.hpp | 2
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_copy.hpp | 2
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_rebind.hpp | 2
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_xxx.hpp | 24 ++
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/csv.hpp | 2
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/make.hpp | 12 +
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/nth_result_of.hpp | 6
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/pp.hpp | 38 ++++-
   sandbox/statistics/support/boost/assign/v2/ref/anon/detail/fast_alloc.hpp | 2
   sandbox/statistics/support/boost/assign/v2/ref/anon/detail/fast_alloc_fwd.hpp | 2
   sandbox/statistics/support/boost/assign/v2/ref/anon/detail/interface.hpp | 2
   sandbox/statistics/support/boost/assign/v2/ref/anon/detail/lazy_alloc.hpp | 4
   sandbox/statistics/support/boost/assign/v2/ref/anon/detail/lazy_alloc_fwd.hpp | 2
   sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_copy.hpp | 18 --
   sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_rebind.hpp | 18 --
   sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_xxx.hpp | 70 ----------
   sandbox/statistics/support/boost/assign/v2/ref/anon/functor/functor.hpp | 19 --
   sandbox/statistics/support/boost/assign/v2/ref/anon/functor/make.hpp | 64 ---------
   sandbox/statistics/support/boost/assign/v2/ref/anon/functor/nth_result_of.hpp | 36 -----
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/cont.hpp | 82 ------------
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/fwd.hpp | 28 ----
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/generic.hpp | 17 --
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/make.hpp | 58 ---------
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/nth_result_of.hpp | 55 --------
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/policy.hpp | 52 --------
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/traits.hpp | 59 ---------
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/assign_array.hpp | 77 -----------
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/container.hpp | 144 ----------------------
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fusion_list.hpp | 19 --
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fwd.hpp | 32 ----
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/make.hpp | 72 -----------
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/nth_result_of.hpp | 82 ------------
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp | 6
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp | 4
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp | 3
   sandbox/statistics/support/boost/assign/v2/ref/ref.hpp | 2
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp | 46 ++++--
   77 files changed, 590 insertions(+), 1992 deletions(-)

Modified: sandbox/statistics/support/boost/assign/v2/anon/anon.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/anon/anon.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/anon/anon.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -10,7 +10,8 @@
 #ifndef BOOST_ASSIGN_V2_ANON_ANON_ER_2010_HPP
 #define BOOST_ASSIGN_V2_ANON_ANON_ER_2010_HPP
 
-#include <boost/assign/v2/anon/cont.hpp>
 #include <boost/assign/v2/anon/make.hpp>
+#include <boost/assign/v2/anon/cont.hpp>
+#include <boost/assign/v2/anon/csv.hpp>
 
 #endif

Modified: sandbox/statistics/support/boost/assign/v2/anon/cont.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/anon/cont.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/anon/cont.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -18,6 +18,8 @@
 #include <boost/range/iterator_range.hpp> //iterator_range_detail::
 #include <boost/assign/v2/put/put.hpp>
 #include <boost/assign/v2/put/range/range.hpp>
+#include <boost/assign/v2/put/generic/result_of_modulo.hpp>
+#include <boost/assign/v2/put/generic/crtp.hpp>
 #include <boost/assign/v2/detail/relational_op/relational_op.hpp>
 
 namespace boost{
@@ -25,29 +27,38 @@
 namespace v2{
 namespace anon_aux{
 
- template<typename T>
- struct impl{ typedef std::deque<T> type; };
+ template<typename T,typename F,typename Tag> class cont;
 
- template<typename T,typename F,typename Tag>
- class cont;
+}// anon_aux
+namespace result_of_modulo{
+
+ template<typename T,typename F,typename Tag>
+ struct new_fun<anon_aux::cont<T,F,Tag> >
+ {
 
- template<typename T,typename F,typename Tag>
- struct cont_modifier_traits
+ template<typename F1>
+ struct apply{ typedef anon_aux::cont<T, F1, Tag> type; };
+
+ };
+
+ template<typename T,typename F,typename Tag>
+ struct new_modifier<anon_aux::cont<T,F,Tag> >
     {
- template<typename Tag1>
- struct new_tag{
- typedef cont<T,F,Tag1> type;
- };
- template<typename F1>
- struct new_fun{
- typedef cont<T,F1,Tag> type;
- };
+
+ template<typename NewTag>
+ struct apply{ typedef anon_aux::cont<T, F, NewTag> type; };
         
- template<typename F1,typename Tag1>
- struct new_fun_tag{
- typedef cont<T,F1,Tag1> type;
- };
     };
+
+}//result_of_modulo
+namespace anon_aux{
+
+ template<typename T>
+ struct impl{ typedef std::deque<T> type; };
+
+ template<typename T,typename F,typename Tag>
+ struct cont_modifier_traits
+ { };
 
 
         template<typename T,typename F,typename Tag>
@@ -63,6 +74,8 @@
         typedef cont_modifier_traits<T,F,Tag> modifier_traits_;
         typedef put_aux::crtp< impl_, F, Tag, cont, modifier_traits_> put_crtp_;
     
+ typedef put_aux::modifier<Tag> modifier_;
+
             public:
     
             typedef T value_type;
@@ -74,11 +87,15 @@
                 // Construct
         cont(){}
         explicit cont(const F& f) : put_crtp_( f ){}
- explicit cont(impl_ const& v, const F& f): put_crtp_( f ), impl( v )
+ explicit cont(impl_ const& v, F const& f): put_crtp_( f ), impl( v )
+ {
+ // Required by crtp when Tag or F is modified.
+ }
+
+ explicit cont( impl_ const& v, F const& f, modifier_ const& m )
+ : put_crtp_( f, m ), impl( v )
         {
                 // Required by crtp when Tag or F is modified.
- // Note : unlike put_aux::derived, cont is copied.
- // Order of initialization is put_crtp_ then cont.
         }
         
         // Deque interface

Modified: sandbox/statistics/support/boost/assign/v2/anon/make.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/anon/make.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/anon/make.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -28,8 +28,8 @@
             typedef typename anon_aux::impl<t_>::type cont_;
         typedef result_of::put<cont_> traits_;
         typedef typename traits_::f_ f_;
- typedef typename traits_::put_tag_ put_tag_;
- typedef anon_aux::cont<t_,f_,put_tag_> type;
+ typedef typename traits_::modifier_tag_ modifier_tag_;
+ typedef anon_aux::cont<t_,f_,modifier_tag_> type;
     };
 
 }// result_of
@@ -42,20 +42,6 @@
         return result_();
     }
 
- template<typename T>
- typename result_of::anon<T>::type
- anon( T& t )
- {
- return anon<T>( v2::_nil )( t );
- }
-
- template<typename T>
- typename result_of::anon<T const>::type
- anon( T const& t )
- {
- return anon<T>( v2::_nil )( t );
- }
-
 }// v2
 }// assign
 }// boost

Modified: sandbox/statistics/support/boost/assign/v2/chain/chain.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/chain/chain.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/chain/chain.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -10,8 +10,8 @@
 #ifndef BOOST_ASSIGN_V2_CHAIN_CHAIN_ER_2010_HPP
 #define BOOST_ASSIGN_V2_CHAIN_CHAIN_ER_2010_HPP
 #include <boost/assign/v2/chain/traits/result.hpp>
-#include <boost/assign/v2/chain/aux/bitwise_or.hpp>
-#include <boost/assign/v2/chain/aux/logical_and.hpp>
+#include <boost/assign/v2/chain/aux_/bitwise_or.hpp>
+#include <boost/assign/v2/chain/aux_/logical_and.hpp>
 
 // Usage
 // using namespace boost::assign::v2;
@@ -21,4 +21,3 @@
 // BOOST_ASSERT(v == w);
 
 #endif
-

Modified: sandbox/statistics/support/boost/assign/v2/chain/checking/distinct_values.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/chain/checking/distinct_values.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/chain/checking/distinct_values.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -49,6 +49,7 @@
         } \
         namespace chk = checking::container; \
         { \
+ using namespace adaptor; \
                     chk::do_check( vec1 | _chain( vec2 ) | _chain( vec3 ) ); \
         } \
     } \

Modified: sandbox/statistics/support/boost/assign/v2/chain/checking/twin_values.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/chain/checking/twin_values.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/chain/checking/twin_values.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -115,11 +115,15 @@
                 vt.push_back( ns::f );
                 vt.push_back( ns::g );
                 vt.push_back( ns::h );
- boost::copy(
- vt,
- boost::begin( vt1 | _chain( vt2 ) | _chain( vt3 ))
- );
                 {
+ using namespace adaptor;
+ boost::copy(
+ vt,
+ boost::begin( vt1 | _chain( vt2 ) | _chain( vt3 ))
+ );
+ }
+ {
+ using namespace adaptor;
                         typedef v2::container_tag::range tag_;
                     v2::checking::do_check(
                             tag_(),
@@ -146,7 +150,7 @@
                         vw3[ 1 ] = g1 ;
                         vw3[ 2 ] = h1 ;
                                 }
-
+ using namespace adaptor;
                 boost::copy(
                         vt,
                     boost::begin( vw1 | _chain( vw2 ) | _chain( vw3 ) )

Modified: sandbox/statistics/support/boost/assign/v2/chain/traits/result.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/chain/traits/result.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/chain/traits/result.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -13,7 +13,7 @@
 #include <boost/mpl/identity.hpp>
 #include <boost/assign/v2/chain/traits/use_lvalue.hpp>
 #include <boost/assign/v2/chain/traits/range.hpp>
-#include <boost/assign/v2/chain/aux/sub.hpp>
+#include <boost/assign/v2/chain/aux_/sub.hpp>
 
 namespace boost{
 namespace assign{

Modified: sandbox/statistics/support/boost/assign/v2/detail/config/arity_bound.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/config/arity_bound.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/config/arity_bound.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,13 +7,18 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/mpl/limits/arity.hpp>
 
 // Default upper bound on the arity of function and functors
 #ifndef BOOST_ASSIGN_V2_ARITY_BOUND
-#define BOOST_ASSIGN_V2_ARITY_BOUND 6
+#define BOOST_ASSIGN_V2_ARITY_BOUND\
+ BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)\
+/**/
 #endif
-// Upper bound on the arity of 'csv' functions
-#ifndef BOOST_ASSIGN_V2_CSV_ARITY_BOUND
-#define BOOST_ASSIGN_V2_CSV_ARITY_BOUND 11
+
+#if BOOST_ASSIGN_V2_ARITY_BOUND > BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
+#error
+// This is required, at least, by /ref/fusion_matrix/container.hpp
 #endif
-// These two constants may be set by the user.
\ No newline at end of file
+

Modified: sandbox/statistics/support/boost/assign/v2/detail/config/enable_cpp_0x.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/config/enable_cpp_0x.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/config/enable_cpp_0x.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,19 +1,3 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
 
-// Usage:
-// #include <boost/assign/v2/detail/config/enable_cpp_0x.hpp>
-// enables features that are available under C++0x in subsequently included
-// header files.
-
-#ifndef BOOST_ASSIGN_V2_ENABLE_CPP_0X
-#define BOOST_ASSIGN_V2_ENABLE_CPP_0X
-#endif
 
+// TODO REMOVE

Modified: sandbox/statistics/support/boost/assign/v2/detail/detail.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/detail.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/detail.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -10,6 +10,7 @@
 #ifndef BOOST_ASSIGN_V2_DETAIL_DETAIL_ER_2010_HPP
 #define BOOST_ASSIGN_V2_DETAIL_DETAIL_ER_2010_HPP
 
+#include <boost/assign/v2/detail/checking/checking.hpp>
 #include <boost/assign/v2/detail/functor/functor.hpp>
 #include <boost/assign/v2/detail/fwd/fwd.hpp>
 #include <boost/assign/v2/detail/keyword/keyword.hpp>

Modified: sandbox/statistics/support/boost/assign/v2/detail/functor/constructor.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/functor/constructor.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/functor/constructor.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -16,34 +16,33 @@
 #include <boost/type_traits/remove_cv.hpp>
 #include <boost/mpl/always.hpp>
 #include <boost/assign/v2/detail/type_traits/container/value.hpp>
-#include <boost/assign/v2/detail/config/arity_bound.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
 #include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
 
-
 namespace boost{
-namespace assign{
+namespace assign{
 namespace v2{
 namespace functor_aux{
 
         template<typename T>
- class constructor : public functor_aux::crtp_unary_and_up<
- functor_aux::constructor<T>,
- boost::mpl::always<T>
+ class constructor : public functor_aux::crtp_unary_and_up<
+ functor_aux::constructor<T>,
+ boost::mpl::always<T>
>
         {
                 typedef functor_aux::constructor<T> this_;
         typedef boost::mpl::always<T> meta_result_;
         typedef functor_aux::crtp_unary_and_up<this_, meta_result_> super_;
-
+
             public:
-
+
                 constructor(){}
-
- T operator()()const{ return T(); }
+
+ T operator()()const{ return T(); }
 
                 using super_::operator();
 
-#define BOOST_ASSIGN_V2_impl(z,N,data) \
+#define MACRO(z,N,data) \
     template<BOOST_PP_ENUM_PARAMS(N,typename T)> \
     T impl( BOOST_PP_ENUM_BINARY_PARAMS(N, T, &_) )const{ \
         return T( BOOST_PP_ENUM_PARAMS(N,_) ); \
@@ -51,12 +50,12 @@
 /**/
 BOOST_PP_REPEAT_FROM_TO(
         1,
- BOOST_ASSIGN_V2_ARITY_BOUND,
- BOOST_ASSIGN_V2_impl,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ MACRO,
     ~
 )
-#undef BOOST_ASSIGN_V2_impl
-
+#undef MACRO
+
         };
 
         template<typename V>
@@ -86,7 +85,7 @@
             typedef typename result_of::constructor<T>::type result_;
             return result_();
     }
-
+
 }// v2
 }// assign
 }// boost

Modified: sandbox/statistics/support/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -9,36 +9,46 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_DETAIL_FUNCTOR_CRTP_UNARY_AND_UP_ER_2010_HPP
 #define BOOST_ASSIGN_V2_DETAIL_FUNCTOR_CRTP_UNARY_AND_UP_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/seq/for_each_product.hpp>
+#include <boost/preprocessor/seq/first_n.hpp>
+
 #include <boost/mpl/apply.hpp>
 #include <boost/mpl/vector.hpp>
 #include <boost/utility/enable_if.hpp>
-#include <boost/assign/v2/detail/config/arity_bound.hpp>
-//#include <boost/assign/v2/detail/config/enable_cpp_0x.hpp>
 
-#ifdef BOOST_ASSIGN_V2_LVALUE_CONST_ARITY_BOUND
-#error
-#endif
-// This constant should not be changed by the user.
-#define BOOST_ASSIGN_V2_LVALUE_CONST_ARITY_BOUND 4
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/detail/config/limit_lvalue_const_arity.hpp>
+#include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
+#include <boost/assign/v2/detail/pp/args.hpp>
+#include <boost/assign/v2/detail/pp/params.hpp>
+#include <boost/assign/v2/detail/pp/seq.hpp>
+
+#ifndef BOOST_ASSIGN_V2_ENABLE_CPP0X
+#error
+#endif
+
+#if BOOST_ASSIGN_V2_ENABLE_CPP0X
+#include <boost/mpl/detail/variadic_vector.hpp>
+#endif
 
 // Notation:
-// m = BOOST_ASSIGN_V2_LVALUE_CONST_ARITY_BOUND
-// n = BOOST_ASSIGN_V2_ARITY_BOUND
+// m = BOOST_ASSIGN_V2_LIMIT_LVALUE_CONST_ARITY
+// n = BOOST_ASSIGN_V2_LIMIT_ARITY
 //
-// Usage:
-// Publicly inheriting from crtp_unary_and_up<D,F> exposes in derived class D
-// operator() for any combination of lvalues and const values for arity
-// 0 < k < m, and for m <= k < n lvalue is preserved only if all arguments are
-// lvalues.
-//
-// Requirements:
-// For operator() with arity k to be defined, the derived class has to define,
-// typename apply1<F,mpl::vector<T0,...,Tk> >::type impl(T0&,...,Tk&)const;
-//
-// Note:
-// For k = 0, operator() should be defined in the derived class, and the follo-
-// wing statement added in its body:
-// using crtp_unary_and_up<D,F>::operator();
+// Given a metafunction class, F, and a derived class, D, that defines
+// template<typename T0, ..., typename Tk>
+// typename apply1<F, mpl::vector<T0,...,Tk> >::type
+// impl(T0& , ..., Tk&)const;
+// for k = 0, ..., n-1, crtp<F,D> defines, under C++03, a set of overloaded
+// operator()'s, each forwarding to impl(), for each combination of lvalues and
+// const arguments for k = 0, ..., m-1, and either only lvalues or only const
+// for k = m, ..., n-1. Under C++0x, operator() forwards to impl() for any
+// combination of lvalues and const and k = 0,...,n-1.
 
 namespace boost{
 namespace assign{
@@ -55,125 +65,78 @@
 
                 public:
 
+#if BOOST_ASSIGN_V2_ENABLE_CPP0X
+ template<typename T0,typename...Args>
+ typename boost::mpl::apply1<
+ F,
+ typename boost::mpl::detail::variadic_vector<T0, Args...>::type
+ >::type
+ operator()(T0&& t0, Args&&...args)const{
+ return this->derived().template impl<T0, Args...>(t0, args...);
+ }
+#else
+
+#define MACRO1(r, SeqU) \
+ template<BOOST_ASSIGN_V2_decl_params(SeqU)> \
+ typename boost::mpl::apply1< \
+ F, \
+ boost::mpl::vector<BOOST_ASSIGN_V2_params(SeqU)> \
+ >::type \
+ operator()( BOOST_ASSIGN_V2_decl_args(SeqU) )const{ \
+ return this->derived().template impl<BOOST_ASSIGN_V2_params(SeqU)>( \
+ BOOST_ASSIGN_V2_args(SeqU) \
+ ); \
+ } \
+/**/
 
-// #ifndef BOOST_ASSIGN_V2_ENABLE_CPP_0X
 
-#define BOOST_ASSIGN_V2_op1(U0) \
- template<typename T0> \
- typename boost::mpl::apply1< \
- F, \
- boost::mpl::vector<U0> \
- >::type \
- operator()( U0& _0)const{ \
- return this->derived().template impl<U0>( _0 ); \
- } \
-/**/
-BOOST_ASSIGN_V2_op1(T0 const )
-BOOST_ASSIGN_V2_op1(T0 )
-#undef BOOST_ASSIGN_V2_op1
-
-#define BOOST_ASSIGN_V2_op2(U0,U1) \
- template<typename T0,typename T1> \
- typename boost::mpl::apply1< \
- F, \
- boost::mpl::vector<U0, U1> \
- >::type \
- operator()( U0& _0, U1& _1)const{ \
- return this->derived().template impl<U0, U1>( _0, _1 ); \
- } \
+#define MACRO2(z, n, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT(\
+ MACRO1, \
+ BOOST_PP_SEQ_FIRST_N(BOOST_PP_INC(n), BOOST_ASSIGN_V2_SEQ)\
+) \
 /**/
-BOOST_ASSIGN_V2_op2(T0 const, T1 const )
-BOOST_ASSIGN_V2_op2(T0 , T1 const )
-BOOST_ASSIGN_V2_op2(T0 const, T1 )
-BOOST_ASSIGN_V2_op2(T0 , T1 )
-#undef BOOST_ASSIGN_V2_op2
-
-#define BOOST_ASSIGN_V2_op3(U0, U1, U2) \
- template<typename T0,typename T1,typename T2> \
- typename boost::mpl::apply1< \
- F, \
- boost::mpl::vector<U0, U1, U2> \
- >::type \
- operator()( U0& _0, U1& _1, U2& _2)const{ \
- return this->derived().template impl<U0, U1, U2>( _0, _1, _2 ); \
- } \
-/**/
-BOOST_ASSIGN_V2_op3(T0 const, T1 const , T2 const )
-BOOST_ASSIGN_V2_op3(T0 , T1 const , T2 const )
-BOOST_ASSIGN_V2_op3(T0 const, T1 , T2 const )
-BOOST_ASSIGN_V2_op3(T0 , T1 , T2 const )
-BOOST_ASSIGN_V2_op3(T0 const, T1 const , T2 )
-BOOST_ASSIGN_V2_op3(T0 , T1 const , T2 )
-BOOST_ASSIGN_V2_op3(T0 const, T1 , T2 )
-BOOST_ASSIGN_V2_op3(T0 , T1 , T2 )
-#undef BOOST_ASSIGN_V2_op3
-
-#define BOOST_ASSIGN_V2_op4(U0, U1, U2, U3) \
- template<typename T0,typename T1,typename T2,typename T3> \
- typename boost::mpl::apply1< \
- F, \
- boost::mpl::vector<U0, U1, U2, U3> \
- >::type \
- operator()( U0& _0, U1& _1, U2& _2, U3& _3)const{ \
- return this->derived().template \
- impl<U0, U1, U2, U3>( _0, _1, _2, _3 ); \
- } \
-/**/
-/*
-BOOST_ASSIGN_V2_op4(T0 const, T1 const , T2 const , T3 const )
-BOOST_ASSIGN_V2_op4(T0 , T1 const , T2 const , T3 const )
-BOOST_ASSIGN_V2_op4(T0 const, T1 , T2 const , T3 const )
-BOOST_ASSIGN_V2_op4(T0 , T1 , T2 const , T3 const )
-BOOST_ASSIGN_V2_op4(T0 const, T1 const , T2 , T3 const )
-BOOST_ASSIGN_V2_op4(T0 , T1 const , T2 , T3 const )
-BOOST_ASSIGN_V2_op4(T0 const, T1 , T2 , T3 const )
-BOOST_ASSIGN_V2_op4(T0 , T1 , T2 , T3 const )
-BOOST_ASSIGN_V2_op4(T0 const, T1 const , T2 const , T3 )
-BOOST_ASSIGN_V2_op4(T0 , T1 const , T2 const , T3 )
-BOOST_ASSIGN_V2_op4(T0 const, T1 , T2 const , T3 )
-BOOST_ASSIGN_V2_op4(T0 , T1 , T2 const , T3 )
-BOOST_ASSIGN_V2_op4(T0 const, T1 const , T2 , T3 )
-BOOST_ASSIGN_V2_op4(T0 , T1 const , T2 , T3 )
-BOOST_ASSIGN_V2_op4(T0 const, T1 , T2 , T3 )
-BOOST_ASSIGN_V2_op4(T0 , T1 , T2 , T3 )
-*/
-#undef BOOST_ASSIGN_V2_op4
-
-#define BOOST_ASSIGN_V2_op(z,N,data) \
- template<BOOST_PP_ENUM_PARAMS(N,typename T)> \
- typename boost::mpl::apply1< \
- F, \
- boost::mpl::vector<BOOST_PP_ENUM_PARAMS(N,T)> \
- >::type \
- operator()( BOOST_PP_ENUM_BINARY_PARAMS(N,T,&_) )const{ \
- return this->derived().template impl< \
- BOOST_PP_ENUM_PARAMS(N,T) \
- >( BOOST_PP_ENUM_PARAMS(N,_) ); \
- } \
- \
- template<BOOST_PP_ENUM_PARAMS(N,typename T)> \
- typename boost::mpl::apply1< \
- F, \
- boost::mpl::vector<BOOST_PP_ENUM_PARAMS(N,const T)> \
- >::type \
- operator()( BOOST_PP_ENUM_BINARY_PARAMS(N,T, const &_) )const{ \
- return this->derived().template impl< \
- BOOST_PP_ENUM_PARAMS(N,const T) \
- >( BOOST_PP_ENUM_PARAMS(N, _) ); \
- } \
+BOOST_PP_REPEAT(
+ BOOST_ASSIGN_V2_LIMIT_LVALUE_CONST_ARITY,
+ MACRO2,
+ ~
+)
+
+#undef MACRO1
+#undef MACRO2
+
+#define MACRO(z, N, data) \
+ template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
+ typename boost::mpl::apply1< \
+ F, \
+ boost::mpl::vector<BOOST_PP_ENUM_PARAMS(N, T)> \
+ >::type \
+ operator()( BOOST_PP_ENUM_BINARY_PARAMS(N, T, &_) )const{ \
+ return this->derived().template impl< \
+ BOOST_PP_ENUM_PARAMS(N, T) \
+ >( BOOST_PP_ENUM_PARAMS(N, _) ); \
+ } \
+ \
+ template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
+ typename boost::mpl::apply1< \
+ F, \
+ boost::mpl::vector<BOOST_PP_ENUM_PARAMS(N, const T)> \
+ >::type \
+ operator()( BOOST_PP_ENUM_BINARY_PARAMS(N, T, const &_) )const{ \
+ return this->derived().template impl< \
+ BOOST_PP_ENUM_PARAMS(N, const T) \
+ >( BOOST_PP_ENUM_PARAMS(N, _) ); \
+ } \
 /**/
+
 BOOST_PP_REPEAT_FROM_TO(
- BOOST_ASSIGN_V2_LVALUE_CONST_ARITY_BOUND,
- BOOST_ASSIGN_V2_ARITY_BOUND,
- BOOST_ASSIGN_V2_op,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_LVALUE_CONST_ARITY),
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ MACRO,
     ~
 )
-#undef BOOST_ASSIGN_V2_op
+#undef MACRO
 
-// #endif
-// #ifdef BOOST_ASSIGN_V2_ENABLE_CPP_0X
-// TODO
-// #endif
+#endif // #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 
         };
 
@@ -182,5 +145,4 @@
 }// assign
 }// boost
 
-
 #endif

Modified: sandbox/statistics/support/boost/assign/v2/detail/functor/identity.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/functor/identity.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/functor/identity.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -13,14 +13,15 @@
 #include <boost/mpl/at.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/size.hpp>
+#include <boost/mpl/eval_if.hpp>
 #include <boost/type_traits/add_reference.hpp>
 #include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
 
 namespace boost{
-namespace assign{
+namespace assign{
 namespace v2{
 namespace functor_aux{
-
+
     struct result_of_identity{
 
         template<typename V>
@@ -28,41 +29,41 @@
                        boost::mpl::int_<1>,
                        boost::mpl::size<V>
>{};
-
+
             template<typename V>
         struct enable
         {
                 typedef typename boost::mpl::at_c<V,0>::type t_;
             typedef typename boost::add_reference<t_>::type type;
         };
-
+
             template<typename V>
         struct disable{};
-
+
         template<typename V>
         struct apply : boost::mpl::eval_if<
- is_ok<V>,
+ is_ok<V>,
             enable<V>,
             disable<V>
>{};
-
+
     };
-
- struct identity : functor_aux::crtp_unary_and_up<
- functor_aux::identity,
+
+ struct identity : functor_aux::crtp_unary_and_up<
+ functor_aux::identity,
         functor_aux::result_of_identity
>
     {
             identity(){}
-
+
             template<typename T> T& impl(T& t)const{ return t; }
             template<typename T> T const& impl(T const& t)const{ return t; }
-
+
     };
 
 }// functor_aux
 namespace{
- functor_aux::identity const _identity = functor_aux::identity();
+ functor_aux::identity const _identity = functor_aux::identity();
 }
 }// v2
 }// assign

Modified: sandbox/statistics/support/boost/assign/v2/detail/functor/new.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/functor/new.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/functor/new.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -17,7 +17,7 @@
 #include <boost/type_traits/remove_cv.hpp>
 #include <boost/mpl/always.hpp>
 #include <boost/assign/v2/detail/type_traits/container/value.hpp>
-#include <boost/assign/v2/detail/config/arity_bound.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
 #include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
 
 namespace boost{
@@ -46,19 +46,19 @@
 
                 using super_::operator();
 
-#define BOOST_ASSIGN_V2_impl(z,N,data) \
- template<BOOST_PP_ENUM_PARAMS(N,typename T)> \
+#define MACRO(z, N, data) \
+ template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
     result_type impl( BOOST_PP_ENUM_BINARY_PARAMS(N, T, &_) )const{ \
- return new T( BOOST_PP_ENUM_PARAMS(N,_) ); \
+ return new T( BOOST_PP_ENUM_PARAMS(N, _) ); \
     } \
 /**/
 BOOST_PP_REPEAT_FROM_TO(
         1,
- BOOST_ASSIGN_V2_ARITY_BOUND,
- BOOST_ASSIGN_V2_impl,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ MACRO,
     ~
 )
-#undef BOOST_ASSIGN_V2_impl
+#undef MACRO
         
         };
 
@@ -70,7 +70,7 @@
         static type call(){ return functor_aux::new_<value_>(); }
     };
 
- // --- For testing only --- //
+// --- For testing only --- // TODO remove foo from this file.
 
 struct foo
 {

Modified: sandbox/statistics/support/boost/assign/v2/detail/keyword/deduce.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/keyword/deduce.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/keyword/deduce.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,45 +7,6 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_DETAIL_KEYWORD_DEDUCE_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_KEYWORD_DEDUCE_ER_2010_HPP
-#include <boost/mpl/eval_if.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/mpl/identity.hpp>
 
-namespace boost{
- struct use_default;
-namespace assign{
-namespace v2{
-namespace keyword_aux{
- struct deduce{};
 
- template<typename T>
- typename T::result_of_modulo::deduce::type
- operator%(
- T const& t,
- keyword_aux::deduce const& deduce
- )
- {
- return t.modulo_deduce();
- }
-
-}// keyword_aux
-namespace{
- const keyword_aux::deduce _deduce = keyword_aux::deduce();
-}
-namespace detail{
-
- template<typename Option1,typename Option2>
- struct deduce : boost::mpl::eval_if<
- boost::is_same<Option1,boost::use_default>,
- boost::mpl::identity<Option2>,
- boost::mpl::identity<Option1>
- >{};
-
-}// detail
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO delete file
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/detail/keyword/fun.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/keyword/fun.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/keyword/fun.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,55 +7,5 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_DETAIL_KEYWORD_FUN_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_KEYWORD_FUN_ER_2010_HPP
 
-// Usage
-// _fun = f
-// return fun_holder<F>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace detail{
-
- template<typename F>
- struct fun_holder{
-
- fun_holder(const F& f):value(f){}
-
- F value;
- };
-
- template<typename T,typename F1>
- typename T::result_of_modulo::template fun<F1>::type
- operator%(
- T const& t,
- detail::fun_holder<F1> const& h
- )
- {
- return t.modulo_fun( h.value );
- }
-
-}// detail
-namespace keyword_aux{
-
- struct fun{
-
- template<typename F>
- detail::fun_holder<F>
- operator=(F const& f)const
- {
- return detail::fun_holder<F>( f );
- }
-
- };
-}// keyword_aux
-namespace{
- const keyword_aux::fun _fun = keyword_aux::fun();
-}
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO delete file

Modified: sandbox/statistics/support/boost/assign/v2/detail/keyword/keyword.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/keyword/keyword.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/keyword/keyword.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -10,11 +10,7 @@
 #ifndef BOOST_ASSIGN_V2_DETAIL_KEYWORD_KEYWORD_ER_2010_HPP
 #define BOOST_ASSIGN_V2_DETAIL_KEYWORD_KEYWORD_ER_2010_HPP
 
-#include <boost/assign/v2/detail/keyword/deduce.hpp>
-#include <boost/assign/v2/detail/keyword/fun.hpp>
-#include <boost/assign/v2/detail/keyword/lookup.hpp>
 #include <boost/assign/v2/detail/keyword/nil.hpp>
 #include <boost/assign/v2/detail/keyword/unwrap.hpp>
-#include <boost/assign/v2/detail/keyword/repeat.hpp>
 
 #endif

Modified: sandbox/statistics/support/boost/assign/v2/detail/keyword/lookup.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/keyword/lookup.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/keyword/lookup.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,34 +7,4 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_DETAIL_KEYWORD_LOOKUP_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_KEYWORD_LOOKUP_ER_2010_HPP
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace keyword_aux{
-
- struct lookup{};
- struct incr_lookup{};
-
- template<typename T>
- typename T::result_of_modulo::incr_lookup::type
- operator%(
- T const& t,
- keyword_aux::incr_lookup const& dummy
- )
- {
- return t.modulo_incr_lookup();
- }
-
-}// detail
-
- keyword_aux::lookup const _lookup = keyword_aux::lookup();
- keyword_aux::incr_lookup const _incr_lookup = keyword_aux::incr_lookup();
-
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO delete
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/detail/keyword/repeat.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/keyword/repeat.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/keyword/repeat.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,45 +7,5 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_DETAIL_KEYWORD_REPEAT_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_KEYWORD_REPEAT_ER_2010_HPP
 
-namespace boost{
-namespace assign{
-namespace v2{
-namespace keyword_aux{
-
- struct repeat{
-
- typedef std::size_t size_type;
-
- repeat() : value( 0 ){}
-
- repeat operator=( size_type const& n)const{
- repeat result;
- result.value = n;
- return result;
- }
-
- size_type value;
- };
-
- template<typename T>
- typename T::result_of_modulo::repeat::type
- operator%(
- T const& t,
- keyword_aux::repeat const& h
- )
- {
- return t.modulo_repeat( h.value );
- }
-
-}// detail
-
- keyword_aux::repeat const _repeat = keyword_aux::repeat();
-
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO delete file

Modified: sandbox/statistics/support/boost/assign/v2/detail/mpl/mpl.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/mpl/mpl.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/mpl/mpl.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -13,4 +13,4 @@
 #include <boost/assign/v2/detail/mpl/always.hpp>
 #include <boost/assign/v2/detail/mpl/switch.hpp>
 
-#endif
\ No newline at end of file
+#endif

Modified: sandbox/statistics/support/boost/assign/v2/detail/relational_op/crtp.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/relational_op/crtp.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/relational_op/crtp.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -27,15 +27,19 @@
     // template<typename T> bool equal_to(const T&)const;
     // template<typename T> bool less_than(const T&)const;
         template<typename D>
- struct crtp : base{
+ struct crtp{// : base{
     
              D const& derived()const{ return static_cast<D const&>(*this); }
          
     };
 
+ template<typename T>
+ struct is_relational : boost::is_base_of<crtp<T>,T>{};
+
         template< typename A ,typename B>
     typename boost::disable_if<
- boost::is_base_of<base,A>,
+ relational_op_aux::is_relational<A>,
+// boost::is_base_of<base,A>,
         bool
>::type
     operator==( A const& a, crtp< B > const& b)
@@ -51,7 +55,8 @@
 
         template< typename A ,typename B>
     typename boost::disable_if<
- boost::is_base_of<base,A>,
+// boost::is_base_of<base,A>,
+ relational_op_aux::is_relational<A>,
         bool
>::type
     operator<( A const& a, crtp< B > const& b)
@@ -67,7 +72,7 @@
 
         // Deduced
 
-#define op(symb,expr)\
+#define MACRO(symb,expr)\
         template< typename A ,typename B> \
     typename boost::disable_if< \
             boost::is_base_of<base,A>, \
@@ -85,12 +90,12 @@
         } \
 /**/
 
- op( !=, !(a == b) )
- op( <=, (a < b) || (a == b) )
- op( >, !(a <= b) )
- op( >=, (a > b) || (a == b) )
+ MACRO( !=, !(a == b) )
+ MACRO( <=, (a < b) || (a == b) )
+ MACRO( >, !(a <= b) )
+ MACRO( >=, (a > b) || (a == b) )
 
-#undef op
+#undef MACRO
     
 }// relational_op_aux
 }// v2

Modified: sandbox/statistics/support/boost/assign/v2/detail/type_traits/meta_convert.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/type_traits/meta_convert.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/meta_convert.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -12,12 +12,12 @@
 #include <boost/assign/v2/ref/detail/convert_traits/result.hpp>
 
 namespace boost{
- struct boost::use_default;
+// struct boost::use_default;
 namespace assign{
 namespace v2{
 namespace type_traits{
 
- template<typename Tag = use_default>
+ template<typename Tag = boost::use_default>
     struct meta_convert{
 
         template<typename T1,typename T2>
@@ -26,7 +26,7 @@
         };
 
         // Specialize on Tag as needed.
-
+
 }// type_traits
 }// v2
 }// assign

Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/at_next.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/at_next.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/at_next.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -9,34 +9,42 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_MODIFIER_AT_NEXT_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_MODIFIER_AT_NEXT_ER_2010_HPP
+#include <boost/accumulators/framework/accumulator_base.hpp>
 #include <boost/assign/v2/put/modifier/def.hpp>
+#include <boost/assign/v2/put/generic/new_modifier.hpp>
 #include <boost/assign/v2/detail/type_traits/value.hpp>
 
 namespace boost{
 namespace assign{
 namespace v2{
-namespace put_tag{ struct at_next{}; }
+namespace modifier_tag{ struct at_next{}; }
 namespace put_aux{
 
         template<>
- struct modifier<v2::put_tag::at_next>{
+ struct modifier<v2::modifier_tag::at_next>
+ {
 
                 modifier():i( 0 ){};
+ modifier( boost::accumulators::dont_care ):i( 0 ){}
     
             template<typename V,typename T>
- void impl(V& v,T& t)const{
+ void impl(V& v, T& t)const{
                 v.at( i++ ) = t;
         }
 
- // TODO
+ // TODO check
             template<typename V,typename T>
- void impl(V& v,T* t)const{ v.replace( i++ , t); }
+ void impl(V& v, T* t)const{ v.replace( i++ , t); }
         
         private:
         mutable std::size_t i;
     };
 
 }// assign_aux
+
+ put_aux::set_modifier<modifier_tag::at_next> const
+ _at_next = ( _modifier = modifier_tag::at_next() );
+
 }// v2
 }// assign
 }// boost

Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -9,6 +9,10 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_MODIFIER_DEDUCE_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_MODIFIER_DEDUCE_ER_2010_HPP
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/mpl/identity.hpp>
+
 #include <boost/assign/v2/detail/mpl/switch.hpp>
 
 #include <boost/assign/v2/detail/type_traits/container/is_static_array.hpp>
@@ -16,43 +20,44 @@
 #include <boost/assign/v2/detail/type_traits/container/is_associative.hpp>
 
 namespace boost{
+ struct use_default;
 namespace assign{
 namespace v2{
 namespace switch_tag{
         struct deduce_put{};
 }// switch_tag
-namespace put_tag{
+namespace modifier_tag{
         struct at_next;
     struct insert;
     struct push;
     struct push_back;
-}// put_tag
+}// modifier_tag
 namespace mpl{
 
     template<>
     struct case_<switch_tag::deduce_put,0> :
         v2::mpl::wrap<
- v2::put_tag::insert,
+ v2::modifier_tag::insert,
             v2::container_type_traits::is_associative
>{};
 
     template<>
     struct case_<switch_tag::deduce_put,1> :
         v2::mpl::wrap<
- v2::put_tag::at_next,
+ v2::modifier_tag::at_next,
             v2::container_type_traits::is_static_array
>{};
 
     template<>
     struct case_<switch_tag::deduce_put,2> :
         v2::mpl::wrap<
- v2::put_tag::push,
+ v2::modifier_tag::push,
             container_type_traits::has_push_deduced_value
>{};
 
     template<>
     struct case_<switch_tag::deduce_put,3> :
- v2::mpl::wrap<v2::put_tag::push_back>{};
+ v2::mpl::wrap<v2::modifier_tag::push_back>{};
 
 }// mpl
 namespace put_aux{
@@ -64,9 +69,29 @@
>
     {};
 
- template<typename Tag> struct new_put_tag{};
+ struct kwd_deduce{};
+
+ template<typename T>
+ typename T::result_of_modulo::deduce::type
+ operator%(
+ T const& t,
+ kwd_deduce const& kwd
+ )
+ {
+ return t.modulo_deduce();
+ }
+
+ template<typename Option1,typename Option2>
+ struct deduce : boost::mpl::eval_if<
+ boost::is_same<Option1, boost::use_default>,
+ boost::mpl::identity<Option2>,
+ boost::mpl::identity<Option1>
+ >{};
 
 }// put_aux
+namespace{
+ const put_aux::kwd_deduce _deduce = put_aux::kwd_deduce();
+}
 }// v2
 }// assign
 }// boost

Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/def.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/def.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/def.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -13,7 +13,7 @@
 namespace boost{
 namespace assign{
 namespace v2{
-namespace put_tag{
+namespace modifier_tag{
         // add as necessary
 }
 namespace put_aux{
@@ -25,7 +25,7 @@
             // template<typename V,typename T>
         // void impl(V& v,T& t)const;
 
- // WARNING: some modifiers such as modifier<put_tag::array> have an
+ // Warning: modifiers such as modifier<modifier_tag::at_next> have an
         // internal state that affects impl()'s working.
         
     };

Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/incr_lookup.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/incr_lookup.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/incr_lookup.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -9,29 +9,97 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_MODIFIER_INCR_LOOKUP_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_MODIFIER_INCR_LOOKUP_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/accumulators/framework/accumulator_base.hpp>
 #include <boost/assign/v2/put/modifier/def.hpp>
 #include <boost/assign/v2/detail/type_traits/value.hpp>
+#include <boost/assign/v2/detail/functor/identity.hpp>
+#include <boost/assign/v2/put/generic/new_fun.hpp>
+#include <boost/assign/v2/put/generic/new_modifier.hpp>
+#include <boost/assign/v2/put/generic/result_of_modulo.hpp>
+
+// Warning : Not yet supported.
+// TODO fix compile errors using put adaptor.
 
 namespace boost{
 namespace assign{
 namespace v2{
 
 // lookup_key
-namespace put_tag{ struct incr_lookup{}; }
+namespace modifier_tag{ struct incr_lookup{}; }
 namespace put_aux{
 
         template<>
- struct modifier<v2::put_tag::incr_lookup>{
+ struct modifier<v2::modifier_tag::incr_lookup>
+ {
 
- modifier(){};
+ modifier():n( 0 ){}
+ modifier(std::size_t m):n( m ){};
     
             template<typename V,typename T>
- void impl(V& v,T& t)const{
- ++ v[ t ];
+ void impl(V& v, T& t)const{
+ v[ t ] += this->n;
         }
+
+ private:
+ std::size_t n;
+ };
+
+ struct modulo_incr_lookup{
+
+ modulo_incr_lookup() : n( 1 ){}
+ modulo_incr_lookup(std::size_t m) : n( m ){}
+
+ modulo_incr_lookup
+ operator=(std::size_t m)const{
+ typedef modulo_incr_lookup result_;
+ return result_( m );
+ }
+
+ std::size_t n;
     };
 
-}// assign_aux
+}// put_aux
+namespace result_of_modulo{
+
+ template<typename T>
+ struct incr_lookup
+ {
+ typedef typename boost::mpl::apply2<
+ result_of_modulo::new_fun_modifier<T>,
+ functor_aux::identity,
+ v2::modifier_tag::incr_lookup
+ >::type type;
+
+ typedef v2::modifier_tag::incr_lookup new_tag_;
+ typedef put_aux::modifier<new_tag_> modifier_;
+
+ static type call(const T& t, put_aux::modulo_incr_lookup const& kwd)
+ {
+ return type( t.unwrap(), _identity, kwd.n );
+ }
+
+ };
+
+}// result_of_modulo
+namespace put_aux{
+
+ template<typename T>
+ typename result_of_modulo::incr_lookup<T>::type
+ operator%(
+ T const& t,
+ put_aux::modulo_incr_lookup const& kwd
+ )
+ {
+ typedef result_of_modulo::incr_lookup<T> caller_;
+ return caller_::call( t, kwd );
+ }
+
+}// put_aux
+namespace{
+ put_aux::modulo_incr_lookup const _incr_lookup
+ = put_aux::modulo_incr_lookup();
+}
 }// v2
 }// assign
 }// boost

Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/insert.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/insert.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/insert.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -9,28 +9,8 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_MODIFIER_INSERT_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_MODIFIER_INSERT_ER_2010_HPP
-#include <boost/assign/v2/put/modifier/def.hpp>
+#include <boost/assign/v2/put/modifier/xxx.hpp>
 
-namespace boost{
-namespace assign{
-namespace v2{
-namespace put_tag{ struct insert{}; }
-namespace put_aux{
-
- template<>
- struct modifier<v2::put_tag::insert>
- {
-
- modifier(){}
-
- template<typename V,typename T>
- void impl(V& v,T& t)const{ v.insert( t ); }
-
- };
-
-}// assign_aux
-}// v2
-}// assign
-}// boost
+BOOST_ASSIGN_V2_PUT_MODIFIER_XXX(insert)
 
 #endif
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/keyword.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/keyword.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/keyword.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,42 +7,5 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_PUT_MODIFIER_KEYWORD_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_MODIFIER_KEYWORD_ER_2010_HPP
 
-namespace boost{
-namespace assign{
-namespace v2{
-namespace put_aux{
-
- template<typename Tag> struct put_tag{};
-
- struct keyword{
-
- template<typename Tag>
- put_tag<Tag> operator=( Tag const& dummy)const
- {
- return put_tag<Tag>();
- }
-
- };
-
- template<typename T,typename NewTag>
- typename T::result_of_modulo::template put_tag<NewTag>::type
- operator%(
- T const& t,
- put_aux::put_tag<NewTag> const& h
- )
- {
- return t.template modulo_put_tag<NewTag>();
- }
-
-}// put_aux
-namespace{
- put_aux::keyword const _put_tag = put_aux::keyword();
-}
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO delete file
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/modifier.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/modifier.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/modifier.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -11,13 +11,12 @@
 #define BOOST_ASSIGN_V2_PUT_MODIFIER_MODIFIER_ER_2010_HPP
 
 #include <boost/assign/v2/put/modifier/at_next.hpp>
+#include <boost/assign/v2/put/modifier/deduce.hpp>
 #include <boost/assign/v2/put/modifier/incr_lookup.hpp>
 #include <boost/assign/v2/put/modifier/insert.hpp>
 #include <boost/assign/v2/put/modifier/push.hpp>
 #include <boost/assign/v2/put/modifier/push_back.hpp>
-
-#include <boost/assign/v2/put/modifier/deduce.hpp>
-#include <boost/assign/v2/put/modifier/keyword.hpp>
+#include <boost/assign/v2/put/modifier/push_front.hpp>
 #include <boost/assign/v2/put/modifier/repeat.hpp>
 
 #endif

Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/push.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/push.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/push.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -9,28 +9,8 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_MODIFIER_PUSH_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_MODIFIER_PUSH_ER_2010_HPP
-#include <boost/assign/v2/put/modifier/def.hpp>
+#include <boost/assign/v2/put/modifier/xxx.hpp>
 
-namespace boost{
-namespace assign{
-namespace v2{
-namespace put_tag{ struct push{}; }
-namespace put_aux{
-
- template<>
- struct modifier<v2::put_tag::push>{
-
- modifier(){}
-
- template<typename V,typename T>
- void impl(V& v,T& t)const{ v.push( t ); }
-
- };
-
-}// put_aux
-}// v2
-}// assign
-}// boost
+BOOST_ASSIGN_V2_PUT_MODIFIER_XXX(push)
 
 #endif
-

Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/push_back.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/push_back.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/push_back.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -9,31 +9,8 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_MODIFIER_PUSH_BACK_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_MODIFIER_PUSH_BACK_ER_2010_HPP
-#include <boost/utility/enable_if.hpp>
-#include <boost/assign/v2/put/modifier/def.hpp>
+#include <boost/assign/v2/put/modifier/xxx.hpp>
 
-namespace boost{
-namespace assign{
-namespace v2{
-namespace put_tag{ struct push_back{}; }
-namespace put_aux{
+BOOST_ASSIGN_V2_PUT_MODIFIER_XXX(push_back)
 
- template<>
- struct modifier<v2::put_tag::push_back>{
-
- modifier(){}
-
- template<typename V,typename T>
- void impl(V& v,T& t)const{ v.push_back( t ); }
-
- template<typename V,typename T>
- void impl(V& v,T* t)const{ v.push_back( t ); }
-
- };
-
-}// put_aux
-}// v2
-}// assign
-}// boost
-
-#endif
\ No newline at end of file
+#endif

Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/repeat.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/repeat.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/repeat.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -9,38 +9,124 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_MODIFIER_REPEAT_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_MODIFIER_REPEAT_ER_2010_HPP
+#include <boost/type_traits/is_base_of.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/accumulators/framework/accumulator_base.hpp>
 #include <boost/assign/v2/put/modifier/def.hpp>
+#include <boost/assign/v2/put/generic/base.hpp>
+#include <boost/assign/v2/put/generic/new_modifier.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
 
 namespace boost{
 namespace assign{
 namespace v2{
-
-// lookup_key
-namespace put_tag{ template<typename Tag> struct repeat{}; }
+namespace modifier_tag{
+ template<typename Tag> struct repeat{};
+}// modifier_tag
 namespace put_aux{
 
         template<typename Tag>
- struct modifier<v2::put_tag::repeat<Tag> >{
+ class modifier<v2::modifier_tag::repeat<Tag> > : v2::ref::wrapper<
+ v2::ref::assign_tag::copy,
+ std::size_t const
+ >
+ {
+ typedef modifier<Tag> inner_;
+ typedef v2::ref::wrapper<
+ v2::ref::assign_tag::copy,
+ std::size_t const
+ > super_t;
+
+ public:
 
         typedef std::size_t size_type;
 
- modifier( ){}
- explicit modifier( size_type const& n_ ):n( n_ ){};
+ modifier(){}
+ explicit modifier( size_type const& n ):super_t( n ){};
             
             template<typename V,typename T>
- void impl(V& v,T& t)const{
- size_type m = n;
+ void impl(V& v, T& t)const{
+ size_type m = static_cast<super_t const&>(*this).unwrap();
                 while(m--) this->inner.impl( v, t );
         }
         
         private:
- size_type n;
- modifier<Tag> inner;
+ inner_ inner;
+ };
+
+ class modulo_repeat : v2::ref::wrapper<
+ v2::ref::assign_tag::copy,
+ std::size_t const
+ >
+ {
+ typedef v2::ref::wrapper<
+ v2::ref::assign_tag::copy,
+ std::size_t const
+ > super_t;
+
+ public:
+
+ typedef std::size_t size_type;
+
+ modulo_repeat(){}
+ modulo_repeat( size_type const& n) : super_t( n ){}
+
+ modulo_repeat operator=( size_type const& n)const
+ {
+ modulo_repeat result( n );
+ return result;
+ }
+
+ size_type const& unwrap()const
+ {
+ return static_cast<super_t const&>(*this).unwrap();
+ }
+
+ };
+
+}// put_aux
+namespace result_of_modulo{
+
+ template<typename T>
+ struct repeat
+ {
+ typedef typename T::modifier_tag old_tag_;
+ typedef v2::modifier_tag::repeat<old_tag_> new_tag_;
+ typedef put_aux::modifier<new_tag_> modifier_;
+ typedef typename boost::mpl::apply1<
+ result_of_modulo::new_modifier<T>,
+ new_tag_
+ >::type type;
+
+ static type call(const T& t, put_aux::modulo_repeat const& h)
+ {
+ modifier_ m( h.unwrap() );
+ return type( t.unwrap(), t.fun, m );
+ }
+
     };
 
- // Warning : does not check against nested repeat
+}// result_of_modulo
+namespace put_aux{
 
-}// assign_aux
+ template<typename T>
+ typename boost::lazy_enable_if<
+ boost::is_base_of<put_aux::put_base, T>,
+ result_of_modulo::repeat<T>
+ >::type
+ operator%(
+ T const& t,
+ put_aux::modulo_repeat const& h
+ )
+ {
+ typedef result_of_modulo::repeat<T> caller_;
+ return caller_::call( t, h );
+ }
+
+}// put_aux
+namespace{
+ put_aux::modulo_repeat const _repeat = put_aux::modulo_repeat();
+}
 }// v2
 }// assign
 }// boost

Modified: sandbox/statistics/support/boost/assign/v2/put/put.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/put.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/put.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -10,8 +10,10 @@
 #ifndef BOOST_ASSIGN_V2_PUT_PUT_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_PUT_ER_2010_HPP
 
+#include <boost/assign/v2/put/compose/compose.hpp>
+#include <boost/assign/v2/put/generic/generic.hpp>
 #include <boost/assign/v2/put/modifier/modifier.hpp>
-#include <boost/assign/v2/put/wrapper/wrapper.hpp>
 #include <boost/assign/v2/put/range/range.hpp>
+#include <boost/assign/v2/put/sub/sub.hpp>
 
 #endif

Modified: sandbox/statistics/support/boost/assign/v2/put/range/adaptor.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/range/adaptor.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/range/adaptor.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -47,7 +47,7 @@
 }// put_range_aux
 namespace adaptor
 {
- put_range_aux::adaptor2 const put_range
+ put_range_aux::adaptor2 const _put_range
             = put_range_aux::adaptor2();
 
 }// adaptor

Modified: sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -26,7 +26,7 @@
         To operator|(From& from, convert_aux::adaptor<To> const& dummy)
     {
             To to;
- return to | v2::adaptor::put_range( from );
+ return to | v2::adaptor::_put_range( from );
     }
 
 }// convert_aux
@@ -38,8 +38,8 @@
 }// adaptor
 
         template<typename To,typename From>
- To convert(From const& from){
- return from | adaptor::convert<To>();
+ To convert(From const& from){
+ return from | adaptor::convert<To>();
     }
 
 }// v2

Modified: sandbox/statistics/support/boost/assign/v2/put/range/modifier/put.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/range/modifier/put.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/range/modifier/put.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -10,7 +10,8 @@
 #ifndef BOOST_ASSIGN_V2_PUT_RANGE_MODIFIER_PUT_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_RANGE_MODIFIER_PUT_ER_2010_HPP
 #include <boost/range/algorithm/for_each.hpp>
-#include <boost/assign/v2/put/wrapper/make.hpp>
+//#include <boost/assign/v2/put/wrapper/make.hpp>
+#include <boost/assign/v2/put/sub/make.hpp>
 
 namespace boost{
 namespace assign{

Modified: sandbox/statistics/support/boost/assign/v2/put/range/range.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/range/range.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/range/range.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -19,7 +19,7 @@
            template<typename From,typename To>
            To& put_range(From const& from, To& to)
            {
- return to | adaptor::put_range( from );
+ return to | adaptor::_put_range( from );
            }
 
 }// v2

Modified: sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,258 +1,3 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_PUT_WRAPPER_CRTP_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_WRAPPER_CRTP_ER_2010_HPP
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repeat_from_to.hpp>
-#include <boost/preprocessor/arithmetic/add.hpp>
-#include <boost/mpl/always.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/type_traits/remove_cv.hpp>
-#include <boost/range/reference.hpp>
-#include <boost/assign/v2/detail/config/arity_bound.hpp>
-#include <boost/assign/v2/detail/type_traits/container/is_ptr_container.hpp>
-#include <boost/assign/v2/detail/functor/functor.hpp>
-#include <boost/assign/v2/detail/keyword/keyword.hpp>
-#include <boost/assign/v2/put/modifier/modifier.hpp>
 
-// --------------- //
-// Usage //
-// --------------- //
-// Calling
-// put( v )( a )()( c0, c11 );
-//
-// ----- csv syntax ------
-//
-// put( v )( a )( T() )( T(c0, c11) );
 
-namespace boost{
-namespace assign{
-namespace v2{
-namespace put_aux{
-
- // T = container_type_traits::value<V>::type
- template<typename V>
- struct crtp_traits
- {
-// typedef typename v2::container_type_traits::value<V>::type value_type;
-// typedef typename result_of::constructor<value_type>::type functor_type;
-// typedef typename put_aux::deduce_modifier<V>::type put_tag;
-
- // Experimental
- typedef typename v2::container_type_traits::value<V>::type value_type;
- typedef typename boost::mpl::eval_if<
- container_type_traits::is_ptr_container<V>,
- functor_aux::deduce_new_<V>,
- functor_aux::deduce_constructor<V>
- >::type functor_type;
- typedef typename put_aux::deduce_modifier<V>::type put_tag;
-
- };
-
- // Requirements:
- // d.unwrap() returns a reference to V&
- // D d(U v, F const& f); Constructs an object, d, of type D.
- // Usually f is passed to the crtp. U = V& or V const& depending on need.
- template<typename V,typename F, typename Tag, typename D, typename Traits>
- class crtp : public functor_aux::crtp_unary_and_up<
- crtp<V, F, Tag, D, Traits>,
- boost::mpl::always< D const& >
- >
- {
-
- public:
- typedef D const& result_type;
-
- protected:
-
- typedef functor_aux::crtp_unary_and_up<
- crtp,
- boost::mpl::always<result_type>
- > super_t;
-
- typedef put_aux::modifier<Tag> modifier_;
-
- D & derived(){ return static_cast<D&>(*this); }
- D const& derived()const{ return static_cast<D const&>(*this); }
-
- public:
-
- crtp(){}
- explicit crtp(F const& f1 ):f( f1 ) {}
-
- using super_t::operator();
- result_type operator()()const
- {
- return this->arg_deduct( this->f() );
- }
-
-#define BOOST_ASSIGN_V2_impl(z, N, data) \
- template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
- result_type \
- impl( BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _) )const \
- { \
- return this->arg_deduct( this->f(BOOST_PP_ENUM_PARAMS(N,_)) ); \
- } \
-/**/
-BOOST_PP_REPEAT_FROM_TO(
- 1,
- BOOST_ASSIGN_V2_ARITY_BOUND,
- BOOST_ASSIGN_V2_impl,
- ~
-)
-#undef BOOST_ASSIGN_V2_impl
-#define BOOST_ASSIGN_V2_invoke(z,i,data) ( BOOST_PP_CAT( _,i ) )
-#define BOOST_ASSIGN_V2_csv(z, N, data) \
- template<BOOST_PP_ENUM_PARAMS(N,typename T)> \
- result_type \
- csv( BOOST_PP_ENUM_BINARY_PARAMS(N, T, &_) )const \
- { \
- (*this) BOOST_PP_REPEAT(N, BOOST_ASSIGN_V2_invoke, ~ ); \
- return this->derived(); \
- } \
- template<BOOST_PP_ENUM_PARAMS(N,typename T)> \
- result_type \
- csv( BOOST_PP_ENUM_BINARY_PARAMS(N, T, const &_) )const \
- { \
- (*this) BOOST_PP_REPEAT(N, BOOST_ASSIGN_V2_invoke, ~ ); \
- return this->derived(); \
- } \
-/**/
-BOOST_PP_REPEAT_FROM_TO(
- 1,
- BOOST_ASSIGN_V2_CSV_ARITY_BOUND,
- BOOST_ASSIGN_V2_csv,
- ~
-)
-#undef BOOST_ASSIGN_V2_invoke
-#undef BOOST_ASSIGN_V2_csv
-
- F const& fun()const{ return this->f; }
-
- result_type copy_modifier(const modifier_& that)
- {
- this->modifier = that;
- return this->derived();
- }
-
- struct result_of_modulo{
-
- template<typename NewTag>
- struct put_tag : Traits::template new_tag<NewTag>{};
-
- template<typename NewF> struct fun
- : Traits::template new_fun<NewF>{};
-
- struct incr_lookup : Traits::template new_fun_tag<
- functor_aux::identity,
- v2::put_tag::incr_lookup
- >{};
-
- struct repeat
- {
- typedef v2::put_tag::repeat<Tag> new_tag_;
- typedef put_aux::modifier<new_tag_> modifier_;
- typedef typename Traits::template new_tag<new_tag_>::type type;
- };
-
- struct deduce
- {
- typedef functor_aux::deduce_constructor<V> caller_;
- typedef typename caller_::type cons_;
- typedef typename Traits::template new_fun<cons_>::type type;
- };
-
- };
-
- template<typename NewTag>
- typename result_of_modulo::template put_tag<NewTag>::type
- modulo_put_tag()const
- {
- typedef typename result_of_modulo::template put_tag<
- NewTag
- >::type result_;
- return result_( this->derived().unwrap(), this->fun() );
- }
-
- template<typename F1>
- typename result_of_modulo::template fun<F1>::type
- modulo_fun( const F1& f)const
- {
- typedef typename result_of_modulo::template fun<
- F1
- >::type result_;
- return result_( this->derived().unwrap(), f );
- }
-
- typename result_of_modulo::incr_lookup::type
- modulo_incr_lookup()const{
- return (*this)
- % ( _fun = _identity )
- % ( _put_tag = v2::put_tag::incr_lookup() );
- }
-
- template<typename N>
- typename result_of_modulo::repeat::type
- modulo_repeat(N const& n)const
- {
- typedef typename result_of_modulo::repeat traits_;
- typedef typename traits_::modifier_ modifier_;
- return (
- (*this) % ( _put_tag = v2::put_tag::repeat<Tag>() )
- ).copy_modifier( modifier_( n ) );
- }
-
- typename result_of_modulo::deduce::type
- modulo_deduce()const
- {
- typedef functor_aux::deduce_constructor<V> caller_;
- typedef typename caller_::type cons_;
- typedef typename result_of_modulo::deduce::type result_;
- return result_(
- this->derived().unwrap(),
- caller_::call()
- );
- }
-
- protected:
-
- // Experimental
- template<typename T>
- result_type arg_deduct(T* t)const
- {
- this->modifier.impl( this->derived().unwrap(), t );
- return this->derived();
- }
-
- template<typename T>
- result_type arg_deduct(T& t)const
- {
- this->modifier.impl( this->derived().unwrap(), t );
- return this->derived();
- }
-
- template<typename T>
- result_type arg_deduct(T const& t)const
- {
- this->modifier.impl( this->derived().unwrap(), t );
- return this->derived();
- }
- modifier_ modifier;
- F f;
- };
-
-}// put_aux
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO delete file
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/put/wrapper/make.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/wrapper/make.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/wrapper/make.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,124 +1,3 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_PUT_WRAPPER_MAKE_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_WRAPPER_MAKE_ER_2010_HPP
-#include <boost/assign/v2/ref/wrapper/copy.hpp>
-#include <boost/assign/v2/put/wrapper/crtp.hpp>
 
-// Usage:
-// put( v ) % ( _put_tag = Tag() );
-// put( v ) % ( _fun = F() );
-// put( v ) % ( _incr_lookup );
-// put( v ) % ( _repeat = n );
 
-namespace boost{
-namespace assign{
-namespace v2{
-namespace put_aux{
-
- template<typename V,typename F, typename Tag>
- class put_wrapper;
-
- template<typename V,typename F,typename Tag>
- struct put_wrapper_modifier_traits
- {
- template<typename Tag1>
- struct new_tag{
- typedef put_wrapper<V,F,Tag1> type;
- };
- template<typename F1>
- struct new_fun{
- typedef put_wrapper<V,F1,Tag> type;
- };
-
- template<typename F1,typename Tag1>
- struct new_fun_tag{
- typedef put_wrapper<V,F1,Tag1> type;
- };
- };
-
- template<typename V,typename F, typename Tag>
- class put_wrapper
- :
- protected ref::wrapper< // must be the first base.
- ref::assign_tag::copy,
- V
- >,
- public put_aux::crtp<
- V,
- F,
- Tag,
- put_wrapper<V,F,Tag>,
- put_wrapper_modifier_traits<V,F,Tag>
- >
- {
-
- typedef put_aux::crtp<
- V,
- F,
- Tag,
- put_wrapper<V,F,Tag>,
- put_wrapper_modifier_traits<V,F,Tag>
- > super2_t;
-
- public:
-
- typedef typename super2_t::result_type result_type;
-
- protected:
-
- typedef put_aux::modifier<Tag> modifier_;
- typedef ref::assign_tag::copy assign_tag_;
- typedef ref::wrapper<assign_tag_,V> super1_t;
-
- public:
-
- put_wrapper(){}
- explicit put_wrapper( V& v ) : super1_t( v ) {}
- explicit put_wrapper( V& v, F const& f1 )
- : super1_t( v ), super2_t( f1 ){
- // This constructor is required by crtp
- // when Tag or F is modified.
- }
-
- V& unwrap()const{
- return static_cast<super1_t const&>(*this).unwrap();
- }
-
-
- };
-
-}// put_aux
-namespace result_of{
-
- template<typename V>
- struct put
- {
- typedef put_aux::crtp_traits<V> traits_;
- typedef typename traits_::functor_type f_;
- typedef typename traits_::put_tag put_tag_;
- typedef put_aux::put_wrapper<V,f_,put_tag_> type;
- };
-
-}// result_of
-
- template<typename V>
- typename result_of::put<V>::type
- put( V& v )
- {
- typedef typename result_of::put<V>::type result_;
- return result_( v );
- }
-
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO delete file
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/put/wrapper/wrapper.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/wrapper/wrapper.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/put/wrapper/wrapper.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -10,7 +10,9 @@
 #ifndef BOOST_ASSIGN_V2_PUT_WRAPPER_WRAPPER_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_WRAPPER_WRAPPER_ER_2010_HPP
 
-#include <boost/assign/v2/put/wrapper/crtp.hpp>
-#include <boost/assign/v2/put/wrapper/make.hpp>
+// TODO delete file
+
+//#include <boost/assign/v2/put/wrapper/crtp.hpp>
+//#include <boost/assign/v2/put/wrapper/make.hpp>
 
 #endif
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/anon.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/anon.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/anon.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -10,7 +10,7 @@
 #ifndef BOOST_ASSIGN_V2_REF_ANON_ANON_ER_2010_HPP
 #define BOOST_ASSIGN_V2_REF_ANON_ANON_ER_2010_HPP
 
-#include <boost/assign/v2/ref/anon/functor/functor.hpp>
+#include <boost/assign/v2/ref/anon/unary/unary.hpp>
 #include <boost/assign/v2/ref/anon/csv/csv.hpp>
 
 #endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_copy.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_copy.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_copy.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -13,7 +13,7 @@
 #include <boost/assign/v2/ref/anon/csv/assign_xxx.hpp>
 
 #define xxx_Tag1 assign_tag::copy
-BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX(assign_copy)
+BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX( assign_copy )
 #undef xxx_Tag1
 
 #endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_rebind.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_rebind.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_rebind.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -13,7 +13,7 @@
 #include <boost/assign/v2/ref/anon/csv/assign_xxx.hpp>
 
 #define xxx_Tag1 assign_tag::rebind
-BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX(assign_rebind)
+BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX( assign_rebind )
 #undef xxx_Tag1
 
 #endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_xxx.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_xxx.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_xxx.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,22 +7,26 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_ASSIGN_XXX_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_ASSIGN_XXX_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/inc.hpp>
 #include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/assign/v2/detail/config/arity_bound.hpp>
+#include <boost/assign/v2/detail/config/limit_csv_arity.hpp>
 #include <boost/assign/v2/ref/anon/csv/nth_result_of.hpp>
+#include <boost/assign/v2/ref/anon/csv/make.hpp>
 #include <boost/assign/v2/ref/anon/csv/pp.hpp>
 
+
 // Usage:
 // #define xxx_Tag1 name
 // BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX( ns )
 // #undef xxx_Tag1
 
+#ifndef BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter
 #define BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter( z, n, data ) \
     BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl( T , n, 0, xxx_Tag1 ) \
     BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl( T const, n, 0, xxx_Tag1 ) \
 /**/
+#endif
+#ifndef BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX
 #define BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX( NS ) \
 namespace boost{ \
 namespace assign{ \
@@ -31,11 +35,21 @@
 namespace NS{ \
 namespace nth_result_of{ \
     template<std::size_t N,typename T> \
- struct csv_anon : ref::nth_result_of::csv_anon<N,xxx_Tag1,T>{};\
+ struct csv_anon : ref::nth_result_of::csv_anon<N, xxx_Tag1, T>{};\
 } \
+ template<typename T>\
+ typename ref::result_of::empty_csv_anon<xxx_Tag1, T>::type\
+ csv_anon( keyword_aux::nil )\
+ {\
+ typedef typename ref::result_of::empty_csv_anon<\
+ xxx_Tag1,\
+ T\
+ >::type result_;\
+ return result_();\
+ }\
 BOOST_PP_REPEAT_FROM_TO( \
         1, \
- BOOST_ASSIGN_V2_CSV_ARITY_BOUND, \
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY), \
     BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter, \
     ~ \
 ) \

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/csv.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/csv/csv.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/csv.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -20,4 +20,4 @@
 #undef BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter
 #undef BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX
 
-#endif
\ No newline at end of file
+#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/make.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/csv/make.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/make.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -9,9 +9,11 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_MAKE_ER_2010_HPP
 #define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_MAKE_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/inc.hpp>
 #include <boost/preprocessor/repeat_from_to.hpp>
 #include <boost/assign/v2/detail/keyword/nil.hpp>
-#include <boost/assign/v2/detail/config/arity_bound.hpp>
+#include <boost/assign/v2/detail/config/limit_csv_arity.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
 #include <boost/assign/v2/ref/anon/csv/nth_result_of.hpp>
 #include <boost/assign/v2/ref/anon/csv/pp.hpp>
  
@@ -39,19 +41,19 @@
         return result_();
     }
 
-#define BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter( z, n, data )\
+#define MACRO( z, n, data )\
  BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl(T , n, 1, Tag1 ) \
  BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl(T const, n, 1, Tag1 ) \
 /**/
 
 BOOST_PP_REPEAT_FROM_TO(
         1,
- BOOST_ASSIGN_V2_CSV_ARITY_BOUND,
- BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY),
+ MACRO,
     ~
 )
 
-#undef BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter
+#undef MACRO
 
 }// ref
 }// v2

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/nth_result_of.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/csv/nth_result_of.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/nth_result_of.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -10,7 +10,7 @@
 #ifndef BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_NTH_RESULT_OF_ER_2010_HPP
 #define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_NTH_RESULT_OF_ER_2010_HPP
 #include <boost/mpl/empty_base.hpp>
-#include <boost/assign/v2/ref/anon/detail/fast_alloc_fwd.hpp>
+#include <boost/assign/v2/ref/static_array/alloc/fast_alloc_fwd.hpp>
 
 namespace boost{
         struct use_default;
@@ -22,9 +22,9 @@
 }// anon_aux
 namespace nth_result_of{
 
- template<std::size_t N,typename Tag1,typename T>
+ template<std::size_t N, typename Tag1, typename T>
     struct csv_anon{
- typedef anon_aux::fast_alloc<N,Tag1,T> type;
+ typedef static_array_aux::fast_alloc<N, Tag1, T> type;
     };
 
 }// nth_result_of

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/pp.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/csv/pp.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/pp.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -14,13 +14,18 @@
 #include <boost/preprocessor/expr_if.hpp>
 #include <boost/preprocessor/comma_if.hpp>
 #include <boost/preprocessor/cat.hpp>
-#include <boost/assign/v2/detail/config/arity_bound.hpp>
-#include <boost/assign/v2/ref/anon/generic/make.hpp>
-#include <boost/assign/v2/ref/anon/detail/fast_alloc.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/detail/keyword/nil.hpp>
+#include <boost/assign/v2/ref/fusion/make.hpp>
+#include <boost/assign/v2/ref/static_array/alloc/fast_alloc.hpp>
 #include <boost/assign/v2/ref/anon/csv/nth_result_of.hpp>
  
-#define BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke(z,n,data) \
- ( BOOST_PP_CAT(_,n) ) \
+//#define BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke(z,n,data) \
+// ( BOOST_PP_CAT(_,n) ) \
+///**/
+
+#define BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke(z, n, data) \
+ result.get_wrapper( n ) = wrapper_( BOOST_PP_CAT(_,n) ); \
 /**/
 
 #define BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl(U, N, param, Tag1) \
@@ -33,12 +38,25 @@
>::type \
     csv_anon( BOOST_PP_ENUM_PARAMS(N, U& _) ) \
     { \
- return generic_anon< \
- Tag1, \
- anon_aux::csv_tag2_ \
- > \
- BOOST_PP_REPEAT( N, BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke, ~ ) ; \
+ typedef typename nth_result_of::csv_anon< \
+ N, \
+ BOOST_PP_EXPR_IF(param, Tag1) BOOST_PP_COMMA_IF(param) \
+ U \
+ >::type result_; typedef typename result_::wrapper_type wrapper_;\
+ result_ result;\
+ BOOST_PP_REPEAT( N, BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke, ~ )\
+ return result;\
     } \
 /**/
 
+// Old impelementation:
+// typedef anon_aux::csv_tag2_ tag2_; \
+// return ref::fusion< \
+// Tag1, \
+// tag2_, \
+// U \
+// >( v2::_nil ) \
+// BOOST_PP_REPEAT( N, BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke, ~ ) ; \
+
 #endif
+

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/detail/fast_alloc.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/detail/fast_alloc.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/detail/fast_alloc.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,6 +7,7 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
+/*
 #ifndef BOOST_ASSIGN_V2_REF_CONTAINER_STATIC_ARRAY_DETAIL_FAST_ALLOC_ER_2010_HPP
 #define BOOST_ASSIGN_V2_REF_CONTAINER_STATIC_ARRAY_DETAIL_FAST_ALLOC_ER_2010_HPP
 #include <boost/assign/v2/ref/wrapper/wrapper.hpp>
@@ -66,3 +67,4 @@
 }// boost
 
 #endif
+*/
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/detail/fast_alloc_fwd.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/detail/fast_alloc_fwd.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/detail/fast_alloc_fwd.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,6 +7,7 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
+/*
 #ifndef BOOST_ASSIGN_V2_REF_CONTAINER_STATIC_ARRAY_DETAIL_FAST_ALLOC_FWD_ER_2010_HPP
 #define BOOST_ASSIGN_V2_REF_CONTAINER_STATIC_ARRAY_DETAIL_FAST_ALLOC_FWD_ER_2010_HPP
  
@@ -27,3 +28,4 @@
 }// boost
 
 #endif
+*/
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/detail/interface.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/detail/interface.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/detail/interface.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,6 +7,7 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
+/*
 #ifndef BOOST_ASSIGN_V2_REF_CONTAINER_STATIC_ARRAY_DETAIL_INTERFACE_ER_2010_HPP
 #define BOOST_ASSIGN_V2_REF_CONTAINER_STATIC_ARRAY_DETAIL_INTERFACE_ER_2010_HPP
 #include <algorithm>
@@ -213,3 +214,4 @@
 }// boost
 
 #endif
+*/
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/detail/lazy_alloc.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/detail/lazy_alloc.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/detail/lazy_alloc.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,6 +7,7 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
+/*
 #ifndef BOOST_ASSIGN_V2_REF_CONTAINER_STATIC_ARRAY_DETAIL_LAZY_ALLOC_ER_2010_HPP
 #define BOOST_ASSIGN_V2_REF_CONTAINER_STATIC_ARRAY_DETAIL_LAZY_ALLOC_ER_2010_HPP
 #include <boost/shared_ptr.hpp>
@@ -43,7 +44,7 @@
 
         void alloc()const{
             this->ptr = smart_ptr_(new array_);
- fusion_list_aux::assign_array(
+ assign_array(
                     *this->ptr,
                 static_cast<const D&>(*this)
             );
@@ -81,3 +82,4 @@
 }// boost
 
 #endif
+*/
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/detail/lazy_alloc_fwd.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/detail/lazy_alloc_fwd.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/detail/lazy_alloc_fwd.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -7,6 +7,7 @@
 // Boost Software License, Version 1.0. (See accompanying file //
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
 //////////////////////////////////////////////////////////////////////////////
+/*
 #ifndef BOOST_ASSIGN_V2_REF_CONTAINER_STATIC_ARRAY_DETAIL_LAZY_ALLOC_FWD_ER_2010_HPP
 #define BOOST_ASSIGN_V2_REF_CONTAINER_STATIC_ARRAY_DETAIL_LAZY_ALLOC_FWD_ER_2010_HPP
  
@@ -27,3 +28,4 @@
 }// boost
 
 #endif
+*/
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_copy.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_copy.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_copy.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,18 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_ANON_FUNCTOR_ASSIGN_COPY_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_FUNCTOR_ASSIGN_COPY_ER_2010_HPP
-#include <boost/assign/v2/ref/wrapper/copy.hpp>
-#include <boost/assign/v2/ref/anon/functor/make.hpp>
-#include <boost/assign/v2/ref/anon/functor/assign_xxx.hpp>
-
-BOOST_ASSIGN_V2_REF_EXT_ARRAY_ASSIGN_XXX(assign_copy,assign_tag::copy)
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_rebind.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_rebind.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_rebind.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,18 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_ANON_FUNCTOR_ASSIGN_REBIND_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_FUNCTOR_ASSIGN_REBIND_ER_2010_HPP
-#include <boost/assign/v2/ref/anon/functor/make.hpp>
-#include <boost/assign/v2/ref/anon/functor/assign_xxx.hpp>
-#include <boost/assign/v2/ref/wrapper/rebind.hpp>
-
-BOOST_ASSIGN_V2_REF_EXT_ARRAY_ASSIGN_XXX(assign_rebind, assign_tag::rebind)
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_xxx.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_xxx.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/functor/assign_xxx.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,70 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-
-// Expand like this:
-// #include <boost/assign/v2/ref/anon/generic/make.hpp>
-// #include <boost/assign/v2/ref/wrapper/xxx.hpp> // defines Tag1
-// BOOST_ASSIGN_V2_REF_EXT_ARRAY_ASSIGN_XXX(NS,Tag1)
-//
-// Usage is the same as that in make.hpp but inside namespace NS, and without
-// the need to specify Tag1.
-
-#ifndef BOOST_ASSIGN_V2_REF_EXT_ARRAY_ASSIGN_XXX
-#define BOOST_ASSIGN_V2_REF_EXT_ARRAY_ASSIGN_XXX(NS,Tag1) \
- \
-namespace boost{ \
-namespace assign{ \
-namespace v2{ \
-namespace ref{ \
-namespace NS{ \
-namespace nth_result_of{ \
- template<std::size_t N,typename T> \
- struct anon : ref::nth_result_of::anon<N,Tag1,T>{}; \
-}\
-namespace result_of{ \
- \
- template<typename T> \
- struct anon_nil : ref::result_of::anon_nil< \
- Tag1, T \
- >{}; \
- \
- template<typename T> \
- struct anon : ref::result_of::anon< \
- Tag1, T \
- >{}; \
- \
-} \
- template<typename T> \
- typename NS::result_of::anon_nil<T>::type \
- anon( keyword_aux::nil ) \
- { \
- return ref::anon<Tag1,T>( v2::_nil ); \
- } \
- template<typename T> \
- typename NS::result_of::anon<T>::type \
- anon(T& t) \
- { \
- return ref::anon<Tag1>( t ); \
- } \
- template<typename T> \
- typename NS::result_of::anon<T const>::type \
- anon(T const& t) \
- { \
- return ref::anon<Tag1>( t ); \
- } \
-\
-} \
-} \
-} \
-} \
-} \
-/**/
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/functor/functor.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/functor/functor.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/functor/functor.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,18 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_ANON_FUNCTOR_FUNCTOR_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_FUNCTOR_FUNCTOR_ER_2010_HPP
-
-#include <boost/assign/v2/ref/anon/functor/make.hpp>
-#include <boost/assign/v2/ref/anon/functor/nth_result_of.hpp>
-#include <boost/assign/v2/ref/anon/functor/assign_copy.hpp>
-#include <boost/assign/v2/ref/anon/functor/assign_rebind.hpp>
-
-#endif
+s
\ No newline at end of file

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/functor/make.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/functor/make.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/functor/make.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,65 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_ANON_FUNCTOR_MAKE_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_FUNCTOR_MAKE_ER_2010_HPP
-#include <boost/assign/v2/ref/anon/generic/make.hpp>
-#include <boost/assign/v2/ref/anon/detail/lazy_alloc.hpp>
-#include <boost/assign/v2/ref/anon/functor/nth_result_of.hpp>
-
-// Usage
-// using namespace boost::assign::v2::ref;
-// anon<assign_tag::name>( a )( b )( c );
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace ref{
-namespace result_of{
 
- template<typename Tag1,typename T>
- struct anon_nil
- : nth_result_of::anon<0, Tag1, T>{};
-
- template<typename Tag1, typename T>
- struct anon
- : nth_result_of::anon<1, Tag1, T>{};
-
-}// result_of
-
- template<typename Tag1, typename T>
- typename result_of::anon_nil<Tag1, T>::type
- anon( keyword_aux::nil )
- {
- typedef anon_aux::ext_tag2_ tag2_;
- return generic_anon<Tag1,tag2_,T>( v2::_nil );
- }
-
- template<typename Tag1,typename T>
- typename result_of::anon<Tag1, T>::type
- anon(T& t)
- {
- typedef anon_aux::ext_tag2_ tag2_;
- return generic_anon<Tag1,tag2_>( t );
- }
-
- template<typename Tag1,typename T>
- typename result_of::anon<Tag1, T const>::type
- anon(T const & t)
- {
- typedef anon_aux::ext_tag2_ tag2_;
- return generic_anon<Tag1,tag2_>( t );
- }
-
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/functor/nth_result_of.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/functor/nth_result_of.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/functor/nth_result_of.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,36 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_ANON_FUNCTOR_NTH_RESULT_OF_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_FUNCTOR_NTH_RESULT_OF_ER_2010_HPP
-#include <boost/assign/v2/ref/anon/generic/nth_result_of.hpp>
-#include <boost/assign/v2/ref/anon/detail/lazy_alloc_fwd.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace ref{
-namespace anon_aux{
- typedef ref::alloc_tag::lazy_alloc ext_tag2_;
-}// anon_aux
-namespace nth_result_of{
-
- template<std::size_t N,typename Tag1,typename T>
- struct anon : ref::nth_result_of::generic_anon<
- N, Tag1, anon_aux::ext_tag2_, T
- >
- {};
-
-}// nth_result_of
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/cont.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/generic/cont.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/generic/cont.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,82 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_ANON_GENERIC_CONTAINER_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_ANON_GENERIC_CONTAINER_ER_2010_HPP
-#include <boost/mpl/inherit.hpp>
-#include <boost/mpl/always.hpp>
-#include <boost/mpl/apply.hpp>
-
-#include <boost/assign/v2/ref/wrapper/copy.hpp>
-#include <boost/assign/v2/ref/wrapper/deduce_assign_tag.hpp>
-#include <boost/assign/v2/ref/detail/fusion_list/container.hpp>
-#include <boost/assign/v2/ref/anon/generic/traits.hpp>
-
-namespace boost{
- struct use_default;
-namespace assign{
-namespace v2{
-namespace ref{
-namespace anon_aux{
-
- // N : size of the array
- // L : link
- // T : value type
- // Tag1 : assign tag
- // Tag2 : policy tag
- template<std::size_t N, typename L,typename Tag1, typename Tag2, typename T>
- class cont
- : public anon_aux::inherit<N,L,Tag1,Tag2,T>::super1_t,
- public anon_aux::inherit<N,L,Tag1,Tag2,T>::super2_t
- {
- typedef anon_aux::inherit<N,L,Tag1,Tag2,T> inherit_;
- typedef cont<N,L,Tag1,Tag2,T> this_;
-
- public:
- typedef typename inherit_::super1_t super1_t; // fusion_list
- typedef typename inherit_::super2_t super2_t; // interface
-
- protected:
- super1_t const& super1()const
- {
- return static_cast<super1_t const&>( *this );
- }
-
- public:
-
- typedef typename super1_t::size_type size_type;
-
- explicit cont(){}
- explicit cont(const L& link,T& head)
- : super1_t( link, head ){}
-
- // Needed by csv
- template<typename NewL,typename NewTag2>
- explicit cont(const cont<N,NewL,Tag1,NewTag2,T>& that)
- :super1_t( that ),super2_t(that){}
-
- typedef cont<N+1,this_,Tag1,Tag2,T> result_type;
-
- result_type
- operator()(T& t)const
- {
- this->super1()( t );
- return result_type( *this, t );
- }
-
- //using super1_t::operator[];
- };
-
-}// anon_aux
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/fwd.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/generic/fwd.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/generic/fwd.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,28 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_ANON_GENERIC_FWD_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_ANON_GENERIC_FWD_ER_2010_HPP
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace ref{
-namespace anon_aux{
-
- template<std::size_t N, typename L,typename Tag1, typename Tag2, typename T>
- class cont;
-
-}// anon_aux
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/generic.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/generic/generic.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/generic/generic.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,17 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_ANON_GENERIC_STATIC_LIST_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_ANON_GENERIC_STATIC_LIST_ER_2010_HPP
-
-#include <boost/assign/v2/ref/anon/generic/cont.hpp>
-#include <boost/assign/v2/ref/anon/generic/make.hpp>
-#include <boost/assign/v2/ref/anon/generic/nth_result_of.hpp>
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/make.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/generic/make.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/generic/make.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,58 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_ANON_GENERIC_MAKE_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_ANON_GENERIC_MAKE_ER_2010_HPP
-#include <boost/assign/v2/detail/keyword/nil.hpp>
-#include <boost/assign/v2/ref/anon/generic/nth_result_of.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace ref{
-namespace result_of{
-
- template<typename Tag1,typename Tag2,typename T>
- struct empty_generic_anon
- : nth_result_of::generic_anon<0, Tag1, Tag2, T>{};
-
- template<typename Tag1,typename Tag2,typename T>
- struct generic_anon : nth_result_of::generic_anon<1, Tag1, Tag2, T>{};
-
-}// result_of
-
- template<typename Tag1,typename Tag2,typename T>
- typename result_of::empty_generic_anon<Tag1, Tag2, T>::type
- generic_anon( keyword_aux::nil )
- {
- typedef typename result_of::empty_generic_anon<
- Tag1, Tag2, T>::type result_;
- return result_();
- }
-
- template<typename Tag1,typename Tag2,typename T>
- typename result_of::generic_anon<Tag1, Tag2, T>::type
- generic_anon(T& t)
- {
- return generic_anon<Tag1, Tag2, T>( v2::_nil )( t );
- }
-
- template<typename Tag1,typename Tag2,typename T>
- typename result_of::generic_anon<Tag1, Tag2, T const>::type
- generic_anon(T const& t)
- {
- return generic_anon<Tag1, Tag2, T const>( v2::_nil )( t );
- }
-
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/nth_result_of.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/generic/nth_result_of.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/generic/nth_result_of.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,55 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_ANON_GENERIC_NTH_RESULT_OF_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_ANON_GENERIC_NTH_RESULT_OF_ER_2010_HPP
-#include <boost/mpl/void.hpp>
-#include <boost/assign/v2/ref/anon/generic/cont.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace ref{
-namespace anon_aux{
-
- template<typename Tag1, typename Tag2,typename T>
- struct empty_generic_anon
- {
- typedef boost::mpl::void_ void_;
- typedef anon_aux::cont<0,void_,Tag1,Tag2,T> type;
- };
-
- template<std::size_t n,typename Tag1,typename Tag2,typename T>
- struct recursive_result
- {
- typedef typename recursive_result<
- n-1, Tag1, Tag2, T
- >::type previous_;
- typedef typename previous_::result_type type;
- };
-
- template<typename Tag1,typename Tag2, typename T>
- struct recursive_result<0, Tag1, Tag2, T>
- : empty_generic_anon<Tag1, Tag2, T>{};
-
-}// fusion_list_aux
-namespace nth_result_of{
-
- template<std::size_t N,typename Tag1,typename Tag2,typename T>
- struct generic_anon
- : anon_aux::recursive_result<N,Tag1,Tag2,T>
- {};
-
-}// nth_result_of
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/policy.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/generic/policy.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/generic/policy.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,52 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_ANON_GENERIC_POLICY_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_ANON_GENERIC_POLICY_ER_2010_HPP
-#include <boost/mpl/empty_base.hpp>
-#include <boost/mpl/always.hpp>
-#include <boost/assign/v2/ref/anon/generic/fwd.hpp>
-#include <boost/assign/v2/ref/anon/detail/lazy_alloc_fwd.hpp>
-
-namespace boost{
- struct use_default;
-namespace assign{
-namespace v2{
-namespace ref{
-namespace anon_aux{
-
- template<typename Tag2>
- struct policy{};
-
- template<>
- struct policy<boost::use_default> : boost::mpl::always<
- boost::mpl::empty_base
- >{};
-
- template<>
- struct policy<alloc_tag::lazy_alloc>
- {
- template<typename N,typename L,typename Tag1,typename T>
- struct apply
- {
- typedef alloc_tag::lazy_alloc tag2_;
- typedef anon_aux::cont<N::value, L, Tag1, tag2_, T> d_;
- typedef anon_aux::lazy_alloc<N::value,Tag1,T, d_> type;
- };
-
- };
-
-
-}// anon_aux
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/traits.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/anon/generic/traits.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/generic/traits.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,59 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_ANON_GENERIC_TRAITS_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_ANON_GENERIC_TRAITS_ER_2010_HPP
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/apply.hpp>
-#include <boost/assign/v2/ref/detail/fusion_list/fwd.hpp>
-#include <boost/assign/v2/ref/detail/fusion_list/nth_result_of.hpp>
-#include <boost/assign/v2/ref/anon/generic/policy.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace ref{
-namespace anon_aux{
-
- template<std::size_t N,typename L,typename Tag1,typename T>
- struct fusion_list
- {
- typedef typename L::super1_t link_;
- typedef fusion_list_aux::container<N, link_, Tag1, T> type;
- };
-
- template<typename L,typename T,typename Tag1>
- struct fusion_list<0, L, Tag1, T>
- {
- typedef typename fusion_list_aux::empty_fusion_list<Tag1, T>::type type;
- };
-
- template<std::size_t N, typename L,typename Tag1, typename Tag2, typename T>
- struct static_array : boost::mpl::apply4<
- anon_aux::policy<Tag2>,
- boost::mpl::int_<N>, L, Tag1, T
- >{};
-
- template<std::size_t N, typename L,typename Tag1, typename Tag2,typename T>
- struct inherit
- {
- typedef typename
- anon_aux::fusion_list<N, L, Tag1, T>::type super1_t;
- typedef typename anon_aux::static_array<
- N, L, Tag1, Tag2, T
- >::type super2_t;
- };
-
-}// anon_aux
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/assign_array.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/assign_array.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/assign_array.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,76 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_ASSIGN_ARRAY_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_ASSIGN_ARRAY_ER_2010_HPP
-#include <boost/static_assert.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/equal_to.hpp>
-#include <boost/assign/v2/ref/detail/fusion_list/fwd.hpp>
-
-namespace boost{
- struct use_default;
-namespace assign{
-namespace v2{
-namespace ref{
-namespace fusion_list_aux{
-
- // ---- assign_array ---- //
-
- template<
- std::size_t K,typename A,
- std::size_t N, typename L, typename Tag, typename T
- >
- void assign_array(
- boost::mpl::true_ /*exit*/,
- A& a,
- const fusion_list_aux::container<N, L, Tag, T>& f
- )
- {
- /*exit*/
- }
-
- template<
- std::size_t K,typename A,
- std::size_t N, typename L, typename Tag, typename T
- >
- void assign_array(
- boost::mpl::false_ /*exit*/,
- A& a,
- const fusion_list_aux::container<N, L, Tag, T>& f
- )
- {
- typedef boost::mpl::int_<K-1> index_;
- a[ K - 1 ].rebind( f.static_lookup( index_() ) ) ;
- typedef index_ next_size_;
- typedef boost::mpl::int_<0> zero_;
- typedef typename boost::mpl::equal_to<next_size_,zero_>::type exit_;
- assign_array<K-1>( exit_(), a, f );
- }
-
- // A must be a static array of reference wrappers
- template<typename A,std::size_t N, typename L, typename Tag, typename T>
- void assign_array(A& a, fusion_list_aux::container<N, L, Tag, T> const & f)
- {
- // don't replace by size_::value <= N (causes warning)
- BOOST_STATIC_ASSERT(A::static_size <= N );
- typedef boost::mpl::int_<0> zero_;
- typedef boost::mpl::int_<A::static_size> size_;
- typedef typename boost::mpl::equal_to<size_,zero_>::type exit_;
- fusion_list_aux::assign_array<size_::value>( exit_(), a, f );
- }
-
-}// fusion_list_aux
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file

Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/container.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/container.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/container.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,143 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_CONTAINER_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_CONTAINER_ER_2010_HPP
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/equal_to.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/void.hpp>
-#include <boost/mpl/minus.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/config.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/assign/v2/ref/wrapper/framework.hpp>
-#include <boost/assign/v2/ref/wrapper/copy.hpp>
-
-namespace boost{
- struct use_default;
-namespace assign{
-namespace v2{
-namespace ref{
-namespace fusion_list_aux{
-
- template<std::size_t N, typename L, typename Tag,typename T>
- class container
- {
-
- typedef boost::mpl::int_<0> int0_;
- typedef boost::mpl::int_<1> int1_;
- typedef boost::mpl::int_<N> size_;
- typedef typename boost::mpl::minus<size_,int1_>::type index_;
- typedef Tag assign_tag_;
- typedef typename ref::wrapper<assign_tag_,T> wrapper_;
-
- typedef assign_tag::copy link_tag_;
-
- public:
-
- typedef std::size_t size_type;
- BOOST_STATIC_CONSTANT(bool, static_sisze = N);
- typedef typename boost::mpl::equal_to<size_,int0_>::type is_empty_;
- typedef typename boost::mpl::if_<
- is_empty_, L, ref::wrapper<link_tag_, const L>
- >::type link_;
- typedef typename boost::mpl::if_<is_empty_, L, wrapper_>::type head_;
-
- explicit container(){}
- explicit container(const L& l,T& h)
- :link( l ),
- head( h )
- {}
-
- // ------ operator() ----- //
- // adds an element //
- // ----------------------- //
-
- template<typename T1>
- struct result{
- typedef container this_;
- typedef container<N+1,this_,Tag,T1> type;
- };
-
- template<typename T1>
- typename result<T1>::type
- operator()(T1& t)const{
- typedef typename result<T1>::type result_;
- return result_( *this, t );
- }
-
- template<typename T1>
- typename result<T1 const>::type
- operator()(T1 const& t)const{
- typedef typename result<T1 const>::type result_;
- return result_( *this, t );
- }
-
- // ------ operator[] ----- //
- // retrieves an element //
- // ----------------------- //
-
- template<int I>
- struct is_head : boost::mpl::bool_< I + 1 == N >{};
-
- template<int I>
- struct link_retrieve : L::template retrieve<I>{};
-
- template<int I>
- struct retrieve : boost::mpl::eval_if<
- is_head<I>,
- boost::mpl::identity<T&>,
- link_retrieve<I>
- >{};
-
- // A template is needed even as the argument is known, to prevent
- // compiler errors for N = 0.
- template<int I>
- typename boost::lazy_enable_if<
- is_head<I>,
- retrieve<I>
- >::type
- static_lookup(boost::mpl::int_<I> same_index)const
- {
- return this->head;
- }
-
- template<int I>
- typename boost::lazy_disable_if<
- is_head<I>,
- retrieve<I>
- >::type
- static_lookup(boost::mpl::int_<I> smaller_index)const
- {
- return this->link.unwrap().static_lookup( smaller_index );
- }
-
- link_ pop()const
- {
- // Warning : probably inefficient
- return link;
- }
- T& back()const{ return this->head; }
-
- protected:
- mutable link_ link; // This is a wrappe
- mutable head_ head;
-
- };
-
-}// fusion_list_aux
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file

Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fusion_list.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fusion_list.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fusion_list.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,18 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_FUSION_LIST_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_FUSION_LIST_ER_2010_HPP
-
-#include <boost/assign/v2/ref/detail/fusion_list/assign_array.hpp>
-#include <boost/assign/v2/ref/detail/fusion_list/container.hpp>
-#include <boost/assign/v2/ref/detail/fusion_list/make.hpp>
-#include <boost/assign/v2/ref/detail/fusion_list/nth_result_of.hpp>
-
-#endif
+// TODO remove file

Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fwd.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fwd.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fwd.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,31 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_FWD_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_FWD_ER_2010_HPP
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace ref{
-namespace fusion_list_aux{
-
- template<std::size_t N, typename L, typename Tag,typename T>
- class container;
-
- template<typename A, std::size_t N, typename L, typename Tag, typename T>
- void assign_array(A& a, fusion_list_aux::container<N, L, Tag, T> const & f);
-
-}// fusion_list_aux
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file

Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/make.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/make.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/make.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,71 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_MAKE_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_MAKE_ER_2010_HPP
-#include <boost/mpl/void.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/assign/v2/detail/keyword/nil.hpp>
-#include <boost/assign/v2/ref/detail/fusion_list/nth_result_of.hpp>
-
-namespace boost{
- struct use_default;
-namespace assign{
-namespace v2{
-namespace ref{
-namespace result_of{
-
- template<typename Tag,typename Tneg1>
- struct empty_fusion_list : boost::mpl::apply0<
- nth_result_of::fusion_list<Tag,Tneg1>
- >{};
-
- template<typename Tag,typename T0>
- struct fusion_list : boost::mpl::apply1<
- nth_result_of::fusion_list<Tag,T0>,
- T0
- >{
- // Tneg1 = T0 is needed for static_list and inconsequential otherwise.
- };
-
-}// result_of
-
- template<typename Tag,typename Tneg1>
- typename result_of::empty_fusion_list<Tag,Tneg1>::type
- fusion_list( keyword_aux::nil )
- {
- typedef typename result_of::empty_fusion_list<
- Tag,
- Tneg1
- >::type result_;
- return result_();
- }
-
- template<typename Tag,typename T>
- typename result_of::fusion_list<Tag,T>::type
- fusion_list(T& t)
- {
- return fusion_list<Tag,T>( v2::_nil )( t );
- }
-
- template<typename Tag,typename T>
- typename result_of::fusion_list<Tag,T const>::type
- fusion_list(T const& t)
- {
- return fusion_list<Tag,T const>( v2::_nil )( t );
- }
-
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file

Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/nth_result_of.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/nth_result_of.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/nth_result_of.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -1,81 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-// Boost.Assign v2 //
-// //
-// Copyright (C) 2003-2004 Thorsten Ottosen //
-// Copyright (C) 2010 Erwann Rogard //
-// Use, modification and distribution are subject to the //
-// Boost Software License, Version 1.0. (See accompanying file //
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_NTH_RESULT_OF_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONTAINER_FUSION_LIST_NTH_RESULT_OF_ER_2010_HPP
-#include <boost/mpl/aux_/na.hpp>
-#include <boost/mpl/vector.hpp>
-#include <boost/mpl/fold.hpp>
-#include <boost/mpl/placeholders.hpp>
-#include <boost/mpl/void.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/assign/v2/ref/wrapper/deduce_assign_tag.hpp>
-#include <boost/assign/v2/ref/detail/fusion_list/fwd.hpp>
-
-namespace boost{
- struct use_default;
-namespace assign{
-namespace v2{
-namespace ref{
-namespace fusion_list_aux{
-
- template<typename Tag,typename Tneg1>
- struct empty_fusion_list
- {
- typedef boost::mpl::void_ link_;
- typedef fusion_list_aux::container<0,link_,Tag,Tneg1> type;
- };
-
- template<typename Tag,typename Tneg1>
- struct nth_result
- {
-
- typedef typename
- fusion_list_aux::empty_fusion_list<Tag,Tneg1>::type state_;
-
- template<typename State,typename T>
- struct result : State::template result<T>{};
-
- template<typename Vec>
- struct apply : boost::mpl::fold<
- Vec,
- state_,
- result<boost::mpl::_1,boost::mpl::_2>
- >{};
-
- };
-
-}// fusion_list_aux
-namespace nth_result_of{
-
- template<typename Tag,typename Tneg1>
- struct fusion_list
- {
- template<
- typename T0 = boost::mpl::na,
- typename T1 = boost::mpl::na,
- typename T2 = boost::mpl::na,
- typename T3 = boost::mpl::na,
- typename T4 = boost::mpl::na
- >
- struct apply : boost::mpl::apply1<
- fusion_list_aux::nth_result<Tag,Tneg1>,
- boost::mpl::vector<T0,T1,T2,T3,T4>
- >{};
- };
-
-}// nth_result_of
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file

Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -18,6 +18,9 @@
 #include <boost/iterator/iterator_adaptor.hpp>
 #include <boost/assign/v2/ref/detail/unwrap/reference.hpp>
 
+// Note : In Boost.Assign.v2, this is deprecated but it could be used
+// elsewhere.
+
 // Calling
 // *unwrap_iterator( it );
 // is equivalent to
@@ -62,7 +65,8 @@
         iterator(I base):super_(base)
         {
             typedef typename boost::iterator_reference<I>::type ref_;
- typedef typename boost::is_convertible<ref_,R>::type is_convertible_;
+ typedef typename
+ boost::is_convertible<ref_,R>::type is_convertible_;
             BOOST_MPL_ASSERT(( is_convertible_ ));
         }
     };

Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -16,6 +16,10 @@
 #include <boost/range/iterator_range.hpp>
 #include <boost/assign/v2/ref/detail/unwrap/iterator.hpp>
 
+// Note : In Boost.Assign.v2, this is deprecated but it could be used
+// elsewhere.
+
+
 // See iterator.hpp
 
 namespace boost{

Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -19,6 +19,9 @@
 #include <boost/range/reference.hpp>
 #include <boost/assign/v2/ref/wrapper/framework.hpp>
 
+// Note : In Boost.Assign.v2, this is deprecated but it could be used
+// elsewhere.
+
 namespace boost{
 namespace assign{
 namespace v2{

Modified: sandbox/statistics/support/boost/assign/v2/ref/ref.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/ref.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/ref.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -11,6 +11,8 @@
 #define BOOST_ASSIGN_V2_REF_REF_ER_2010_HPP
 
 #include <boost/assign/v2/ref/anon/anon.hpp>
+#include <boost/assign/v2/ref/fusion/fusion.hpp>
+#include <boost/assign/v2/ref/fusion_matrix/fusion_matrix.hpp>
 #include <boost/assign/v2/ref/wrapper/wrapper.hpp>
 
 #endif

Modified: sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp (original)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp 2010-11-11 21:45:07 EST (Thu, 11 Nov 2010)
@@ -10,12 +10,16 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_REF_WRAPPER_CRTP_ER_MPG_2010_HPP
 #define BOOST_ASSIGN_V2_REF_WRAPPER_CRTP_ER_MPG_2010_HPP
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/type_traits/add_const.hpp>
 #include <boost/call_traits.hpp>
 #include <boost/operators.hpp>
 
 // This design is an outgrowth of assign_detail::assign_reference<> by TO. The
 // new feature is that the assignment operator and swap member function are
-// customizable and there are two options (for now), identified by MPG : the
+// customizable and there are two options, identified by MPG : the
 // reference is assigned a new value (copy), or a new address (rebind).
 
 namespace boost{
@@ -42,25 +46,19 @@
>
     {
 
+ typedef typename boost::remove_const<T>::type lvalue_;
+ typedef typename boost::add_const<T>::type rvalue_;
+
         public:
         // protected
 
- D& derived()
- {
- return static_cast<D&>( *this );
- }
-
- D const & derived()const
- {
- return static_cast<D const&>( *this );
- }
+ D& derived(){ return static_cast<D&>( *this ); }
+ D const & derived()const{ return static_cast<D const&>( *this ); }
 
         public:
 
- void operator=(T& r )
- {
- this->derived().assign( r );
- }
+ void operator=(lvalue_& r ){ this->derived().assign( r ); }
+ void operator=(rvalue_& r ){ this->derived().assign( r ); }
 
         void swap( wrapper_crtp& r )
         {
@@ -116,14 +114,28 @@
     {
             assigner(T& val):value( val ){}
         
+ typedef typename boost::remove_const<T>::type lvalue_;
+ typedef typename boost::add_const<T>::type rvalue_;
+
         typedef void result_type;
         
- template<typename D>
- void operator()(wrapper_crtp<D,T>& w)const
+ template<typename D> void operator()(wrapper_crtp<D, lvalue_>& w)const
         {
- w = this->value;
+ this->impl<D, lvalue_>( w );
                 }
+
+ template<typename D> void operator()(wrapper_crtp<D, rvalue_>& w)const
+ {
+ this->impl<D, rvalue_>( w );
+ }
+
         private:
+ template<typename D, typename U>
+ void impl(wrapper_crtp<D, U>& w)const
+ {
+ w = this->value;
+ }
+
         assigner();
         mutable T& value;
     };


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