$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
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;
     };