$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r69637 - in sandbox/assign_v2: boost/assign/v2 boost/assign/v2/detail boost/assign/v2/detail/functor boost/assign/v2/detail/pp boost/assign/v2/put boost/assign/v2/put/container boost/assign/v2/put/container/functor boost/assign/v2/put/deduce boost/assign/v2/put/deque boost/assign/v2/put/ext boost/assign/v2/put/frame boost/assign/v2/put/modulo boost/assign/v2/put/modulo/ext boost/assign/v2/put/modulo/std boost/assign/v2/put/pipe boost/assign/v2/put/pipe/csv boost/assign/v2/put/pipe/functor boost/assign/v2/put/std boost/assign/v2/ref/list_tuple boost/assign/v2/ref/list_tuple/cpp03 boost/assign/v2/ref/list_tuple/cpp0x boost/assign/v2/ref/tuple boost/assign/v2/ref/wrapper libs/assign/v2/src libs/assign/v2/test/put libs/assign/v2/test/put/container libs/assign/v2/test/put/deque libs/assign/v2/test/put/modulo libs/assign/v2/test/put/pipe libs/assign/v2/test/put/pipe/functor libs/assign/v2/test/put/pipe/modulo
From: erwann.rogard_at_[hidden]
Date: 2011-03-07 19:56:30
Author: e_r
Date: 2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
New Revision: 69637
URL: http://svn.boost.org/trac/boost/changeset/69637
Log:
upd assign_v2
Text files modified: 
   sandbox/assign_v2/boost/assign/v2/detail/functor.hpp                   |     1                                         
   sandbox/assign_v2/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp |    25 ++---                                   
   sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp                   |     1                                         
   sandbox/assign_v2/boost/assign/v2/detail/pp/args.hpp                   |    28 ------                                  
   sandbox/assign_v2/boost/assign/v2/detail/pp/forward.hpp                |     8                                         
   sandbox/assign_v2/boost/assign/v2/detail/pp/params.hpp                 |    18 ----                                    
   sandbox/assign_v2/boost/assign/v2/detail/pp/seq.hpp                    |    14 ---                                     
   sandbox/assign_v2/boost/assign/v2/put.hpp                              |     3                                         
   sandbox/assign_v2/boost/assign/v2/put/container.hpp                    |     1                                         
   sandbox/assign_v2/boost/assign/v2/put/container/functor.hpp            |     3                                         
   sandbox/assign_v2/boost/assign/v2/put/container/functor/make.hpp       |    16 ---                                     
   sandbox/assign_v2/boost/assign/v2/put/container/functor/modulo.hpp     |     5                                         
   sandbox/assign_v2/boost/assign/v2/put/deduce.hpp                       |     4                                         
   sandbox/assign_v2/boost/assign/v2/put/deduce/modifier_tag.hpp          |     7 +                                       
   sandbox/assign_v2/boost/assign/v2/put/deque.hpp                        |     4                                         
   sandbox/assign_v2/boost/assign/v2/put/deque/cont.hpp                   |    30 +++---                                  
   sandbox/assign_v2/boost/assign/v2/put/deque/csv.hpp                    |    12 ++                                      
   sandbox/assign_v2/boost/assign/v2/put/deque/functor.hpp                |    25 ++---                                   
   sandbox/assign_v2/boost/assign/v2/put/deque/fwd.hpp                    |     4                                         
   sandbox/assign_v2/boost/assign/v2/put/deque/modulo.hpp                 |     3                                         
   sandbox/assign_v2/boost/assign/v2/put/ext.hpp                          |    18 ----                                    
   sandbox/assign_v2/boost/assign/v2/put/ext/iterate.hpp                  |   113 --------------------------              
   sandbox/assign_v2/boost/assign/v2/put/ext/lookup.hpp                   |    95 ----------------------                  
   sandbox/assign_v2/boost/assign/v2/put/ext/repeat.hpp                   |   122 -----------------------------           
   sandbox/assign_v2/boost/assign/v2/put/frame.hpp                        |     1                                         
   sandbox/assign_v2/boost/assign/v2/put/frame/crtp.hpp                   |    25 ++---                                   
   sandbox/assign_v2/boost/assign/v2/put/modulo.hpp                       |     3                                         
   sandbox/assign_v2/boost/assign/v2/put/modulo/ext.hpp                   |     3                                         
   sandbox/assign_v2/boost/assign/v2/put/modulo/ext/frame.hpp             |     3                                         
   sandbox/assign_v2/boost/assign/v2/put/modulo/ext/xxx.hpp               |    56 -------------                           
   sandbox/assign_v2/boost/assign/v2/put/modulo/fun.hpp                   |    54 ------------                            
   sandbox/assign_v2/boost/assign/v2/put/modulo/fun_modifier.hpp          |     3                                         
   sandbox/assign_v2/boost/assign/v2/put/modulo/modifier.hpp              |    19 ---                                     
   sandbox/assign_v2/boost/assign/v2/put/modulo/std.hpp                   |     3                                         
   sandbox/assign_v2/boost/assign/v2/put/modulo/std/frame.hpp             |     7 +                                       
   sandbox/assign_v2/boost/assign/v2/put/modulo/std/xxx.hpp               |     3                                         
   sandbox/assign_v2/boost/assign/v2/put/pipe/csv.hpp                     |     2                                         
   sandbox/assign_v2/boost/assign/v2/put/pipe/csv/forward.hpp             |    59 -------------                           
   sandbox/assign_v2/boost/assign/v2/put/pipe/csv/generator.hpp           |     6 +                                       
   sandbox/assign_v2/boost/assign/v2/put/pipe/csv/keyword.hpp             |    28 ------                                  
   sandbox/assign_v2/boost/assign/v2/put/pipe/csv/operator.hpp            |     7                                         
   sandbox/assign_v2/boost/assign/v2/put/pipe/functor.hpp                 |     2                                         
   sandbox/assign_v2/boost/assign/v2/put/pipe/functor/forward.hpp         |     4                                         
   sandbox/assign_v2/boost/assign/v2/put/pipe/functor/operator.hpp        |     7 +                                       
   sandbox/assign_v2/boost/assign/v2/put/pipe/functor/size_type.hpp       |     2                                         
   sandbox/assign_v2/boost/assign/v2/put/pipe/range.hpp                   |     3                                         
   sandbox/assign_v2/boost/assign/v2/put/std.hpp                          |    19 ----                                    
   sandbox/assign_v2/boost/assign/v2/put/std/insert.hpp                   |    17 ---                                     
   sandbox/assign_v2/boost/assign/v2/put/std/push.hpp                     |    17 ---                                     
   sandbox/assign_v2/boost/assign/v2/put/std/push_back.hpp                |    17 ---                                     
   sandbox/assign_v2/boost/assign/v2/put/std/push_front.hpp               |    17 ---                                     
   sandbox/assign_v2/boost/assign/v2/ref/list_tuple/cpp03/container.hpp   |    12 +-                                      
   sandbox/assign_v2/boost/assign/v2/ref/list_tuple/cpp0x/container.hpp   |    10 +-                                      
   sandbox/assign_v2/boost/assign/v2/ref/list_tuple/extraction.hpp        |    12 +-                                      
   sandbox/assign_v2/boost/assign/v2/ref/list_tuple/size_type.hpp         |     2                                         
   sandbox/assign_v2/boost/assign/v2/ref/tuple/cpp0x.hpp                  |   123 -----------------------------           
   sandbox/assign_v2/boost/assign/v2/ref/wrapper/copy.hpp                 |     2                                         
   sandbox/assign_v2/libs/assign/v2/src/main.cpp                          |    52 +++++++++++-                            
   sandbox/assign_v2/libs/assign/v2/test/put/container/functor.cpp        |   166 ++++++++++++++------------------------- 
   sandbox/assign_v2/libs/assign/v2/test/put/container/range.cpp          |    52 +++++------                             
   sandbox/assign_v2/libs/assign/v2/test/put/deduce.cpp                   |     2                                         
   sandbox/assign_v2/libs/assign/v2/test/put/deque.cpp                    |     2                                         
   sandbox/assign_v2/libs/assign/v2/test/put/deque/csv.cpp                |    21 +++-                                    
   sandbox/assign_v2/libs/assign/v2/test/put/deque/functor.cpp            |    25 ++++-                                   
   sandbox/assign_v2/libs/assign/v2/test/put/modulo.cpp                   |     5                                         
   sandbox/assign_v2/libs/assign/v2/test/put/modulo/ext.cpp               |    82 -------------------                     
   sandbox/assign_v2/libs/assign/v2/test/put/modulo/ext.h                 |    26 ------                                  
   sandbox/assign_v2/libs/assign/v2/test/put/modulo/fun.cpp               |    71 +++++++++++-----                        
   sandbox/assign_v2/libs/assign/v2/test/put/modulo/std.cpp               |    95 ----------------------                  
   sandbox/assign_v2/libs/assign/v2/test/put/modulo/std.h                 |    26 ------                                  
   sandbox/assign_v2/libs/assign/v2/test/put/pipe.cpp                     |     4                                         
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/container.cpp           |   137 --------------------------------        
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/container.h             |    26 ------                                  
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor.cpp             |     2                                         
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/forward.cpp     |    57 -------------                           
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/forward.h       |    29 ------                                  
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/rhs.cpp         |     2                                         
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo.cpp              |    36 -------                                 
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/forward.cpp      |    41 ++++-----                               
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/fun.cpp          |    40 ++++-----                               
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/std.cpp          |    55 -------------                           
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/std.h            |    28 ------                                  
   sandbox/assign_v2/libs/assign/v2/test/put/pipe/range.cpp               |    53 +++++------                             
   83 files changed, 460 insertions(+), 1783 deletions(-)
Modified: sandbox/assign_v2/boost/assign/v2/detail/functor.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/functor.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/functor.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -14,5 +14,6 @@
 #include <boost/assign/v2/detail/functor/constructor.hpp>
 #include <boost/assign/v2/detail/functor/identity.hpp>
 #include <boost/assign/v2/detail/functor/new.hpp>
+#include <boost/assign/v2/detail/functor/post_increment.hpp>
 
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -40,12 +40,8 @@
 // for k = m, ..., n-1.
 
 #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/preprocessor/repetition.hpp>
+#include <boost/preprocessor/seq.hpp>
 
 #include <boost/mpl/apply.hpp>
 #include <boost/mpl/assert.hpp>
@@ -62,9 +58,7 @@
 
 #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/pp/args.hpp>
-#include <boost/assign/v2/detail/pp/params.hpp>
-#include <boost/assign/v2/detail/pp/seq.hpp>
+#include <boost/assign/v2/detail/pp/parameter_list.hpp>
 
 namespace boost{
 namespace assign{
@@ -88,22 +82,21 @@
 #else
 
 #define BOOST_ASSIGN_V2_MACRO1(r, SeqU) \
-    template<BOOST_ASSIGN_V2_decl_params(SeqU)> \
+    template<BOOST_ASSIGN_V2_TPL_PARAMETER_LIST(SeqU)> \
     typename ::boost::mpl::apply1< \
         F, \
-        ::boost::mpl::vector<BOOST_ASSIGN_V2_params(SeqU)> \
+        ::boost::mpl::vector<BOOST_ASSIGN_V2_TPL_ARG_LIST(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) \
+    operator()( BOOST_ASSIGN_V2_PARAMETER_LIST(SeqU, _) )const{ \
+        return this->derived().template impl<BOOST_ASSIGN_V2_TPL_ARG_LIST(SeqU)>( \
+            BOOST_ASSIGN_V2_ARG_LIST(SeqU, _) \
         ); \
     } \
 /**/
 
-
 #define BOOST_ASSIGN_V2_MACRO2(z, n, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT(\
     BOOST_ASSIGN_V2_MACRO1, \
-    BOOST_PP_SEQ_FIRST_N(BOOST_PP_INC(n), BOOST_ASSIGN_V2_SEQ)\
+    BOOST_PP_SEQ_FIRST_N(BOOST_PP_INC(n), BOOST_ASSIGN_V2_SEQ_TPL_BINARY_ARG_LIST)\
 ) \
 /**/
 BOOST_PP_REPEAT(
Modified: sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -11,5 +11,6 @@
 #define BOOST_ASSIGN_V2_DETAIL_KEYWORD_ER_2010_HPP
 
 #include <boost/assign/v2/detail/keyword/nil.hpp>
+#include <boost/assign/v2/detail/keyword/ignore.hpp>
 
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/detail/pp/args.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/pp/args.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/pp/args.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,27 +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_args
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/comma_if.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/seq/for_each_i.hpp>
-#include <boost/preprocessor/seq/size.hpp>
-#define BOOST_ASSIGN_V2_decl_args_iter(r, data, i, U) \
-    BOOST_PP_COMMA_IF(i) \
-    U & \
-    BOOST_PP_CAT(data, i) \
-/**/
-#define BOOST_ASSIGN_V2_decl_args(SeqU) \
-    BOOST_PP_SEQ_FOR_EACH_I(BOOST_ASSIGN_V2_decl_args_iter, _, SeqU) \
-/**/
-#define BOOST_ASSIGN_V2_args(SeqU) \
-    BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(SeqU), _)
-/**/
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/detail/pp/forward.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/pp/forward.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/pp/forward.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -12,10 +12,10 @@
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 #include <utility>
-#define BOOST_ASSIGN_V2_forward_param(T, t) T&& t
-#define BOOST_ASSIGN_V2_forward_arg(T, t) std::forward<T>( t )
+#define BOOST_ASSIGN_V2_FORWARD_PARAM(T, t) T&& t
+#define BOOST_ASSIGN_V2_FORWARD_ARG(T, t) std::forward<T>( t )
 #else
-#define BOOST_ASSIGN_V2_forward_param(T, t) T& t
-#define BOOST_ASSIGN_V2_forward_arg(T, t) t
+#define BOOST_ASSIGN_V2_FORWARD_PARAM(T, t) T& t
+#define BOOST_ASSIGN_V2_FORWARD_ARG(T, t) t
 #endif
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/detail/pp/params.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/pp/params.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/pp/params.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,17 +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_params
-#include <boost/preprocessor/seq/size.hpp>
-#include <boost/preprocessor/seq/enum.hpp>
-#define BOOST_ASSIGN_V2_decl_params(SeqU) \
-    BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(SeqU), typename T)\
-/**/
-#define BOOST_ASSIGN_V2_params(SeqU) BOOST_PP_SEQ_ENUM(SeqU)
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/detail/pp/seq.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/pp/seq.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/pp/seq.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,13 +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_SEQ
-#include <boost/preprocessor/tuple/to_seq.hpp>
-#define BOOST_ASSIGN_V2_SEQ BOOST_PP_TUPLE_TO_SEQ(10,((T0 const)(T0),(T1 const)(T1),(T2 const)(T2),(T3 const)(T3),(T4 const)(T4),(T5 const)(T5),(T6 const)(T6),(T7 const)(T7),(T8 const)(T8),(T9 const)(T9)))
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -13,10 +13,9 @@
 #include <boost/assign/v2/put/container.hpp>
 #include <boost/assign/v2/put/deduce.hpp>
 #include <boost/assign/v2/put/deque.hpp>
-#include <boost/assign/v2/put/ext.hpp>
 #include <boost/assign/v2/put/frame.hpp>
+#include <boost/assign/v2/put/modifier.hpp>
 #include <boost/assign/v2/put/modulo.hpp>
 #include <boost/assign/v2/put/pipe.hpp>
-#include <boost/assign/v2/put/std.hpp>
 
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/put/container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/container.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/container.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -10,7 +10,6 @@
 #ifndef BOOST_ASSIGN_V2_PUT_CONTAINER_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_CONTAINER_ER_2010_HPP
 
-//#include <boost/assign/v2/put/container/csv.hpp>
 #include <boost/assign/v2/put/container/functor.hpp>
 #include <boost/assign/v2/put/container/range.hpp>
 
Modified: sandbox/assign_v2/boost/assign/v2/put/container/functor.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/container/functor.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/container/functor.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -11,7 +11,8 @@
 #define BOOST_ASSIGN_V2_PUT_CONTAINER_FUNCTOR_ER_2010_HPP
 
 #include <boost/assign/v2/put/container/functor/adapter.hpp>
-#include <boost/assign/v2/put/container/functor/modulo.hpp>
 #include <boost/assign/v2/put/container/functor/make.hpp>
+#include <boost/assign/v2/put/container/functor/replace.hpp>
+#include <boost/assign/v2/put/container/functor/result_of.hpp>
 
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/put/container/functor/make.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/container/functor/make.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/container/functor/make.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -9,25 +9,13 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_CONTAINER_FUNCTOR_MAKE_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_CONTAINER_FUNCTOR_MAKE_ER_2010_HPP
-#include <boost/assign/v2/put/deduce/fun.hpp>
-#include <boost/assign/v2/put/deduce/modifier_tag.hpp>
-#include <boost/assign/v2/put/deduce/dependee.hpp>
+#include <boost/assign/v2/put/deduce/modifier_dependee.hpp>
 #include <boost/assign/v2/put/container/functor/adapter.hpp>
+#include <boost/assign/v2/put/container/functor/result_of.hpp>
 
 namespace boost{
 namespace assign{
 namespace v2{
-namespace result_of{
-
-    template<typename C>
-    struct put
-    {
-        typedef typename put_aux::deduce_fun<C>::type f_;
-        typedef typename put_aux::deduce_modifier_tag<C>::type modifier_tag_;
-        typedef put_aux::adapter<C, f_, modifier_tag_> type;
-    };
-
-}// result_of
 
     template<typename C>
     typename result_of::put<C>::type
Modified: sandbox/assign_v2/boost/assign/v2/put/container/functor/modulo.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/container/functor/modulo.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/container/functor/modulo.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,3 +1,5 @@
+// TODO remove file
+/*
 //////////////////////////////////////////////////////////////////////////////
 //  Boost.Assign v2                                                         //
 //                                                                          //
@@ -38,5 +40,4 @@
 }// boost
 
 #endif
-
-
+*/
Modified: sandbox/assign_v2/boost/assign/v2/put/deduce.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/deduce.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/deduce.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -10,10 +10,10 @@
 #ifndef BOOST_ASSIGN_V2_PUT_DEDUCE_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_DEDUCE_ER_2010_HPP
 
-#include <boost/assign/v2/put/deduce/dependee.hpp>
-#include <boost/assign/v2/put/deduce/fwd.hpp>
 #include <boost/assign/v2/put/deduce/fun.hpp>
 #include <boost/assign/v2/put/deduce/modifier_tag.hpp>
 
+// derived of crtp<> have to include this file:
+// #include <boost/assign/v2/put/deduce/modifier_dependee.hpp>
 
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/put/deduce/modifier_tag.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/deduce/modifier_tag.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/deduce/modifier_tag.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -17,7 +17,10 @@
 #include <boost/assign/v2/detail/traits/container/has_push.hpp>
 #include <boost/assign/v2/detail/traits/container/is_associative.hpp>
 
-#include <boost/assign/v2/put/deduce/fwd.hpp>
+#include <boost/assign/v2/put/modifier/insert/tag.hpp>
+#include <boost/assign/v2/put/modifier/iterate/tag.hpp>
+#include <boost/assign/v2/put/modifier/push/tag.hpp>
+#include <boost/assign/v2/put/modifier/push_back/tag.hpp>
 
 namespace boost{
 namespace assign{
@@ -37,7 +40,7 @@
     template<>
     struct case_<switch_tag::deduce_put, 1> :
         switch_aux::helper<
-            v2::modifier_tag::iterate,
+            v2::modifier_tag::iterate<>,
             v2::container_traits::is_array
         >{};
 
Modified: sandbox/assign_v2/boost/assign/v2/put/deque.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/deque.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/deque.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -11,8 +11,8 @@
 #define BOOST_ASSIGN_V2_PUT_DEQUE_ER_2010_HPP
 
 #include <boost/assign/v2/put/deque/cont.hpp>
-#include <boost/assign/v2/put/deque/csv.hpp> // TODO remove
+#include <boost/assign/v2/put/deque/csv.hpp>
 #include <boost/assign/v2/put/deque/functor.hpp>
-#include <boost/assign/v2/put/deque/modulo.hpp>
+#include <boost/assign/v2/put/deque/replace.hpp>
 
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/put/deque/cont.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/deque/cont.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/deque/cont.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -17,27 +17,27 @@
 #include <boost/range/size_type.hpp>
 
 #include <boost/assign/v2/put/frame/crtp.hpp>
+#include <boost/assign/v2/put/frame/modifier.hpp>
 #include <boost/assign/v2/put/deque/fwd.hpp>
-#include <boost/assign/v2/put/deque/modulo.hpp>
 
 namespace boost{
 namespace assign{
 namespace v2{
-namespace put_deque_aux{
+namespace put_aux{
 
     template<typename T>
-    struct impl{ typedef std::deque<T> type; };
+    struct deque_impl{ typedef std::deque<T> type; };
 
     template<typename T, typename F, typename Tag>
-    class cont :
+    class deque_cont :
         public put_aux::crtp<
-            typename put_deque_aux::impl<T>::type, F, Tag,
-            cont<T, F, Tag>
+            typename put_aux::deque_impl<T>::type, F, Tag,
+            deque_cont<T, F, Tag>
         >
     {
-        typedef typename put_deque_aux::impl<T>::type impl_;
+        typedef typename deque_impl<T>::type impl_;
         typedef impl_ const cimpl_;
-        typedef put_aux::crtp<impl_, F, Tag, cont> put_crtp_;
+        typedef put_aux::crtp<impl_, F, Tag, deque_cont> put_crtp_;
 
         typedef put_aux::modifier<Tag> modifier_;
 
@@ -49,14 +49,14 @@
         typedef typename boost::range_iterator<cimpl_>::type const_iterator;
 
         // Construct
-        cont(){}
-        explicit cont(const F& f) : put_crtp_( f ){}
-        explicit cont(impl_ const& v, F const& f): put_crtp_( f ), impl( v )
+        deque_cont(){}
+        explicit deque_cont(const F& f) : put_crtp_( f ){}
+        explicit deque_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 )
+        explicit deque_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.
@@ -113,20 +113,20 @@
         void pop_back(){
             this->container().pop_back();
         }
-        void swap(cont& that){
+        void swap(deque_cont& that){
             this->container().swap( that.container() );
         }
 
         // Note : the modifiers such as push_back() are ommitted as they
         // accessible through the put interface.
 
-       impl_& container()const{ return this->impl; }
+       	impl_& container()const{ return this->impl; }
         protected:
         mutable impl_ impl;
 
     };
 
-}// put_deque_aux
+}// put_aux
 }// v2
 }// assign
 }// boost
Modified: sandbox/assign_v2/boost/assign/v2/put/deque/csv.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/deque/csv.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/deque/csv.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -10,6 +10,7 @@
 #ifndef BOOST_ASSIGN_V2_PUT_DEQUE_CSV_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_DEQUE_CSV_ER_2010_HPP
 #include <boost/type_traits/decay.hpp>
+#include <boost/type_traits/remove_cv.hpp>
 #include <boost/assign/v2/detail/keyword/nil.hpp>
 #include <boost/assign/v2/put/deque/cont.hpp>
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
@@ -27,6 +28,17 @@
 namespace boost{
 namespace assign{
 namespace v2{
+namespace result_of{
+
+	template<typename /*<<First argument>>*/T>
+    struct csv_deque : result_of::deque<
+        typename boost::decay<
+        	typename boost::remove_cv<T>::type
+        >::type
+    >{};
+
+
+}// result_of
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 namespace put_csv_deque_aux{
 
Modified: sandbox/assign_v2/boost/assign/v2/put/deque/functor.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/deque/functor.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/deque/functor.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -14,7 +14,9 @@
 #include <boost/type_traits/remove_cv.hpp>
 #include <boost/assign/v2/detail/keyword/nil.hpp>
 #include <boost/assign/v2/put/deque/cont.hpp>
-#include <boost/assign/v2/put/container/functor.hpp>
+#include <boost/assign/v2/put/deduce/fun.hpp>
+#include <boost/assign/v2/put/deduce/modifier_tag.hpp>
+#include <boost/assign/v2/put/deduce/modifier_dependee.hpp>
 
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 #include <utility>
@@ -24,9 +26,7 @@
 #include <boost/preprocessor/seq.hpp>
 #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/pp/args.hpp>
-#include <boost/assign/v2/detail/pp/params.hpp>
-#include <boost/assign/v2/detail/pp/seq.hpp>
+#include <boost/assign/v2/detail/pp/parameter_list.hpp>
 #endif
 
 namespace boost{
@@ -38,11 +38,10 @@
     struct deque
     {
         typedef typename boost::remove_cv<T>::type t_;
-        typedef typename put_deque_aux::impl<t_>::type cont_;
-        typedef result_of::put<cont_> traits_;
-        typedef typename traits_::f_ f_;
-        typedef typename traits_::modifier_tag_ modifier_tag_;
-        typedef put_deque_aux::cont<t_,f_,modifier_tag_> type;
+        typedef typename put_aux::deque_impl<t_>::type impl_;
+        typedef typename put_aux::deduce_fun<impl_>::type f_;
+        typedef typename put_aux::deduce_modifier_tag<impl_>::type modifier_tag_;
+        typedef put_aux::deque_cont<t_,f_,modifier_tag_> type;
     };
 
 }// result_of
@@ -72,17 +71,17 @@
     }
 
 #define BOOST_ASSIGN_V2_MACRO1(r, SeqU) \
-    template<typename T, BOOST_ASSIGN_V2_decl_params(SeqU)> \
+    template<typename T, BOOST_ASSIGN_V2_TPL_PARAMETER_LIST(SeqU)> \
     typename result_of::deque<T>::type\
-    deque( BOOST_ASSIGN_V2_decl_args(SeqU) ){ \
+    deque( BOOST_ASSIGN_V2_PARAMETER_LIST(SeqU, _) ){ \
         return deque<T>(v2::_nil)( \
-            BOOST_ASSIGN_V2_args(SeqU) \
+            BOOST_ASSIGN_V2_ARG_LIST(SeqU, _) \
         ); \
     } \
 /**/
 #define BOOST_ASSIGN_V2_MACRO2(z, n, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT(\
     BOOST_ASSIGN_V2_MACRO1, \
-    BOOST_PP_SEQ_FIRST_N(BOOST_PP_INC(n), BOOST_ASSIGN_V2_SEQ)\
+    BOOST_PP_SEQ_FIRST_N(BOOST_PP_INC(n), BOOST_ASSIGN_V2_SEQ_TPL_BINARY_ARG_LIST)\
 ) \
 /**/
 BOOST_PP_REPEAT(
Modified: sandbox/assign_v2/boost/assign/v2/put/deque/fwd.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/deque/fwd.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/deque/fwd.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -13,9 +13,9 @@
 namespace boost{
 namespace assign{
 namespace v2{
-namespace put_deque_aux{
+namespace put_aux{
 
-    template<typename T, typename F, typename Tag> class cont;
+    template<typename T, typename F, typename Tag> class deque_cont;
 
 }// put_deque_aux
 }// v2
Modified: sandbox/assign_v2/boost/assign/v2/put/deque/modulo.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/deque/modulo.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/deque/modulo.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,3 +1,5 @@
+//TODO remove file
+/*
 //////////////////////////////////////////////////////////////////////////////
 //  Boost.Assign v2                                                         //
 //                                                                          //
@@ -38,3 +40,4 @@
 }// boost
 
 #endif
+*/
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/ext.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/ext.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/ext.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,17 +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_PUT_EXT_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_EXT_ER_2010_HPP
-
-#include <boost/assign/v2/put/ext/iterate.hpp>
-#include <boost/assign/v2/put/ext/lookup.hpp>
-#include <boost/assign/v2/put/ext/repeat.hpp>
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/ext/iterate.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/ext/iterate.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/ext/iterate.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,112 +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_PUT_EXT_ITERATE_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_EXT_ITERATE_ER_2010_HPP
-#include <cstddef>
-#include <boost/assign/v2/detail/functor/identity.hpp>
-
-#include <boost/assign/v2/put/modulo/ext/xxx.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace modifier_tag{ struct iterate{}; }
-namespace put_parameter{
-
-    template<typename Arg>
-    struct iterate{
-
-        template<typename OldFun, typename OldTag>
-        struct apply : traits<
-            functor_aux::identity,
-            modifier_tag::iterate
-        >{};
-    };
-
-}// put_parameter
-namespace put_aux{
-
-    template<>
-    class modifier<modifier_tag::iterate>
-    {
-
-        public:
-
-        typedef std::size_t size_type;
-
-        modifier() : i( 0 ){}
-        explicit modifier( size_type const& i_ )
-           : i( i_ )
-        {}
-
-        template<typename V, typename T>
-        void impl(V& v, BOOST_ASSIGN_V2_forward_param(T, t) )const
-        {
-            v.at( i++ ) = BOOST_ASSIGN_V2_forward_arg(T, t);
-        }
-
-        template<typename V, typename T>
-        void impl(V& v, T* t)const
-        {
-            v.replace( i++ , t);
-        }
-
-        protected:
-        mutable std::size_t i;
-    };
-
-    template<typename Arg = keyword_aux::nil>
-    class iterate
-    {
-
-        public:
-
-        typedef std::size_t size_type;
-
-        iterate():i( 0 ){}
-        iterate( size_type const& i_)
-           : i( i_ )
-        {}
-
-        size_type const& arg()const{ return this->i; }
-
-        protected:
-        size_type i;
-
-    };
-
-    class iterate_keyword : public iterate<>
-    {
-
-        typedef iterate<> super_t;
-
-        public:
-
-        typedef std::size_t size_type;
-
-        iterate_keyword(){}
-
-        iterate<> operator=( size_type const& n_)const
-        {
-            typedef iterate<> result_;
-            return result_( n_ );
-        }
-
-    };
-
-}// put_aux
-
-BOOST_ASSIGN_V2_PUT_MODULO_EXT_XXX(iterate)
-
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/ext/lookup.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/ext/lookup.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/ext/lookup.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,94 +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_PUT_EXT_LOOKUP_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_EXT_LOOKUP_ER_2010_HPP
-#include <boost/call_traits.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/assign/v2/detail/functor/identity.hpp>
-
-#include <boost/assign/v2/put/modulo/ext/xxx.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace modifier_tag{ template<typename Arg> struct lookup{}; }
-namespace put_parameter{
-
-    template<typename Arg>
-    struct lookup{
-
-        template<typename OldFun, typename OldTag>
-        struct apply : put_parameter::traits<
-            functor_aux::identity,
-            modifier_tag::lookup<Arg>
-        >{};
-    };
-
-}// put_parameter
-namespace put_aux{
-
-    template<typename Arg>
-    struct modifier<modifier_tag::lookup<Arg> >
-    {
-
-        typedef Arg type;
-        typedef boost::shared_ptr<type> ptr_;
-
-        modifier(){}
-        explicit modifier(
-            typename boost::call_traits<type>::param_type arg
-        ) : ptr( new type( arg ) )
-        {}
-
-        template<typename V,typename T>
-        void impl(V& v, BOOST_ASSIGN_V2_forward_param(T, key) )const{
-            v[ key ] = (*this->ptr)( v[ key ] );
-        }
-
-        private:
-        ptr_ ptr;
-    };
-
-    template<typename Arg>
-    struct lookup
-    {
-        typedef Arg const type;
-
-        explicit lookup(type& k) : key( k ){}
-
-        type& arg()const{ return this->key; }
-
-        private:
-        type& key;
-
-    };
-
-    struct lookup_keyword
-    {
-        lookup_keyword(){}
-
-        template<typename Arg1>
-        lookup<Arg1> operator=(Arg1 const& arg1)const
-        {
-            return lookup<Arg1>( arg1 );
-        }
-
-
-    };
-
-}// put_aux
-
-BOOST_ASSIGN_V2_PUT_MODULO_EXT_XXX(lookup)
-
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/ext/repeat.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/ext/repeat.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/ext/repeat.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,121 +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_PUT_EXT_REPEAT_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_EXT_REPEAT_ER_2010_HPP
-#include <boost/assign/v2/put/modulo/ext/xxx.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace modifier_tag{ template<typename OldTag> struct repeat{}; }
-namespace put_parameter{
-
-    template<typename Arg>
-    struct repeat{
-
-        template<typename OldFun, typename OldTag>
-        struct apply : put_parameter::traits<
-            OldFun,
-            modifier_tag::repeat<OldTag>
-        >{};
-    };
-
-}// put_parameter
-namespace put_aux{
-
-    template<typename Tag>
-    class modifier<modifier_tag::repeat<Tag> >
-    {
-        typedef modifier<Tag> inner_;
-
-        public:
-
-        typedef std::size_t size_type;
-
-        modifier() : n( 0 ){}
-        explicit modifier( size_type const& n_ )
-            : n( n_ )
-        {
-        }
-
-#define BOOST_ASSIGN_V2_MACRO(arg)\
-        size_type m = this->n;\
-        while(m--) this->inner.impl(\
-            v,\
-            arg\
-        );\
-/**/
-        template<typename V, typename T>
-        void impl(V& v, BOOST_ASSIGN_V2_forward_param(T, t) )const
-        {
-
-            BOOST_ASSIGN_V2_MACRO( BOOST_ASSIGN_V2_forward_arg(T, t) )
-        }
-
-        template<typename V, typename T>
-        void impl(V& v, T* t)const
-        {
-            BOOST_ASSIGN_V2_MACRO( t )
-        }
-
-#undef BOOST_ASSIGN_V2_MACRO
-
-        size_type const& size()const{ return this->n; }
-
-        protected:
-        inner_ inner;
-        size_type n;
-    };
-
-    template<typename Arg = keyword_aux::nil>
-    class repeat
-    {
-
-        public:
-
-        typedef std::size_t size_type;
-
-        repeat( size_type const& n_)
-            : n( n_ )
-        {}
-
-        size_type const& arg()const{ return this->n; }
-
-        protected:
-        size_type n;
-
-    };
-
-    class repeat_keyword
-    {
-
-        public:
-
-        typedef std::size_t size_type;
-
-        repeat_keyword(){}
-
-        repeat<> operator=( size_type const& n_)const
-        {
-            typedef repeat<> result_;
-            return result_( n_ );
-        }
-
-    };
-
-}// put_aux
-
-BOOST_ASSIGN_V2_PUT_MODULO_EXT_XXX(repeat)
-
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/frame.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/frame.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/frame.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -13,5 +13,6 @@
 #include <boost/assign/v2/put/frame/crtp.hpp>
 #include <boost/assign/v2/put/frame/modifier.hpp>
 #include <boost/assign/v2/put/frame/sub.hpp>
+#include <boost/assign/v2/put/frame/replace.hpp>
 
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/put/frame/crtp.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/frame/crtp.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/frame/crtp.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -16,8 +16,9 @@
 #include <boost/assign/v2/detail/traits/container/is_ptr_container.hpp>
 #include <boost/assign/v2/put/frame/fwd.hpp>
 #include <boost/assign/v2/put/frame/modifier.hpp>
-#include <boost/assign/v2/put/modulo/fun.hpp>
-#include <boost/assign/v2/put/deduce/fun.hpp>
+
+//#include <boost/assign/v2/put/modulo/fun.hpp>
+//#include <boost/assign/v2/put/deduce/fun.hpp>
 
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
@@ -26,6 +27,7 @@
 #include <boost/preprocessor/arithmetic.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/repetition.hpp>
+#include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
 #include <boost/assign/v2/detail/config/limit_csv_arity.hpp>
 #include <boost/assign/v2/detail/config/limit_arity.hpp>
 
@@ -143,29 +145,22 @@
 )
 #undef BOOST_ASSIGN_V2_MACRO
 #endif
+		// must be mutable
         C& container()const{ return this->derived().container(); }
 
+// TODO remove
+/*
         struct result_of_modulo{
 
             struct deduce
             {
                 typedef typename put_aux::deduce_fun<C>::type f_;
-                typedef v2::result_of_modulo::fun<D> meta_;
+                typedef v2::result_of::modulo_fun<D> meta_;
                 typedef typename ::boost::mpl::apply1<meta_, f_>::type type;
             };
 
         };
-
-        typename result_of_modulo::deduce::type
-        modulo_deduce()const
-        {
-            typedef typename put_aux::deduce_fun<C>::type f_;
-            typedef typename result_of_modulo::deduce::type result_;
-            return result_(
-                this->derived().container(),
-                f_()
-            );
-        }
+*/
 
         protected:
 
@@ -184,7 +179,7 @@
         }
 
         template<typename T>
-        void check_modifier( BOOST_ASSIGN_V2_forward_param(T, t) )const
+        void check_modifier( BOOST_ASSIGN_V2_FORWARD_PARAM(T, t) )const
         {
             typedef put_concept::Modifier<Tag, C,
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
Modified: sandbox/assign_v2/boost/assign/v2/put/modulo.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/modulo.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -10,11 +10,8 @@
 #ifndef BOOST_ASSIGN_V2_PUT_MODULO_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_MODULO_ER_2010_HPP
 
-#include <boost/assign/v2/put/modulo/ext.hpp>
 #include <boost/assign/v2/put/modulo/fun.hpp>
-#include <boost/assign/v2/put/modulo/fun_modifier.hpp>
 #include <boost/assign/v2/put/modulo/generic.hpp>
 #include <boost/assign/v2/put/modulo/modifier.hpp>
-#include <boost/assign/v2/put/modulo/std.hpp>
 
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/put/modulo/ext.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/modulo/ext.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/ext.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,3 +1,5 @@
+// TODO remove file
+/*
 //////////////////////////////////////////////////////////////////////////////
 //  Boost.Assign v2                                                         //
 //                                                                          //
@@ -14,3 +16,4 @@
 #include <boost/assign/v2/put/modulo/ext/xxx.hpp>
 
 #endif
+*/
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/modulo/ext/frame.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/modulo/ext/frame.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/ext/frame.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,3 +1,5 @@
+// TODO remove file
+/*
 //////////////////////////////////////////////////////////////////////////////
 //  Boost.Assign v2                                                         //
 //                                                                          //
@@ -112,3 +114,4 @@
 }// boost
 
 #endif
+*/
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/modulo/ext/xxx.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/modulo/ext/xxx.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/ext/xxx.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,55 +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_PUT_MODULO_EXT_XXX
-#include <boost/preprocessor/cat.hpp>
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/quote.hpp>
-#include <boost/utility/enable_if.hpp>
-
-// Needed by dependants
-#include <boost/assign/v2/detail/keyword/nil.hpp>
-#include <boost/assign/v2/put/modulo/modifier.hpp>
-
-#include <boost/assign/v2/detail/pp/forward.hpp>
-#include <boost/assign/v2/put/frame/crtp.hpp>
-#include <boost/assign/v2/put/frame/modifier.hpp>
-#include <boost/assign/v2/put/modulo/ext.hpp>
-
-#define BOOST_ASSIGN_V2_PUT_MODULO_EXT_XXX(Param)\
-namespace result_of_modulo{\
-    template<typename D, typename Arg>\
-    struct Param\
-        : ::boost::mpl::apply1<\
-            result_of_modulo::ext<D>\
-            , put_parameter::Param<Arg>\
-        >\
-    {};\
-}\
-namespace put_aux{\
-\
-    template<typename C, typename F, typename Tag, typename D, typename Arg>\
-    typename result_of_modulo::Param<D, Arg>::type\
-    operator%(\
-        crtp<C, F, Tag, D> const& lhs,\
-        put_aux::Param<Arg> const& rhs\
-    )\
-    {\
-        typedef result_of_modulo::Param<D, Arg> caller_;\
-        return caller_::call( lhs.derived(), rhs );\
-    }\
-\
-}\
-namespace{\
-    put_aux::BOOST_PP_CAT(Param,_keyword) const BOOST_PP_CAT(_,Param)\
-        = put_aux::BOOST_PP_CAT(Param,_keyword)();\
-}\
-/**/
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/modulo/fun.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/modulo/fun.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/fun.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -9,56 +9,6 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_MODULO_FUN_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_MODULO_FUN_ER_2010_HPP
-#include <boost/mpl/apply.hpp>
-#include <boost/assign/v2/put/frame/fwd.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace result_of_modulo{
-
-    template<typename D> struct fun/* Specialize on D(erived) */{
-        template<typename F> struct apply{};
-    };
-
-}// result_of_modulo
-namespace put_aux{
-
-    template<typename F>
-    struct modulo_fun
-    {
-        modulo_fun(const F& f) : value(f){}
-        F value;
-    };
-
-    template<typename C, typename F, typename Tag, typename D, typename F1>
-    typename ::boost::mpl::apply1<result_of_modulo::fun<D>, F1>::type
-    operator%(
-        crtp<C, F, Tag, D> const& lhs,
-        modulo_fun<F1> const& rhs
-    )
-    {
-        typedef result_of_modulo::fun<D> meta_;
-        typedef typename ::boost::mpl::apply1<meta_, F1>::type result_;
-        return result_( lhs.container(), rhs.value, lhs.modifier );
-    }
-
-    struct kwd_fun{
-
-        template<typename F>
-        modulo_fun<F> operator=(F const& f)const
-        {
-            return put_aux::modulo_fun<F>( f );
-        }
-
-    };
-
-}// put_aux
-namespace{
-    const put_aux::kwd_fun _fun = put_aux::kwd_fun();
-}
-}// v2
-}// assign
-}// boost
-
+#include <boost/assign/v2/put/modulo/fun/make.hpp>
+#include <boost/assign/v2/put/modulo/fun/meta.hpp>
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/put/modulo/fun_modifier.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/modulo/fun_modifier.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/fun_modifier.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,3 +1,5 @@
+// TODO remove file
+/*
 //////////////////////////////////////////////////////////////////////////////
 //  Boost.Assign v2                                                         //
 //                                                                          //
@@ -36,3 +38,4 @@
 }// boost
 
 #endif
+*/
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/modulo/modifier.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/modulo/modifier.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/modifier.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -10,20 +10,9 @@
 #ifndef BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_MODULO_MODIFIER_ER_2010_HPP
 
-namespace boost{
-namespace assign{
-namespace v2{
-//[result_of_modulo_modifier
-namespace result_of_modulo{
-
-    template<typename /*<<Inherits from put_aux::crtp\<\>>>*/D> struct /*<<Specialize on D>>*/modifier{
-        template<typename Tag> struct apply{};
-    };
-
-}// result_of_modulo
-//]
-}// v2
-}// assign
-}// boost
+#include <boost/assign/v2/put/modulo/modifier/keyword.hpp>
+#include <boost/assign/v2/put/modulo/modifier/meta.hpp>
+#include <boost/assign/v2/put/modulo/modifier/make.hpp>
+#include <boost/assign/v2/put/modulo/modifier/standard.hpp>
 
 #endif
Modified: sandbox/assign_v2/boost/assign/v2/put/modulo/std.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/modulo/std.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/std.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,3 +1,5 @@
+// TODO remove file
+/*
 //////////////////////////////////////////////////////////////////////////////
 //  Boost.Assign v2                                                         //
 //                                                                          //
@@ -14,3 +16,4 @@
 #include <boost/assign/v2/put/modulo/std/xxx.hpp>
 
 #endif
+*/
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/modulo/std/frame.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/modulo/std/frame.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/std/frame.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,3 +1,5 @@
+// TODO remove file
+/*
 //////////////////////////////////////////////////////////////////////////////
 //  Boost.Assign v2                                                         //
 //                                                                          //
@@ -25,7 +27,7 @@
     struct modulo_std
     {
         modulo_std(){}
-        modulo_std(Tag const& t) : modifier_tag( t ){}
+        modulo_std(Tag const& t){}// : modifier_tag( t ){}
         Tag modifier_tag;
     };
 
@@ -43,7 +45,7 @@
         return result_(
             lhs.container(),
             lhs.fun,
-            modifier_( rhs.modifier_tag )
+            modifier_() // rhs.modifier_tag )
         );
     }
 
@@ -65,3 +67,4 @@
 }// boost
 
 #endif
+*/
Modified: sandbox/assign_v2/boost/assign/v2/put/modulo/std/xxx.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/modulo/std/xxx.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/modulo/std/xxx.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,3 +1,4 @@
+// TODO remove file
 //////////////////////////////////////////////////////////////////////////////
 //  Boost.Assign v2                                                         //
 //                                                                          //
@@ -83,4 +84,4 @@
 }\
 /**/
 
-#endif
+#endif
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/pipe/csv.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/pipe/csv.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/pipe/csv.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -9,9 +9,7 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_PIPE_CSV_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_PIPE_CSV_ER_2010_HPP
-#include <boost/assign/v2/put/pipe/csv/forward.hpp>
 #include <boost/assign/v2/put/pipe/csv/generator.hpp>
-#include <boost/assign/v2/put/pipe/csv/keyword.hpp>
 #include <boost/assign/v2/put/pipe/csv/operator.hpp>
 #include <boost/assign/v2/put/pipe/csv/rhs.hpp>
 #include <boost/assign/v2/put/pipe/csv/size_type.hpp>
Modified: sandbox/assign_v2/boost/assign/v2/put/pipe/csv/forward.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/pipe/csv/forward.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/pipe/csv/forward.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,58 +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_PUT_PIPE_CSV_FORWARD_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_PIPE_CSV_FORWARD_ER_2010_HPP
-#include <boost/utility/enable_if.hpp>
-#include <boost/assign/v2/put/pipe/csv/size_type.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace put_pipe_aux{
-
-    template<csv_size_type N,
-        csv_size_type I, typename F, typename C>
-    typename boost::enable_if_c<
-        N == I
-    >::type
-    csv_forward(
-        F const& f ,
-        C const& c
-    )
-    {}
-
-    template<csv_size_type N,
-        csv_size_type I, typename F, typename C>
-    typename boost::enable_if_c<
-        I < N
-    >::type
-    csv_forward(
-        F const& f ,
-        C const& c
-    )
-    {
-        f( c[ I ].get() );
-        csv_forward<N, I+1>(f, c);
-    }
-
-    template<typename F, typename C>
-    void csv_forward(
-        F const& f ,
-        C const& c
-    ){
-        csv_forward<C::static_size, 0>(f, c );
-    }
-
-}// put_pipe_aux
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_ADAPTOR_CSV_FORWARD_ER_2010_HPP
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/pipe/csv/generator.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/pipe/csv/generator.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/pipe/csv/generator.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -164,8 +164,12 @@
     };
 
 }// put_pipe_aux
+
+    put_pipe_aux::csv_generator<> const _csv_put
+        = put_pipe_aux::csv_generator<>();
+
 }// v2
 }// assign
 }// boost
 
-#endif // BOOST_ASSIGN_V2_PUT_PIPE_CSV_CONTAINER_HPP_ER_2010
+#endif // BOOST_ASSIGN_V2_PUT_PIPE_CSV_GENERATOR_HPP_ER_2010
Modified: sandbox/assign_v2/boost/assign/v2/put/pipe/csv/keyword.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/pipe/csv/keyword.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/pipe/csv/keyword.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,27 +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_PUT_PIPE_CSV_KEYWORD_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_PIPE_CSV_KEYWORD_ER_2010_HPP
-#include <boost/assign/v2/put/pipe/csv/generator.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace{
-
-    put_pipe_aux::csv_generator<> const _csv_put
-        = put_pipe_aux::csv_generator<>();
-
-}
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_PUT_PIPE_CSV_CONTAINER_HPP_ER_2010
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/put/pipe/csv/operator.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/pipe/csv/operator.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/pipe/csv/operator.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -9,7 +9,8 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_PUT_PIPE_CSV_OPERATOR_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_PIPE_CSV_OPERATOR_ER_2010_HPP
-#include <boost/assign/v2/put/pipe/modulo/forward.hpp>
+//#include <boost/assign/v2/put/pipe/modulo/forward.hpp>
+#include <boost/assign/v2/ref/array/as_arglist.hpp>
 #include <boost/assign/v2/put/pipe/csv/rhs.hpp>
 #include <boost/assign/v2/put/pipe/csv/size_type.hpp>
 #include <boost/assign/v2/put/pipe/csv/forward.hpp>
@@ -24,7 +25,7 @@
         typename Pars, csv_size_type N, typename U>
     C& operator|(C& cont, put_pipe_aux::csv_rhs<Pars, N, U> const& c){
 
-        csv_forward(
+		v2::ref::as_arglist(
             forward_pars<Pars>(
                 put( cont ),
                 c.pars()
@@ -40,4 +41,4 @@
 }// assign
 }// boost
 
-#endif
+#endif // BOOST_ASSIGN_V2_PUT_PIPE_CSV_OPERATOR_ER_2010_HPP
Modified: sandbox/assign_v2/boost/assign/v2/put/pipe/functor.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/pipe/functor.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/pipe/functor.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -10,7 +10,7 @@
 #ifndef BOOST_ASSIGN_V2_PUT_PIPE_FUNCTOR_ER_2010_HPP
 #define BOOST_ASSIGN_V2_PUT_PIPE_FUNCTOR_ER_2010_HPP
 
-#include <boost/assign/v2/put/pipe/functor/forward.hpp>
+//#include <boost/assign/v2/put/pipe/functor/forward.hpp>
 #include <boost/assign/v2/put/pipe/functor/operator.hpp>
 #include <boost/assign/v2/put/pipe/functor/rhs.hpp>
 #include <boost/assign/v2/put/pipe/functor/size_type.hpp>
Modified: sandbox/assign_v2/boost/assign/v2/put/pipe/functor/forward.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/pipe/functor/forward.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/pipe/functor/forward.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -12,9 +12,9 @@
 
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
-#include <boost/assign/v2/put/pipe/functor/cpp0x/forward.hpp>
+//#include <boost/assign/v2/put/pipe/functor/cpp0x/forward.hpp>
 #else
-#include <boost/assign/v2/put/pipe/functor/cpp03/forward.hpp>
+//#include <boost/assign/v2/put/pipe/functor/cpp03/forward.hpp>
 #endif
 
 #endif // BOOST_ASSIGN_V2_ADAPTOR_FUNCTOR_FORWARD_ER_2010_HPP
Modified: sandbox/assign_v2/boost/assign/v2/put/pipe/functor/operator.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/pipe/functor/operator.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/pipe/functor/operator.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -11,7 +11,9 @@
 #define BOOST_ASSIGN_V2_PUT_PIPE_FUNCTOR_OPERATOR_ER_2010_HPP
 #include <boost/assign/v2/put/pipe/modulo/forward.hpp>
 #include <boost/assign/v2/put/pipe/functor/rhs.hpp>
-#include <boost/assign/v2/put/pipe/functor/forward.hpp>
+//#include <boost/assign/v2/put/pipe/functor/forward.hpp>
+#include <boost/assign/v2/ref/tuple/cpp03/as_arglist.hpp> // ?
+#include <boost/assign/v2/ref/list_tuple/cpp03/as_arglist.hpp>
 #include <boost/assign/v2/put/container/functor.hpp>
 
 namespace boost{
@@ -29,7 +31,8 @@
         C& cont,
         put_pipe_aux::rhs<Pars, SeqArgs, enable_pars> const& c
     ){
-        forward(
+		v2::ref::as_arglist(
+        //forward(
             forward_pars<Pars>(
                 put( cont ),
                 c.pars()
Modified: sandbox/assign_v2/boost/assign/v2/put/pipe/functor/size_type.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/pipe/functor/size_type.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/pipe/functor/size_type.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -16,7 +16,7 @@
 namespace v2{
 namespace put_pipe_aux{
 
-    typedef ref::list_tuple_aux::get_size_type size_type;
+    typedef ref::list_tuple_aux::list_size_type size_type;
 
 }// put_pipe_aux
 }// v2
Modified: sandbox/assign_v2/boost/assign/v2/put/pipe/range.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/pipe/range.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/pipe/range.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -27,7 +27,8 @@
 
         helper1(R const& range) : super_t( range ){}
 
-        R const& range()const{ return this->get(); }
+        typename super_t::result_of_get_type 
+        range()const{ return this->get(); }
 
         private:
         helper1();
Modified: sandbox/assign_v2/boost/assign/v2/put/std.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/std.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/std.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -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_PUT_STD_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_STD_ER_2010_HPP
-
-#include <boost/assign/v2/put/std/insert.hpp>
-#include <boost/assign/v2/put/std/push.hpp>
-#include <boost/assign/v2/put/std/push_back.hpp>
-#include <boost/assign/v2/put/std/push_front.hpp>
-
-#endif
+// TODO remove file
Modified: sandbox/assign_v2/boost/assign/v2/put/std/insert.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/std/insert.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/std/insert.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,16 +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_PUT_STD_INSERT_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_STD_INSERT_ER_2010_HPP
-#include <boost/assign/v2/put/modulo/std/xxx.hpp>
-
-BOOST_ASSIGN_V2_PUT_MODULO_STD_XXX(insert)
-
-#endif
+// TODO remove file
Modified: sandbox/assign_v2/boost/assign/v2/put/std/push.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/std/push.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/std/push.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,16 +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_PUT_STD_PUSH_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_STD_PUSH_ER_2010_HPP
-#include <boost/assign/v2/put/modulo/std/xxx.hpp>
-
-BOOST_ASSIGN_V2_PUT_MODULO_STD_XXX(push)
-
-#endif
+// TODO remove file
Modified: sandbox/assign_v2/boost/assign/v2/put/std/push_back.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/std/push_back.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/std/push_back.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,16 +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_PUT_STD_PUSH_BACK_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_STD_PUSH_BACK_ER_2010_HPP
-#include <boost/assign/v2/put/modulo/std/xxx.hpp>
-
-BOOST_ASSIGN_V2_PUT_MODULO_STD_XXX(push_back)
-
-#endif
+// TODO remove file
Modified: sandbox/assign_v2/boost/assign/v2/put/std/push_front.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/std/push_front.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/std/push_front.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,16 +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_PUT_STD_PUSH_FRONT_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_STD_PUSH_FRONT_ER_2010_HPP
-#include <boost/assign/v2/put/modulo/std/xxx.hpp>
-
-BOOST_ASSIGN_V2_PUT_MODULO_STD_XXX(push_front)
-
-#endif
+// TODO remove file
Modified: sandbox/assign_v2/boost/assign/v2/ref/list_tuple/cpp03/container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/list_tuple/cpp03/container.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/ref/list_tuple/cpp03/container.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -94,11 +94,11 @@
         struct apply : NewState::template result<params(T)>{};
     };
 
-    template<list_tuple_aux::get_size_type N,
+    template<list_size_type N,
         typename L, params_default(typename T, na_type)>
     class container;
 
-    template<list_tuple_aux::get_size_type N, typename L,
+    template<list_size_type N, typename L,
         params_default(typename T, na_type)
     >
     struct meta_result
@@ -118,7 +118,7 @@
 
     };
 
-    template<list_tuple_aux::get_size_type N, typename L,
+    template<list_size_type N, typename L,
         params_default(typename T, na_type)>
     struct traits
     {
@@ -137,7 +137,7 @@
         >::type link_;
     };
 
-    template<list_tuple_aux::get_size_type N, typename L, params(typename T)>
+    template<list_size_type N, typename L, params(typename T)>
     class container :
         public list_tuple_aux::traits<N, L, params(T)>::link_,
         public list_tuple_aux::traits<N, L, params(T)>::crtp_,
@@ -155,9 +155,9 @@
         tuple_ const& get_tuple()const{ return this->tuple; }
         link_ const& get_link()const{ return (*this); }
 
-        typedef list_tuple_aux::get_size_type get_size_type;
+        typedef list_tuple_aux::list_size_type list_size_type;
         typedef list_tuple_aux::tuple_size_type tuple_size_type;
-        BOOST_STATIC_CONSTANT( get_size_type, static_get_size = N );
+        BOOST_STATIC_CONSTANT( list_size_type, static_get_size = N );
         BOOST_STATIC_CONSTANT(
             tuple_size_type,
             static_tuple_size = ::boost::tuples::length<tuple_>::value
Modified: sandbox/assign_v2/boost/assign/v2/ref/list_tuple/cpp0x/container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/list_tuple/cpp0x/container.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/ref/list_tuple/cpp0x/container.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -29,10 +29,10 @@
 namespace ref{
 namespace list_tuple_aux{
 
-    template<list_tuple_aux::get_size_type N,
+    template<list_size_type N,
         typename L, typename...Args> class container;
 
-    template<list_tuple_aux::get_size_type N, typename L, typename...Args>
+    template<list_size_type N, typename L, typename...Args>
     struct meta_result
     {
 
@@ -57,7 +57,7 @@
         struct apply : NewState::template result<Args...>{};
     };
 
-    template<list_tuple_aux::get_size_type N, typename L, typename...Args>
+    template<list_size_type N, typename L, typename...Args>
     class container :
     ::boost::mpl::eval_if_c<
         N == 0,
@@ -80,9 +80,9 @@
         tuple_ const& get_tuple()const{ return this->tuple; }
         link_ const& get_link()const{ return *this; }
 
-        typedef list_tuple_aux::get_size_type get_size_type;
+        typedef list_tuple_aux::list_size_type list_size_type;
         typedef list_tuple_aux::tuple_size_type tuple_size_type;
-        BOOST_STATIC_CONSTANT( get_size_type, static_get_size = N );
+        BOOST_STATIC_CONSTANT( list_size_type, static_get_size = N );
         BOOST_STATIC_CONSTANT(
             tuple_size_type,
             static_tuple_size = sizeof...(Args)
Modified: sandbox/assign_v2/boost/assign/v2/ref/list_tuple/extraction.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/list_tuple/extraction.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/ref/list_tuple/extraction.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -22,7 +22,7 @@
 namespace ref{
 namespace list_tuple_aux{
 
-    template<list_tuple_aux::get_size_type N,
+    template<list_size_type N,
         typename L, typename T, typename D>
     class extraction
     {
@@ -36,13 +36,13 @@
 
         public:
 
-        template<list_tuple_aux::get_size_type I>
+        template<list_size_type I>
         struct is_head : ::boost::mpl::bool_< I + 1 == N >{};
 
-        template<list_tuple_aux::get_size_type I>
+        template<list_size_type I>
         struct link_get_result : L::template get_result<I>{};
 
-        template<list_tuple_aux::get_size_type I>
+        template<list_size_type I>
         struct get_result : ::boost::mpl::eval_if<
             is_head<I>,
             ::boost::mpl::identity<
@@ -51,7 +51,7 @@
             link_get_result<I>
         >{};
 
-        template<list_tuple_aux::get_size_type I>
+        template<list_size_type I>
         typename boost::lazy_enable_if<
             is_head<I>,
             get_result<I>
@@ -61,7 +61,7 @@
             return this->derived().get_tuple();
         }
 
-        template<list_tuple_aux::get_size_type I>
+        template<list_size_type I>
         typename boost::lazy_disable_if<
             is_head<I>,
             get_result<I>
Modified: sandbox/assign_v2/boost/assign/v2/ref/list_tuple/size_type.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/list_tuple/size_type.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/ref/list_tuple/size_type.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -16,8 +16,8 @@
 namespace ref{
 namespace list_tuple_aux{
 
+    typedef int list_size_type;
     typedef int tuple_size_type;
-    typedef int get_size_type;
 
 }// list_tuple_aux
 }// ref
Modified: sandbox/assign_v2/boost/assign/v2/ref/tuple/cpp0x.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/tuple/cpp0x.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/ref/tuple/cpp0x.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,122 +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_DETAIL_TUPLE_CPP0X_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_DETAIL_TUPLE_CPP0X_ER_2010_HPP
-#include <utility>
-#include <boost/type_traits/is_reference.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/assign/v2/ref/tuple/cpp0x.hpp>
-// The tuple below avoids the returns reference to a temporary error.
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace ref{
-namespace tuple_aux{
-
-    template<typename ...Args>
-    struct container
-    {
-        container(){}
-    };
-
-    template<typename T, bool is_ref = boost::is_reference<T>::value>
-    struct traits
-    {
-        typedef typename boost::add_reference<T>::type ref_type;
-        typedef ref_type value_type;
-    };
-
-    template<typename T>
-    struct traits<T, false>
-    {
-        typedef typename boost::add_const<T>::type value_type;
-        typedef typename boost::add_reference<value_type>::type ref_type;
-    };
-
-    template<typename T, typename ...Args>
-    struct container<T, Args...> : container<Args...>
-    {
-        typedef container<Args...> super_t;
-
-        container(T&& t, Args&&...args)
-            : super_t(
-                std::forward<Args>( args )...
-            ),
-            value(
-                std::forward<T>( t )
-            ) {}
-
-        typedef tuple_aux::traits<T> traits_;
-        typedef typename traits_::value_type value_type;
-
-        value_type value;
-
-    };
-
-    template<int index, int acc, typename...Args>
-    struct get_helper{};
-
-    template<int index, int acc, typename T, typename... Args>
-    struct get_helper<index, acc, T, Args...>
-     : get_helper<index, acc + 1, Args...>{};
-
-    template<int index, typename T, typename... Args>
-    struct get_helper<index, index, T, Args...>
-    {
-        typedef container<T, Args...> container_;
-        typedef ref::tuple_aux::traits<T> traits_;
-        typedef typename traits_::ref_type type;
-
-        template<typename U>
-        static type call(U const& u)
-        {
-            container_ const& t = u;
-            return t.value;
-        }
-    };
-
-}// tuple_aux
-namespace result_of{
-
-    template<typename... Args>
-    struct tuple
-    {
-        typedef tuple_aux::container<Args...> type;
-    };
-
-    template<int index, typename... Args>
-    struct get_tuple : tuple_aux::get_helper<index, 0 , Args...>{};
-
-}// result_of
-
-    template<typename ... Args>
-    typename result_of::tuple<Args...>::type
-    tuple(Args&&...args)
-    {
-        typedef typename result_of::tuple<Args...>::type result_;
-        return result_( std::forward<Args>( args )... );
-    }
-
-    template<int index, typename... Args>
-    typename result_of::get_tuple<index, Args...>::type
-    get(tuple_aux::container<Args...> const& t)
-    {
-        typedef result_of::get_tuple<index, Args...> caller_;
-        return caller_::call( t );
-    }
-
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/boost/assign/v2/ref/wrapper/copy.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/wrapper/copy.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/ref/wrapper/copy.hpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -45,7 +45,7 @@
         }
 
         // TODO a) crtp b) reference() or get()
-        typedef T& get_type;
+        typedef T& result_of_get_type;
         T& get() const
         {
             return *this->ref_;
Modified: sandbox/assign_v2/libs/assign/v2/src/main.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/src/main.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/src/main.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,28 +1,68 @@
 
 // Test
-#include <libs/assign/v2/test/detail.h>
-#include <libs/assign/v2/test/ref.h>
-#include <libs/assign/v2/test/put.h>
-#include <libs/assign/v2/test/utility.h>
-#include <libs/assign/v2/test/other.h>
+//#include <libs/assign/v2/test/detail.h>
+//#include <libs/assign/v2/test/ref.h>
+//#include <libs/assign/v2/test/put.h>
+//#include <libs/assign/v2/test/utility.h>
+//#include <libs/assign/v2/test/other.h>
+
+#include <libs/assign/v2/test/put/container/functor.h>
+#include <libs/assign/v2/test/put/modifier/standard.h>
+#include <libs/assign/v2/test/put/modifier/iterate.h>
+#include <libs/assign/v2/test/put/modifier/lookup.h>
+#include <libs/assign/v2/test/put/modifier/repeat.h>
 
 // Speed
 //#include <fstream>
 //#include <libs/assign/v2/speed/put_ref.h>
 
-#include <boost/assign/v2/put/pipe.hpp>
+#include <string>
+#include <iostream>
+#include <boost/config.hpp>
+#include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
+
 
 int main (int argc, char * const argv[])
 {
 
     // Do not put libs/assign/v2/test/unit_testing in this project
+	{
+        std::string cpp0x = "RVALUE_REFERENCES : ";
+		#ifdef BOOST_NO_RVALUE_REFERENCES
+		cpp0x += "NO";
+		#else
+		cpp0x += "YES";
+		#endif
+        cpp0x += ", VARIADIC_TEMPLATES : ";
+		#ifdef BOOST_NO_VARIADIC_TEMPLATES
+		cpp0x += "NO";
+        #else
+		cpp0x += "YES";
+		#endif
+        cpp0x += ", 0X_HDR_TUPLE : ";
+		#ifdef BOOST_NO_0X_HDR_TUPLE
+		cpp0x += "NO";
+        #else
+		cpp0x += "YES";
+		#endif
+        cpp0x += ", ENABLE_CPP0X : " + std::string(BOOST_ASSIGN_V2_ENABLE_CPP0X ? "YES" : "NO");
+
+		std::cout << cpp0x << std::endl;
+	}
     {
+        /*
         using namespace test_assign_v2;
         xxx_detail::test();
         xxx_put::test();
         xxx_ref::test();
         xxx_utility::test();
         xxx_other::test();
+        */
+        using namespace test_assign_v2;
+        xxx_put::xxx_container::xxx_functor::test();
+        xxx_put::xxx_modifier::xxx_standard::test();
+        xxx_put::xxx_modifier::xxx_iterate::test();
+        xxx_put::xxx_modifier::xxx_repeat::test();
     }
 
     /*
Modified: sandbox/assign_v2/libs/assign/v2/test/put/container/functor.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/container/functor.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/container/functor.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -9,19 +9,18 @@
 //////////////////////////////////////////////////////////////////////////////
 #include <boost/array.hpp>
 #include <deque>
-#include <list>
 #include <map>
+#include <list>
 #include <queue>
-#include <set>
-#include <stack>
-#include <vector>
 #include <string>
+#include <utility>
 #include <boost/tuple/tuple.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/numeric/conversion/bounds.hpp>
 #include <boost/assign/v2/detail/config/check.hpp>
-#include <boost/assign/v2/put/container/functor.hpp>
-
 #include <boost/assign/v2/detail/functor/identity.hpp>
-
+#include <boost/assign/v2/put/container/functor.hpp>
 #include <libs/assign/v2/test/put/container/functor.h>
 
 namespace test_assign_v2{
@@ -30,113 +29,72 @@
 namespace xxx_functor{
 
     void test(){
+    
         namespace as2 = boost::assign::v2;
+        
         {
-            //[put_cont_functor_array
-            typedef int T; T x = 1, y = 2, z = 3;
-            boost::array<T, 3> cont; as2::put( cont )( x )( y )( z );
-            BOOST_ASSIGN_V2_CHECK( cont[0] == x );
-            BOOST_ASSIGN_V2_CHECK( cont[2] == z );
-            //]
-        }
-        {
-            // std::string may be replaced by const char* using a custom
-            // comparator
-            //[put_cont_functor_map
-            typedef std::map<std::string, int> C; C cont;
-            as2::put( cont )( "jan", 31 )( "feb", 28 )( "mar", 31 )("apr", 30);
-
-            BOOST_ASSIGN_V2_CHECK( cont["feb"] == 28 );
-            BOOST_ASSIGN_V2_CHECK( cont["apr"] == 30 );
-            //]
-            BOOST_ASSIGN_V2_CHECK( cont["jan"] == 31 );
-            BOOST_ASSIGN_V2_CHECK( cont["mar"] == 31 );
-        }
-        {
-            // Used in intro (same as above but different naming)
-            //[put_cont_functor_cal
-            typedef std::map<std::string, int> C; C cal;
-            /*<< Calls `cal.insert( C::value_type(x, y) )` for [^(x,y)=( "jan", 31 ),( "feb", 28 ),( "mar", 31 ),("apr", 30)] >>*/
-            as2::put( cal )( "jan", 31 )( "feb", 28 )( "mar", 31 )("apr", 30);
-
-            BOOST_ASSIGN_V2_CHECK( cal["feb"] == 28 );
-            //]
-        }
-        {
-            //[put_cont_functor_set
-            typedef std::string T; std::set<T> cont;
-            T x = "isomer", y = "ephemeral", z = "prosaic";
-            as2::put( cont )( x )( y )( z );
-
-            BOOST_ASSIGN_V2_CHECK( cont.count( x ) == 1 );
-            BOOST_ASSIGN_V2_CHECK( cont.count( z ) == 1 );
+            //[array
+            const int sz = 3;
+    		typedef boost::array<int, sz>  row_;
+    		boost::array<row_, sz>  matrix3x3;
+            {
+            	row_ row0, row1, row2;
+            	as2::put( row0 )( 1 )( 2 )( 3 );
+            	as2::put( row1 )( 4 )( 5 )( 6 );
+            	as2::put( row2 )( 7 )( 8 )( 9 );
+			    as2::put( matrix3x3 )( row0 )( row1 )( row2 );
+			}
+            for(int i = 0; i < 9; i++)
+            {
+            	BOOST_ASSIGN_V2_CHECK( matrix3x3[ i / 3 ][ i % 3 ] == i + 1 );
+            }
+			//]
+        }
+		{
+        	//[seq_var_args
+            typedef double elem_; typedef std::list<elem_> row_; typedef std::vector<row_> ragged_array_;
+			row_ a; as2::put( a )( 0.71 )( 0.63 )( 0.85 );
+			row_ b; as2::put( b )( 0.61 )( 0.69 )( 0.92 )( 0.55 );
+			ragged_array_ ragged_array; 
+            as2::put( ragged_array )
+				( boost::begin( a ), boost::end( a ) )
+				( b )
+				( 1, -99.99 )
+                ( );
+
+			elem_ eps = boost::numeric::bounds<elem_>::smallest();
+            BOOST_ASSIGN_V2_CHECK( ragged_array[0].size() == a.size() );
+            BOOST_ASSIGN_V2_CHECK( ragged_array[1].size() == b.size() );
+            BOOST_ASSIGN_V2_CHECK( ragged_array[2].size() == 1        );
+            BOOST_ASSIGN_V2_CHECK( ragged_array[3].size() == 0        );
+            BOOST_ASSIGN_V2_CHECK( abs( ragged_array[0].front() - a.front() ) < eps );
+            BOOST_ASSIGN_V2_CHECK( abs( ragged_array[0].back()  - a.back()  ) < eps );
+            BOOST_ASSIGN_V2_CHECK( abs( ragged_array[1].front() - b.front() ) < eps );
+            BOOST_ASSIGN_V2_CHECK( abs( ragged_array[1].back()  - b.back()  ) < eps );
+            BOOST_ASSIGN_V2_CHECK( abs( ragged_array[2].front() + 99.9      ) < eps );
+            BOOST_ASSIGN_V2_CHECK( abs( ragged_array[2].back()  + 99.9      ) < eps );
             //]
-        }
+		}
         {
-            //[put_cont_functor_deque
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::deque<T> cont; as2::put( cont )( x )( y )( z );
+            //[adapter
+            std::queue<int> fifo; as2::put( fifo )( 72 )( 31 )( 48 );
 
-            BOOST_ASSIGN_V2_CHECK( cont.front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
-            //]
-        }
-        {
-            // Lunar eclipse years falling on winter solstice
-            //[put_cont_functor_list
-            typedef int T; T x = 1638, y = 2010, z = 2094;
-            std::list<T> cont; ( as2::put( cont ) )( x )( y )( z );
-
-            BOOST_ASSIGN_V2_CHECK( cont.front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
-            //]
-        }
-        {
-            //[put_cont_functor_vector
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::vector<T> cont; as2::put( cont )( x )( y )( z );
-
-            BOOST_ASSIGN_V2_CHECK( cont.front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
-            //]
-        }
-        {
-            //[put_cont_functor_queue
-            typedef int T; T x = 8, y = 7, z = 4;
-            std::queue<T> fifo; as2::put( fifo )( x )( y )( z );
-
-            BOOST_ASSIGN_V2_CHECK( fifo.front() == x );
-            BOOST_ASSIGN_V2_CHECK( fifo.back() == z );
-            //]
-        }
-        {
-            //[put_cont_functor_stack
-            typedef int T; T x = 8, y = 7, z = 4;
-            std::stack<T> lifo; as2::put( lifo )( x )( y )( z );
-
-            BOOST_ASSIGN_V2_CHECK( lifo.top() == z ); lifo.pop();
-            BOOST_ASSIGN_V2_CHECK( lifo.top() == y ); lifo.pop();
-            BOOST_ASSIGN_V2_CHECK( lifo.top() == x ); lifo.pop();
+            BOOST_ASSIGN_V2_CHECK( fifo.front() == 72 );
+            BOOST_ASSIGN_V2_CHECK( fifo.back() == 48 );
             //]
         }
         {
             using namespace boost;
-            //Reminder : cont cannot be say a std::vector<> as
-            // cont.push_back( T( pi, "pi" ) );
-            // causes assignment read only error.
-            //[put_cont_functor_tuple
-            typedef double const ct_;
-            typedef boost::tuple<ct_/*<<Notice>>*/&, std::string> T;
-            ct_ const pi = 3.14,  e = 2.71, log2 = 0.69, na = 0.0;
-            std::deque<T> cont; as2::put( cont )/*<< Notice the binary calls >>*/( pi, "pi" )( e, "e" )( log2, "log2" )/*<< Notice the unary call >>*/( na );
-
-            BOOST_ASSIGN_V2_CHECK( &get<0>( cont[0] ) == &pi );
-            BOOST_ASSIGN_V2_CHECK(  get<1>( cont[0] ) == "pi" );
-            BOOST_ASSIGN_V2_CHECK( &get<0>( cont[3] ) == &na );
-            T t3 = T( na ); BOOST_ASSIGN_V2_CHECK( get<1>( cont[3] ) == get<1>( t3 ) );
+            //[seq_ref_tuple
+            typedef const char state_ [3]; state_ ct = "CT", nj = "NJ", ny = "NY";
+            typedef int code_; typedef boost::tuple<state_/*<<Notice the reference>>*/&,  code_> area_code_; 
+            std::deque< area_code_ > tri_state; as2::put( tri_state )( nj, 201 )( ct, 203 )( ny, 212 )( ny, 315 )( ny, 347 )( nj, 551 );
+
+            BOOST_ASSIGN_V2_CHECK( get<0>( tri_state.front() ) == nj );
+            BOOST_ASSIGN_V2_CHECK( get<0>( tri_state.back()  ) == nj );
+            BOOST_ASSIGN_V2_CHECK( get<1>( tri_state.front() ) == 201 );
+            BOOST_ASSIGN_V2_CHECK( get<1>( tri_state.back()  ) == 551 );
             //]
-            BOOST_ASSIGN_V2_CHECK( &get<0>( cont[1] ) == &e );
-            BOOST_ASSIGN_V2_CHECK( &get<0>( cont[2] ) == &log2 );
         }
     }// test()
 
Modified: sandbox/assign_v2/libs/assign/v2/test/put/container/range.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/container/range.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/container/range.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -7,10 +7,11 @@
 //  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 <deque>
 #include <stack>
 #include <vector>
+#include <deque>
 #include <boost/array.hpp>
+#include <boost/tuple/tuple.hpp>
 #include <boost/assign/v2/detail/config/check.hpp>
 #include <boost/assign/v2/put/container/range.hpp>
 #include <libs/assign/v2/test/put/container/range.h>
@@ -24,36 +25,29 @@
     {
         namespace as2 = boost::assign::v2;
 
-        //[range_var
-        //]
-        // Forwards to put()
-        {
-            //[put_cont_range_array
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::vector<T> r( 3 ); r[0] = x; r[1] = y; r[2] = z;
-            boost::array<T, 3> cont; as2::put_range( cont, r );
-
-            BOOST_ASSIGN_V2_CHECK( cont.front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
-            //]
-        }
-        {
-            //[put_cont_range_stack
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::vector<T> r( 3 ); r[0] = x; r[1] = y; r[2] = z;
-            typedef std::stack<T> lifo_;
-
-            BOOST_ASSIGN_V2_CHECK( as2::put_range<lifo_>( r ).top() == z );
-            //]
-        }
+            //[range_assign
+            typedef const char state_ [3]; state_ ct = "CT", nj = "NJ", ny = "NY", ca = "CA", ore = "OR", wa = "WA";
+            typedef int code_; typedef boost::tuple<state_/*<<Notice the reference>>*/&,  code_> area_code_; 
+            std::deque< area_code_ > tri_state; as2::put( tri_state )( nj, 201 )( ct, 203 )( ny, 212 )( ny, 315 )( ny, 347 )( nj, 551 );
+            std::deque< area_code_ > pacific ; as2::put( pacific )( wa, 206 )( ca, 209 )( ca, 213 )( wa, 253 );
+
+			std::deque< area_code_ > states; 
+            as2::put_range( tri_state, states );
+            as2::put_range( pacific, states );
+
+			using namespace boost;
+            BOOST_ASSIGN_V2_CHECK( get<0>( states.front()                                 )  == nj );
+            BOOST_ASSIGN_V2_CHECK( get<0>( states[tri_state.size()-1]                     )  == nj );
+            BOOST_ASSIGN_V2_CHECK( get<0>( states.front()                                 )  == nj );
+            BOOST_ASSIGN_V2_CHECK( get<0>( states[tri_state.size()]                       )  == wa );
+            BOOST_ASSIGN_V2_CHECK( get<0>( states[tri_state.size() + pacific.size() - 1 ] ) == wa );
+			//]
         {
-            //[put_cont_range_deque
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::vector<T> r( 3 ); r[0] = x; r[1] = y; r[2] = z;
-            std::deque<T> cont; as2::put_range( cont, r );
+            //[range_constr
+            std::vector<int> r( 3 ); r[0] = 72; r[1] = 31; r[2] = 48;
+            typedef std::stack<int> lifo_;
 
-            BOOST_ASSIGN_V2_CHECK( cont.front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
+            BOOST_ASSIGN_V2_CHECK( as2::put_range<lifo_>( r ).top() == 48 );
             //]
         }
     }
Modified: sandbox/assign_v2/libs/assign/v2/test/put/deduce.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/deduce.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/deduce.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -44,7 +44,7 @@
             as2::put_aux::check_deduce<boost::ptr_vector<int>, answer_>();
         }
         {
-            typedef as2::modifier_tag::iterate answer_;
+            typedef as2::modifier_tag::iterate<> answer_;
             as2::put_aux::check_deduce<boost::array<int, 1>, answer_>();
             as2::put_aux::check_deduce<boost::ptr_array<int, 1>, answer_>();
         }
Modified: sandbox/assign_v2/libs/assign/v2/test/put/deque.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/deque.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/deque.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -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)      //
 ////////////////////////////////////////////////////////////////////////////
+#include <libs/assign/v2/test/put/deque/csv.h>
 #include <libs/assign/v2/test/put/deque/functor.h>
 #include <libs/assign/v2/test/put/deque.h>
 
@@ -16,6 +17,7 @@
 
     void test()
     {
+        xxx_csv::test();
         xxx_functor::test();
     }
 
Modified: sandbox/assign_v2/libs/assign/v2/test/put/deque/csv.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/deque/csv.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/deque/csv.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -23,17 +23,26 @@
         namespace as2 = boost::assign::v2;
         {
             //[csv_deque
-            typedef int T; T x = 1, y = 2, z = 0;
-            as2::result_of::deque<T>::type cont = as2::csv_deque( x, y, z );
-            BOOST_ASSIGN_V2_CHECK( cont.front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
+            typedef as2::result_of::csv_deque<int>::type C;
+            {
+            	C cont = as2::csv_deque( 72, 31, 48 );
+
+            	BOOST_ASSIGN_V2_CHECK( cont.front() == 72 );
+            	BOOST_ASSIGN_V2_CHECK( cont.back() == 48 );
+            }
+            {
+            	C cont = as2::csv_deque( 72, 31 )/* This oddity is possible due to `result_of::csv_deque<int>::type == result_of::deque<int>::type`*/( 48 );
+            
+            	BOOST_ASSIGN_V2_CHECK( cont.front() == 72 );
+            	BOOST_ASSIGN_V2_CHECK( cont.back() == 48 );
+			}
             //]
         }
         {
-            //[deque_str
+            //[csv_deque_str
             typedef std::string str_;
             BOOST_ASSIGN_V2_CHECK(
-                str_( as2::csv_deque( "x" )( "y" )( "z" )[1] ) == "y"
+                str_( as2::csv_deque( "x", "y", "z" )[1] ) == "y"
             );
             //]
         }
Modified: sandbox/assign_v2/libs/assign/v2/test/put/deque/functor.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/deque/functor.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/deque/functor.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -8,6 +8,8 @@
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)      //
 ////////////////////////////////////////////////////////////////////////////
 #include <string>
+#include <boost/array.hpp>
+#include <boost/tuple/tuple.hpp>
 #include <boost/assign/v2/put/deque/csv.hpp>
 #include <boost/assign/v2/put/deque/functor.hpp>
 #include <boost/assign/v2/detail/config/check.hpp>
@@ -23,15 +25,22 @@
     {
         namespace as2 = boost::assign::v2;    
         {
-            //[put_deque_functor
-            typedef int T; T x = 1, z = 0;
-            as2::result_of::deque<T>::type cont = as2::deque<T>/*<<T( x ), T(), T( z )>>*/( x )()( z );
-
-            BOOST_ASSIGN_V2_CHECK( cont.front() == x ); T t1 = T();
-            BOOST_ASSIGN_V2_CHECK( cont[1] == t1 );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
+            //[deque_ref_tuple
+            typedef const char state_ [3]; state_ ct = "CT", nj = "NJ", ny = "NY";
+            typedef int code_; typedef boost::tuple<state_/*<<Notice the reference>>*/&,  code_> area_code_; 
+            typedef as2::result_of::deque<area_code_>::type states_;
+            states_ tri_state = as2::deque<area_code_>( nj, 201 )( ct, 203 )( ny, 212 );
+
+			using namespace boost;
+            BOOST_ASSIGN_V2_CHECK( get<0>( tri_state.front() ) == nj );
+            BOOST_ASSIGN_V2_CHECK( get<1>( tri_state.front() ) == 201 );
+
+			states_ tri_state2 = tri_state( ny, 315 )( ny, 347 )( nj, 551 );
+
+            BOOST_ASSIGN_V2_CHECK( get<0>( tri_state2.back()  ) == nj );
+            BOOST_ASSIGN_V2_CHECK( get<1>( tri_state2.back()  ) == 551 );
             //]
-        }
+		}
         {
                 //[deque_str
             typedef std::string str_;
Modified: sandbox/assign_v2/libs/assign/v2/test/put/modulo.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/modulo.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/modulo.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -8,8 +8,7 @@
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
 //////////////////////////////////////////////////////////////////////////////
 #include <libs/assign/v2/test/put/modulo/fun.h>
-#include <libs/assign/v2/test/put/modulo/std.h>
-#include <libs/assign/v2/test/put/modulo/ext.h>
+#include <libs/assign/v2/test/put/modulo.h>
 
 namespace test_assign_v2{
 namespace xxx_put{
@@ -18,8 +17,6 @@
     void test()
     {
         xxx_fun::test();
-        xxx_std::test();
-        xxx_ext::test();
     }
 
 }// xxx_modulo
Modified: sandbox/assign_v2/libs/assign/v2/test/put/modulo/ext.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/modulo/ext.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/modulo/ext.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -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)        //
-//////////////////////////////////////////////////////////////////////////////
-#include <vector>
-#include <map>
-#include <stack>
-#include <boost/typeof/typeof.hpp>
-#include <boost/lambda/lambda.hpp>
-#include <boost/array.hpp>
-#include <boost/assign/v2/detail/config/check.hpp>
-#include <boost/assign/v2/put/ext.hpp>
-#include <boost/assign/v2/put/container/functor.hpp>
-#include <boost/assign/v2/put/deque/functor.hpp>
-#include <libs/assign/v2/test/put/modulo/ext.h>
-
-namespace test_assign_v2{
-namespace xxx_put{
-namespace xxx_modulo{
-namespace xxx_ext{
-
-    void test()
-    {
-        namespace as2 = boost::assign::v2;
-        namespace lambda = boost::lambda;
-        {
-            //[put_ext_iterate
-            typedef int T; boost::array<T, 3> cont; cont[0] = -1;
-            ( as2::put( cont ) % ( as2::_iterate = 1 ) )( 0 )( 1 );
-
-            BOOST_ASSIGN_V2_CHECK( cont[0] == -1 );
-            BOOST_ASSIGN_V2_CHECK( cont[1] == 0 );
-            BOOST_ASSIGN_V2_CHECK( cont[2] == 1 );
-            //]
-        }
-        {
-            //[put_ext_lookup
-            std::map<std::string, int> cont;
-            cont["jan"] = 31; cont["feb"] = 29; cont["mar"] = 32;
-            (
-                as2::put( cont ) % ( as2::_lookup = ( lambda::_1 -= 1 ) )
-            )( "feb" )( "mar" );
-
-            BOOST_ASSIGN_V2_CHECK( cont["feb"] == 28 );
-            BOOST_ASSIGN_V2_CHECK( cont["mar"] == 31 );
-            //]
-        }
-        {
-            //[put_ext_repeat
-            std::vector<int> cont;
-            ( as2::put( cont ) % ( as2::_repeat = 2  ) )( -1 )( 0 )( 1 );
-
-            BOOST_ASSIGN_V2_CHECK( cont.size() == 6 );
-            BOOST_ASSIGN_V2_CHECK( cont.front() == -1 );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == 1 );
-            //]
-        }
-        {
-            //[put_deque_modulo_repeat
-            BOOST_AUTO(
-                cont,  (
-                    as2::deque<int>( as2::_nil ) % ( as2::_repeat = 2 )
-                )( -1 )( 0 )( 1 )
-            );
-            BOOST_ASSIGN_V2_CHECK( boost::size( cont ) == 6 );
-            //]
-            BOOST_ASSIGN_V2_CHECK( cont.front() == -1 );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == 1 );
-        }
-
-    }
-
-}// xxx_ext
-}// xxx_modulo
-}// xxx_put
-}// test_assign_v2
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/libs/assign/v2/test/put/modulo/ext.h
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/modulo/ext.h	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/modulo/ext.h	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,25 +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 LIBS_ASSIGN_V2_TEST_PUT_MODULO_EXT_ER_2010_H
-#define LIBS_ASSIGN_V2_TEST_PUT_MODULO_EXT_ER_2010_H
-
-namespace test_assign_v2{
-namespace xxx_put{
-namespace xxx_modulo{
-namespace xxx_ext{
-
-    void test();
-
-}// xxx_ext
-}// xxx_modulos
-}// xxx_put
-}// xxx_test_assign
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/libs/assign/v2/test/put/modulo/fun.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/modulo/fun.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/modulo/fun.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -10,7 +10,7 @@
 #include <vector>
 #include <deque>
 #include <boost/typeof/typeof.hpp>
-#include <boost/lambda/lambda.hpp>
+#include <boost/spirit/home/phoenix.hpp>
 #include <boost/assign/v2/detail/config/check.hpp>
 #include <boost/assign/v2/put/container.hpp>
 #include <boost/assign/v2/put/deque.hpp>
@@ -22,48 +22,71 @@
 namespace xxx_modulo{
 namespace xxx_fun{
 
+#ifdef __llvm__ 
+
+    struct f{
+        
+        typedef int result_type;
+        
+        template<typename T>
+        result_type operator()(T const& i)const{ return i + 1; };
+        
+    };
+    
     void test()
     {
         namespace as2 = boost::assign::v2;
-        namespace lambda = boost::lambda;
         {
-            //[put_cont_modulo_fun
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::vector<int> cont;
+            std::vector<int> incr_fact;
+            (
+             as2::put( cont ) % ( as2::_fun = f() )
+             )( 1 )( 2 )( 6 )( 24 )( 120 ); 
+            
+            BOOST_ASSIGN_V2_CHECK( incr_fact.front() == ( 2 ) );
+            BOOST_ASSIGN_V2_CHECK( incr_fact.back() == ( 121 ) );
+            // TODO fix Bug :
+            // LLVM 1.5 - Release mode, EXC_BAD_ACCESS, stl_vector.h #602
+        }        
+        
+    }
+    
+#else
 
-            // TODO fix BUG >
+    void test()
+    {
+        namespace as2 = boost::assign::v2;
+        namespace lambda = boost::phoenix;
+        {
+            //[modulo_fun
+            std::vector<int> incr_fact;
             (
-                as2::put( cont ) % ( as2::_fun = ( lambda::_1 + 1 ) )
-            )( x )( y )( z ); 
-            // < LLVM 1.5 - Release mode, EXC_BAD_ACCESS, stl_vector.h #602
-            // not for only ( x )!
+            	as2::put( incr_fact ) % ( as2::_fun = lambda::arg_names::arg1 + 1 )
+            )/*<<1!, 2!, 3!, 4!, 5!>>*/( 1 )( 2 )( 6 )( 24 )( 120 ); 
 
-            //BOOST_ASSIGN_V2_CHECK( cont.front() == ( x + 1 ) );
-            //BOOST_ASSIGN_V2_CHECK( cont.back() == ( z + 1 ) );
+            BOOST_ASSIGN_V2_CHECK( incr_fact.front() == ( 2 ) );
+            BOOST_ASSIGN_V2_CHECK( incr_fact.back() == ( 121 ) );
             //]
         }
-        
-// TODO uncomment when bug above is fixed
-/*        
         {
-            //[put_deque_modulo_fun
-            typedef int T; T x = 1, y = 2, z = 0;
+            //[modulo_fun_deque
             BOOST_AUTO(
-                cont, (
-                    as2::deque<T>( as2::_nil ) % (
-                        as2::_fun = ( lambda::_1 + 1 )
+                incr_fact, (
+                    as2::deque<int>( as2::_nil ) % (
+                        as2::_fun = ( lambda::arg_names::arg1 + 1 )
                     )
-                )( x )( y )( z )
+                )/*<<1!, 2!, 3!, 4!, 5!>>*/( 1 )( 2 )( 6 )( 24 )( 120 )
             );
 
-            BOOST_ASSIGN_V2_CHECK( cont.front() == ( x + 1 ) );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == ( z + 1 ) );
+            BOOST_ASSIGN_V2_CHECK( incr_fact.front() == ( 2 ) );
+            BOOST_ASSIGN_V2_CHECK( incr_fact.back() == ( 121 ) );
             //]
         }
- */
 
     }
 
+#endif
+
+
 }// xxx_fun
 }// xxx_modulo
 }// xxx_put
Modified: sandbox/assign_v2/libs/assign/v2/test/put/modulo/std.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/modulo/std.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/modulo/std.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,94 +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)        //
-//////////////////////////////////////////////////////////////////////////////
-#include <deque>
-#include <list>
-#include <queue>
-#include <set>
-#include <stack>
-#include <string>
-#include <boost/typeof/typeof.hpp>
-#include <boost/lambda/lambda.hpp>
-#include <boost/assign/v2/detail/config/check.hpp>
-#include <boost/assign/v2/put/std.hpp>
-#include <boost/assign/v2/put/container/functor.hpp>
-#include <boost/assign/v2/put/deque/functor.hpp>
-#include <libs/assign/v2/test/put/modulo/std.h>
-
-namespace test_assign_v2{
-namespace xxx_put{
-namespace xxx_modulo{
-namespace xxx_std{
-
-    void test()
-    {
-        namespace as2 = boost::assign::v2;
-
-        /* Only have to check those that are in /std which are not in
-        /deduce/dependee.hpp */
-
-        {
-            //[put_std_push_front
-            typedef int T; T x = 1, y = 2, z = 0; std::deque<T> cont;
-            ( as2::put( cont ) % as2::_push_front )( z )( y )( x );
-            BOOST_ASSIGN_V2_CHECK( cont[0] == x );
-            BOOST_ASSIGN_V2_CHECK( cont[2] == z );
-            //]
-        }
-        {
-            //[put_std_push
-            typedef int T; T x = 8, y = 7, z = 4;
-            typedef std::queue<T> cont_;
-            cont_ fifo; ( as2::put( fifo ) % as2::_push )( x )( y )( z );
-                
-            BOOST_ASSIGN_V2_CHECK( fifo.front() == x );
-            BOOST_ASSIGN_V2_CHECK( fifo.back() == z );
-
-            //]
-        }
-        {
-            //[put_std_insert
-            typedef std::string T; std::set<T> cont;
-            T x = "isomer", y = "ephemeral", z = "prosaic";
-            ( as2::put( cont ) % as2::_insert )( x )( y )( z );
-        
-            BOOST_ASSIGN_V2_CHECK( cont.count( x ) == 1 );
-            BOOST_ASSIGN_V2_CHECK( cont.count( z ) == 1 );
-            //]
-        }
-        {
-            // Lunar eclipse years falling on winter solstice
-            //[put_std_push_back
-            typedef int T; T x = 1638, y = 2010, z = 2094; 
-            std::list<T> cont; ( as2::put( cont ) % as2::_push_back )( x )( y )( z );
-                
-            BOOST_ASSIGN_V2_CHECK( cont.front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
-            //]
-        }
-        {
-            typedef int T; T x = 1, y = 2, z = 0;
-            //[put_deque_std_front
-            BOOST_AUTO(
-                cont,
-                (
-                    as2::deque<T>( as2::_nil ) % as2::_push_front
-                )( x )( y )( z )
-            );
-            BOOST_ASSIGN_V2_CHECK( cont[0] == z );
-            BOOST_ASSIGN_V2_CHECK( cont[2] == x );
-            //]
-        }
-
-    }
-
-}// xxx_std
-}// xxx_modulo
-}// xxx_put
-}// test_assign_v2
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/libs/assign/v2/test/put/modulo/std.h
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/modulo/std.h	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/modulo/std.h	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,25 +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 LIBS_ASSIGN_V2_TEST_PUT_MODULO_STD_ER_2010_H
-#define LIBS_ASSIGN_V2_TEST_PUT_MODULO_STD_ER_2010_H
-
-namespace test_assign_v2{
-namespace xxx_put{
-namespace xxx_modulo{
-namespace xxx_std{
-
-    void test();
-
-}// xxx_std
-}// xxx_modulo
-}// xxx_put
-}// xxx_test_assign
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -8,7 +8,7 @@
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
 //////////////////////////////////////////////////////////////////////////////
 #include <libs/assign/v2/test/put/pipe/functor.h>
-#include <libs/assign/v2/test/put/pipe/container.h>
+#include <libs/assign/v2/test/put/pipe/modifier.h>
 #include <libs/assign/v2/test/put/pipe/modulo.h>
 #include <libs/assign/v2/test/put/pipe/range.h>
 #include <libs/assign/v2/test/put/pipe.h>
@@ -19,7 +19,7 @@
 
     void test(){
         xxx_functor::test();
-        xxx_container::test();
+        xxx_modifier::test();
         xxx_modulo::test();
         xxx_range::test();
     }
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/container.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/container.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/container.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,136 +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)        //
-//////////////////////////////////////////////////////////////////////////////
-#include <boost/array.hpp>
-#include <deque>
-#include <list>
-#include <map>
-#include <queue>
-#include <set>
-#include <stack>
-#include <vector>
-#include <string>
-#include <boost/assign/v2/detail/config/check.hpp>
-#include <boost/assign/v2/put/pipe/functor.hpp>
-#include <boost/assign/v2/put/pipe/csv.hpp> // Until workaround
-
-#include <libs/assign/v2/test/put/pipe/container.h>
-
-namespace test_assign_v2{
-namespace xxx_put{
-namespace xxx_pipe{
-namespace xxx_container{ // either functor or csv
-
-    void test(){
-        namespace as2 = boost::assign::v2;
-        {
-            //[put_pipe_functor_array
-            typedef int T;
-            T x = 1, y = 2, z = 3;
-            boost::array<T, 3> cont;
-            BOOST_ASSIGN_V2_CHECK(
-                ( cont | as2::_put( x )( y )( z ) )[0] == x
-            );
-            BOOST_ASSIGN_V2_CHECK( cont[2] == z );
-            //]
-        }
-        {
-            //[put_pipe_csv_array
-            typedef int T;
-            T x = 1, y = 2, z = 3;
-            boost::array<T, 3> cont;
-            BOOST_ASSIGN_V2_CHECK(
-                ( cont | as2::_csv_put( x, y, z ) )[0] == x
-            );
-            BOOST_ASSIGN_V2_CHECK( cont[2] == z );
-            //]
-        }
-        {
-            //[put_pipe_functor_map
-            std::map<std::string, int> assoc;
-            BOOST_ASSIGN_V2_CHECK(
-                (
-                    assoc | as2::_put( "jan", 31 )( "feb", 28 )( "mar", 31 )( "apr", 30)
-                )["feb"] == 28
-            );
-            //]
-        }
-        {
-            //[put_pipe_functor_set
-            typedef std::string T;
-            std::set<T> assoc;
-            T x = "isomer", y = "ephemeral", z = "prosaic";
-            BOOST_ASSIGN_V2_CHECK(
-                ( assoc | as2::_put( x )( y )( z ) ).count( x ) == 1
-            );
-            BOOST_ASSIGN_V2_CHECK( assoc.count( z ) == 1 );
-            //]
-        }
-        {
-            //[put_pipe_functor_deque
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::deque<T> cont;
-            BOOST_ASSIGN_V2_CHECK((
-                    cont | as2::_put( x )( y )( z )
-                ).front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
-            //]
-        }
-        {
-            //[put_pipe_functor_list
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::list<T> cont;
-            BOOST_ASSIGN_V2_CHECK(
-                (
-                    cont | as2::_put( x )( y )( z )
-                ).front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
-            //]
-        }
-        {
-            //[put_pipe_functor_vector
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::vector<T> cont;
-            BOOST_ASSIGN_V2_CHECK(
-                (
-                    cont | as2::_put( x )( y )( z )
-                ).front() == x
-            );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
-            //]
-        }
-        {
-            //[put_pipe_functor_queue
-            typedef int T; T x = 8, y = 7, z = 6;
-            std::queue<T> fifo;
-            BOOST_ASSIGN_V2_CHECK(
-                (
-                    fifo | as2::_put( x )( y )( z )
-                ).front() == x
-            );
-            BOOST_ASSIGN_V2_CHECK( fifo.back() == z );
-            //]
-        }
-        {
-            //[put_pipe_functor_stack
-            typedef int T; T x = 8, y = 7, z = 4;
-            std::stack<T> lifo;
-            BOOST_ASSIGN_V2_CHECK(
-                (
-                    lifo | as2::_put( x )( y )( z )
-                ).top() == z ); lifo.pop();
-            BOOST_ASSIGN_V2_CHECK( lifo.top() == y );
-            //]
-        }
-    }// test()
-
-}// xxx_container
-}// xxx_pipe
-}// xxx_put
-}// xxx_test_assign
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/container.h
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/container.h	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/container.h	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,25 +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 LIBS_ASSIGN_V2_TEST_PUT_PIPE_CONTAINER_ER_2010_H
-#define LIBS_ASSIGN_V2_TEST_PUT_PIPE_CONTAINER_ER_2010_H
-
-namespace test_assign_v2{
-namespace xxx_put{
-namespace xxx_pipe{
-namespace xxx_container{
-
-    void test();
-
-}// xxx_container
-}// xxx_pipe
-}// xxx_put
-}// xxx_test_assign
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -7,7 +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)        //
 //////////////////////////////////////////////////////////////////////////////
-#include <libs/assign/v2/test/put/pipe/functor/forward.h>
 #include <libs/assign/v2/test/put/pipe/functor/rhs.h>
 #include <libs/assign/v2/test/put/pipe/functor/str_literal.h>
 #include <libs/assign/v2/test/put/pipe/functor.h>
@@ -18,7 +17,6 @@
 namespace xxx_functor{
 
     void test(){
-        xxx_forward::test();
         xxx_rhs::test();
         xxx_str_literal::test();
     }
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/forward.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/forward.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/forward.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,56 +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)        //
-//////////////////////////////////////////////////////////////////////////////
-#include <deque>
-#include <vector>
-#include <string>
-#include <boost/assign/v2/detail/config/check.hpp>
-#include <boost/assign/v2/ref/list_tuple/container.hpp>
-#include <boost/assign/v2/put/container/functor.hpp>
-#include <boost/assign/v2/put/pipe/functor/forward.hpp>
-#include <libs/assign/v2/test/put/pipe/functor/forward.h>
-
-namespace test_assign_v2{
-namespace xxx_put{
-namespace xxx_pipe{
-namespace xxx_functor{
-namespace xxx_forward{
-
-    void test()
-    {
-        namespace as2 = boost::assign::v2;
-        namespace ppx = as2::put_pipe_aux;
-        {
-            typedef int T;
-            T x = 1, y = 2, z = 0;
-            typedef std::vector<T> C; C cont;
-            typedef as2::result_of::put<C>::type adapter_;
-            adapter_ adapter = as2::put( cont );
-            ppx::forward( adapter, as2::ref::list_tuple( x )( y )( z )() );
-            BOOST_ASSIGN_V2_CHECK( cont[0] == x );
-            BOOST_ASSIGN_V2_CHECK( cont[1] == y );
-            BOOST_ASSIGN_V2_CHECK( cont[2] == z );
-            BOOST_ASSIGN_V2_CHECK( cont.size() == 4 );
-        }
-        {
-            typedef const char* T;
-            typedef std::deque<T> C; C cont;
-            typedef as2::result_of::put<C>::type adapter_;
-            adapter_ adapter = as2::put( cont );
-            ppx::forward( adapter, as2::ref::list_tuple( "x" ) );
-            typedef std::string str_;
-            BOOST_ASSIGN_V2_CHECK( str_( cont[0] ) == "x" );
-        }
-    }
-
-}// xxx_forward
-}// xxx_functor
-}// xxx_pipe
-}// xxx_put
-}// test_assign_v2
+// TODO remove file
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/forward.h
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/forward.h	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/forward.h	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,28 +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 LIBS_ASSIGN_V2_PUT_PIPE_FUNCTOR_FORWARD_ER_2010_H
-#define LIBS_ASSIGN_V2_PUT_PIPE_FUNCTOR_FORWARD_ER_2010_H
-
-namespace test_assign_v2{
-namespace xxx_put{
-namespace xxx_pipe{
-namespace xxx_functor{
-namespace xxx_forward{
-
-    void test();
-
-}// xxx_forward
-}// xxx_functor
-}// xxx_pipe
-}// xxx_put
-}// xxx_test_assign
-
-
-#endif // LIBS_ASSIGN_V2_PUT_FUNCTOR_FORWARD_H
+// TODO remove file
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/rhs.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/rhs.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/functor/rhs.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -12,7 +12,7 @@
 #include <boost/typeof/typeof.hpp>
 #include <boost/assign/v2/detail/check/equal_val.hpp>
 #include <boost/assign/v2/detail/check/equal_ref.hpp>
-#include <boost/assign/v2/put/ext/repeat.hpp>
+#include <boost/assign/v2/put/modifier/repeat.hpp>
 #include <boost/assign/v2/put/pipe/functor.hpp> // rhs?
 #include <boost/assign/v2/utility/csv.hpp>
 #include <libs/assign/v2/test/put/pipe/functor/rhs.h>
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -7,17 +7,8 @@
 //  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 <list>
-#include <boost/mpl/vector/vector10.hpp>
-#include <boost/assign/v2/detail/functor/identity.hpp>
-#include <boost/assign/v2/detail/config/check.hpp>
-#include <boost/assign/v2/put/std/push_front.hpp>
-#include <boost/assign/v2/put/container.hpp>
-#include <boost/assign/v2/put/modulo/fun.hpp>
-#include <boost/assign/v2/put/modulo/std.hpp>
-#include <boost/assign/v2/put/pipe/functor.hpp>
-#include <boost/assign/v2/put/pipe/modulo/forward.hpp>
-
+#include <libs/assign/v2/test/put/pipe/modulo/fun.h>
+#include <libs/assign/v2/test/put/pipe/modulo/forward.h>
 #include <libs/assign/v2/test/put/pipe/modulo.h>
 
 namespace test_assign_v2{
@@ -27,27 +18,8 @@
 
     void test()
     {
-        using namespace  boost::assign::v2;
-        typedef std::list<int> C; C cont;
-        typedef modifier_tag::push_front modifier_tag_;
-        typedef functor_aux::identity identity_;
-        typedef put_aux::modulo_fun<identity_> fun_;
-        typedef put_aux::modulo_std<modifier_tag_> modifier_;
-        typedef boost::mpl::vector2<fun_, modifier_> pars_;
-        typedef int T;
-        T x = 1, y = 2, z = 3;
-        put_pipe_aux::forward_pars<pars_>(
-            put( cont ),
-            (
-                _put %  (
-                    _fun = _identity
-                ) % ( _std = modifier_tag_() )
-            ).pars()
-        )( x )( y )( z );
-        BOOST_ASSIGN_V2_CHECK( cont.size() == 3 );
-        BOOST_ASSIGN_V2_CHECK( cont.front() == z ); cont.pop_front();
-        BOOST_ASSIGN_V2_CHECK( cont.front() == y ); cont.pop_front();
-        BOOST_ASSIGN_V2_CHECK( cont.front() == x ); cont.pop_front();
+		xxx_fun::test();
+		xxx_forward::test();
     }
 
 }// xxx_modulo
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/forward.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/forward.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/forward.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -11,10 +11,9 @@
 #include <boost/mpl/vector/vector10.hpp>
 #include <boost/assign/v2/detail/functor/identity.hpp>
 #include <boost/assign/v2/detail/config/check.hpp>
-#include <boost/assign/v2/put/std/push_front.hpp>
 #include <boost/assign/v2/put/container.hpp>
 #include <boost/assign/v2/put/modulo/fun.hpp>
-#include <boost/assign/v2/put/modulo/std.hpp>
+#include <boost/assign/v2/put/modifier/push_front.hpp>
 #include <boost/assign/v2/put/pipe/functor.hpp>
 #include <boost/assign/v2/put/pipe/modulo/forward.hpp>
 
@@ -28,27 +27,25 @@
 
     void test()
     {
-        using namespace  boost::assign::v2;
-        typedef std::list<int> C; C cont;
-        typedef modifier_tag::push_front modifier_tag_;
-        typedef functor_aux::identity identity_;
-        typedef put_aux::modulo_fun<identity_> fun_;
-        typedef put_aux::modulo_std<modifier_tag_> modifier_;
-        typedef boost::mpl::vector2<fun_, modifier_> pars_;
-        typedef int T;
-        T x = 1, y = 2, z = 3;
-        put_pipe_aux::forward_pars<pars_>(
-            put( cont ),
-            (
-                _put %  (
-                    _fun = _identity
-                ) % ( _std = modifier_tag_() )
-            ).pars()
-        )( x )( y )( z );
+        namespace as2 = boost::assign::v2;
+        typedef int T; typedef std::list<T> C; C cont;
+        
+        typedef as2::functor_aux::identity f_;
+        typedef as2::put_aux::modulo_fun<f_> par1_;
+        typedef as2::put_aux::modulo_modifier<
+        	as2::put_aux::keyword_modifier, 
+            as2::modifier_tag::push_front
+        > par2_;
+        typedef ::boost::mpl::vector2<par1_, par2_> pars_;
+        
+        as2::put_pipe_aux::forward_pars<pars_>(
+            as2::put( cont ),
+            ( as2::_put %  ( as2::_fun = as2::_identity ) % ( as2::_push_front ) ).pars()
+        )( 1 )( 2 )( 3 );
         BOOST_ASSIGN_V2_CHECK( cont.size() == 3 );
-        BOOST_ASSIGN_V2_CHECK( cont.front() == z ); cont.pop_front();
-        BOOST_ASSIGN_V2_CHECK( cont.front() == y ); cont.pop_front();
-        BOOST_ASSIGN_V2_CHECK( cont.front() == x ); cont.pop_front();
+        BOOST_ASSIGN_V2_CHECK( cont.front() == 3 ); cont.pop_front();
+        BOOST_ASSIGN_V2_CHECK( cont.front() == 2 ); cont.pop_front();
+        BOOST_ASSIGN_V2_CHECK( cont.front() == 1 ); cont.pop_front();
     }
 
 }// xxx_forward
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/fun.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/fun.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/fun.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -8,7 +8,7 @@
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
 //////////////////////////////////////////////////////////////////////////////
 #include <vector>
-#include <boost/lambda/lambda.hpp>
+#include <boost/spirit/home/phoenix.hpp>
 #include <boost/assign/v2/detail/config/check.hpp>
 #include <boost/assign/v2/put/modulo/fun.hpp>
 #include <boost/assign/v2/put/pipe/functor.hpp>
@@ -24,31 +24,29 @@
     void test()
     {
         namespace as2 = boost::assign::v2;
-        namespace lambda = boost::lambda;
+        namespace lambda = boost::phoenix;
         {
-            //[put_pipe_functor_fun
-            typedef int T; T x = 1, y = 2, z = 0; std::vector<T> cont;
-
-            BOOST_ASSIGN_V2_CHECK(
-                (
-                    cont | (
-                        as2::_put % ( as2::_fun = ( lambda::_1 + 1 ) )
-                    )( x )( y )( z )
-                ).front() == ( x + 1 ) );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == ( z + 1 ) );
+            //[pipe_modulo_fun
+            typedef int int_; std::vector<int_> incr_fact;
+            int_ front = ( 
+            	incr_fact | ( as2::_put % ( as2::_fun = lambda::arg_names::arg1 + 1 ) )/*<<1!, 2!, 3!, 4!, 5!>>*/( 1 )( 2 )( 6 )( 24 )( 120 ) 
+            ).front(); 
+		
+            BOOST_ASSIGN_V2_CHECK( front == 2  );
+            BOOST_ASSIGN_V2_CHECK( incr_fact.back() == 121 );
             //]
         }
         {
-            //[put_pipe_csv_fun
-            typedef int T; T x = 1, y = 2, z = 0; std::vector<T> cont;
-            BOOST_ASSIGN_V2_CHECK(
-                (
-                    cont | ( as2::_csv_put % ( as2::_fun = ( lambda::_1 + 1 ) )
-                )( x, y, z ) ).front() == ( x + 1 )
-            );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == ( z + 1 ) );
+            //[csv_pipe_modulo_fun
+            typedef int int_; std::vector<int_> incr_fact;
+            int_ front = ( 
+            	incr_fact | ( as2::_csv_put % ( as2::_fun = lambda::arg_names::arg1 + 1 ) )/*<<1!, 2!, 3!, 4!, 5!>>*/( 1, 2, 6, 24, 120 ) 
+            ).front(); 
+		
+            BOOST_ASSIGN_V2_CHECK( front == 2 );
+            BOOST_ASSIGN_V2_CHECK( incr_fact.back() == 121 );
             //]
-        }
+		}
     }
 
 }// xxx_fun
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/std.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/std.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/std.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,54 +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)        //
-//////////////////////////////////////////////////////////////////////////////
-#include <deque>
-#include <boost/lambda/lambda.hpp>
-#include <boost/assign/v2/detail/config/check.hpp>
-#include <boost/assign/v2/put/std/push_front.hpp>
-#include <boost/assign/v2/put/pipe/functor.hpp>
-#include <boost/assign/v2/put/pipe/csv.hpp>
-#include <libs/assign/v2/test/put/pipe/modulo/std.h>
-
-namespace test_assign_v2{
-namespace xxx_put{
-namespace xxx_pipe{
-namespace xxx_modulo{
-namespace xxx_std{
-
-    void test()
-    {
-        namespace as2 = boost::assign::v2;
-        namespace lambda = boost::lambda;
-        {
-            //[put_pipe_functor_push_front
-            typedef int T; T x = 1, y = 2, z = 0; std::deque<int> cont;
-            BOOST_ASSIGN_V2_CHECK(
-                (
-                    cont | ( as2::_put %  as2::_push_front )( x )( y )( z )
-                ).front() == z
-            );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == x );
-            //]
-        }
-        {
-            //[put_pipe_csv_push_front
-            typedef int T; T x = 1, y = 2, z = 0; std::deque<int> cont;
-            BOOST_ASSIGN_V2_CHECK(
-                ( cont | ( as2::_csv_put %  as2::_push_front )( x, y, z )
-            ).front() == z );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == x );
-            //]
-        }
-    }
-
-}// xxx_std
-}// xxx_modulo
-}// xxx_pipe
-}// xxx_put
-}// test_assign_v2
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/std.h
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/std.h	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/modulo/std.h	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -1,27 +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 LIBS_ASSIGN_V2_TEST_PUT_PIPE_MODULO_STD_ER_2010_H
-#define LIBS_ASSIGN_V2_TEST_PUT_PIPE_MODULO_STD_ER_2010_H
-
-namespace test_assign_v2{
-namespace xxx_put{
-namespace xxx_pipe{
-namespace xxx_modulo{
-namespace xxx_std{
-
-    void test();
-
-}// xxx_std
-}// xxx_modulo
-}// xxx_pipe
-}// xxx_put
-}// xxx_test_assign
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/assign_v2/libs/assign/v2/test/put/pipe/range.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/pipe/range.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/pipe/range.cpp	2011-03-07 19:56:06 EST (Mon, 07 Mar 2011)
@@ -7,13 +7,13 @@
 //  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 <deque>
 #include <stack>
 #include <vector>
+#include <deque>
 #include <boost/array.hpp>
+#include <boost/tuple/tuple.hpp>
 #include <boost/assign/v2/detail/config/check.hpp>
 #include <boost/assign/v2/put/pipe/range.hpp>
-
 #include <libs/assign/v2/test/put/pipe/range.h>
 
 namespace test_assign_v2{
@@ -26,37 +26,32 @@
         namespace as2 = boost::assign::v2;
 
 
-        // Forwards to put()
         {
-            //[put_pipe_range_array
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::vector<T> r( 3 ); r[0] = x; r[1] = y; r[2] = z;
-            boost::array<T, 3> cont; 
-            BOOST_ASSIGN_V2_CHECK( ( 
-                cont | as2::_put_range( r ) 
-            ).front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
+            //[pipe_range_assign
+            typedef const char state_ [3]; state_ ct = "CT", nj = "NJ", ny = "NY", ca = "CA", /* ore = "OR",*/ wa = "WA";
+            typedef int code_; typedef boost::tuple<state_/*<<Notice the reference>>*/&,  code_> area_code_; 
+            std::deque< area_code_ > tri_state; as2::put( tri_state )( nj, 201 )( ct, 203 )( ny, 212 )( ny, 315 )( ny, 347 )( nj, 551 );
+            std::deque< area_code_ > pacific ; as2::put( pacific )( wa, 206 )( ca, 209 )( ca, 213 )( wa, 253 );
+
+			std::deque< area_code_ > states; states | as2::_put_range( tri_state ) | as2::_put_range( pacific );
+
+			using namespace boost;
+            BOOST_ASSIGN_V2_CHECK( get<0>( states.front()             ) == nj );
+            BOOST_ASSIGN_V2_CHECK( get<0>( states[tri_state.size()-1] ) == nj );
+            BOOST_ASSIGN_V2_CHECK( get<0>( states[tri_state.size()]   ) == wa );
+            BOOST_ASSIGN_V2_CHECK( get<0>( states.back()              ) == wa );
+            BOOST_ASSIGN_V2_CHECK( get<1>( states.front()             ) == 201 );
+            BOOST_ASSIGN_V2_CHECK( get<1>( states[tri_state.size()-1] ) == 551 );
+            BOOST_ASSIGN_V2_CHECK( get<1>( states[tri_state.size()]   ) == 206 );
+            BOOST_ASSIGN_V2_CHECK( get<1>( states.back()              ) == 253 );
             //]
         }
         {
-            //[put_pipe_range_stack
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::vector<T> r( 3 ); r[0] = x; r[1] = y; r[2] = z;
-            typedef std::stack<T> lifo_;
-            BOOST_ASSIGN_V2_CHECK(
-                (
-                    ::boost::type<lifo_>() | as2::_put_range( r )
-                ).top() == z
-            );
-            //]
-        }
-        {
-            //[put_pipe_range_deque
-            typedef int T; T x = 1, y = 2, z = 0;
-            std::vector<T> r( 3 ); r[0] = x; r[1] = y; r[2] = z;
-            std::deque<T> cont; cont | as2::_put_range( r );
-            BOOST_ASSIGN_V2_CHECK( cont.front() == x );
-            BOOST_ASSIGN_V2_CHECK( cont.back() == z );
+            //[pipe_range_constr
+            std::vector<int> r( 3 ); r[0] = 72; r[1] = 31; r[2] = 48;
+            typedef std::stack<int> lifo_;
+
+            BOOST_ASSIGN_V2_CHECK( ( ::boost::type<lifo_>() | as2::_put_range( r ) ).top() == 48 );
             //]
         }
     }