$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r70738 - in sandbox/assign_v2: boost/assign/v2/option/modifier libs/assign/v2/test/detail
From: erwann.rogard_at_[hidden]
Date: 2011-03-29 22:54:36
Author: e_r
Date: 2011-03-29 22:54:35 EDT (Tue, 29 Mar 2011)
New Revision: 70738
URL: http://svn.boost.org/trac/boost/changeset/70738
Log:
upd assign_v2
Text files modified: 
   sandbox/assign_v2/boost/assign/v2/option/modifier/insert.hpp  |    37 +++++++++++++++++----------------       
   sandbox/assign_v2/boost/assign/v2/option/modifier/iterate.hpp |    31 +++++++++++++--------------             
   sandbox/assign_v2/boost/assign/v2/option/modifier/mapped.hpp  |    21 ++++++++++---------                     
   sandbox/assign_v2/boost/assign/v2/option/modifier/repeat.hpp  |    22 +++++++++----------                     
   sandbox/assign_v2/boost/assign/v2/option/modifier/std.hpp     |    44 +++++++++++++++------------------------ 
   sandbox/assign_v2/libs/assign/v2/test/detail/traits.cpp       |     6 ++--                                    
   6 files changed, 75 insertions(+), 86 deletions(-)
Modified: sandbox/assign_v2/boost/assign/v2/option/modifier/insert.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/modifier/insert.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/option/modifier/insert.hpp	2011-03-29 22:54:35 EDT (Tue, 29 Mar 2011)
@@ -46,45 +46,46 @@
         interpreter_modifier( ignore_, ignore_ ){}
 
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
+#define BOOST_ASSIGN_V2_arg T&& t
+#define BOOST_ASSIGN_V2_forward std::forward<T>( t )
+#else
+#define BOOST_ASSIGN_V2_arg T& t
+#define BOOST_ASSIGN_V2_forward t
+#endif
 
         template<typename C, typename T>
-        void impl(C& cont, T&& t, data_tag::value )const
+        void impl(C& cont, BOOST_ASSIGN_V2_arg, data_tag::value )const
         {
-            cont.insert( std::forward<T>( t ) );
-        }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
-
-#else                    
-        template<typename C, typename T>
-        void impl(C& cont, T& t, data_tag::value )const
-        {
-            cont.insert( t );
+            cont.insert( BOOST_ASSIGN_V2_forward );
         }
-
-#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
         
         template<typename C, typename T>
         void impl(C& cont, T& t, data_tag::value_map )const
         {
-            cont.insert( t );
+            cont.insert( BOOST_ASSIGN_V2_forward );
         }
 
         template<typename C, typename T>
-        void impl(C& cont, T& t, data_tag::ptr )const
+        void impl(C& cont, BOOST_ASSIGN_V2_arg, data_tag::ptr )const
         {
             typedef typename container_aux::value<C>::type value_;
-            cont.insert( new value_( t ) );
+            cont.insert( new value_( BOOST_ASSIGN_V2_forward ) );
         }
 
         template<typename C, typename T>
-        void impl( C& cont, T& t, data_tag::ptr_map )const
+        void impl( C& cont, BOOST_ASSIGN_V2_arg, data_tag::ptr_map )const
         {
             typedef typename container_aux::key<C>::type key_;
-            key_ k = t.first; // non-const necessary. See ptr_map.
+			// non-const key necessary. See ptr_map.
+            key_ k = BOOST_ASSIGN_V2_forward.first; 
             typedef typename container_aux::mapped<C>::type m_;
-            cont.insert( k , new m_( t.second ) );
+            cont.insert( k , new m_( BOOST_ASSIGN_V2_forward.second ) );
         }
 
-    }/*->*/;
+    };
+
+#undef BOOST_ASSIGN_V2_arg
+#undef BOOST_ASSIGN_V2_forward
 
 }// interpreter_aux
 BOOST_ASSIGN_V2_OPTION_MODIFIER_KEYWORD(insert)
Modified: sandbox/assign_v2/boost/assign/v2/option/modifier/iterate.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/modifier/iterate.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/option/modifier/iterate.hpp	2011-03-29 22:54:35 EDT (Tue, 29 Mar 2011)
@@ -51,6 +51,14 @@
 
 }// modifier_tag
 namespace interpreter_aux{
+
+#if BOOST_ASSIGN_V2_ENABLE_CPP0X
+#define BOOST_ASSIGN_V2_arg T&& t
+#define BOOST_ASSIGN_V2_forward std::forward<T>( t )
+#else
+#define BOOST_ASSIGN_V2_arg T& t
+#define BOOST_ASSIGN_V2_forward t
+#endif
                 
     template<typename Arg>
     class interpreter_modifier< modifier_tag::iterate<Arg> >/*<-*/
@@ -70,29 +78,17 @@
         ) : ptr( new arg_( arg ) )
         {}
 
-#if BOOST_ASSIGN_V2_ENABLE_CPP0X
-
-        template<typename C, typename T>
-        void impl(C& cont, T&& t, data_tag::value )const
-        {
-            cont.at( (*this->ptr)() ) = std::forward<T>( t ); 
-        }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
-
-#else
-
         template<typename C, typename T>
-        void impl(C& cont, T& t, data_tag::value )const
+        void impl(C& cont, BOOST_ASSIGN_V2_arg, data_tag::value )const
         {
-            cont.at( (*this->ptr)() ) = t;
+            cont.at( (*this->ptr)() ) = BOOST_ASSIGN_V2_forward; 
         }
 
-#endif
-
         template<typename C, typename T>
-        void impl(C& cont, T& t, data_tag::ptr )const
+        void impl(C& cont, BOOST_ASSIGN_V2_arg, data_tag::ptr )const
         {
             typedef typename container_aux::value<C>::type value_;
-            cont.replace( (*this->ptr)(), new value_( t ) );
+            cont.replace( (*this->ptr)(), new value_( BOOST_ASSIGN_V2_forward ) );
         }
                             
         protected:
@@ -100,6 +96,9 @@
 
     }/*->*/;
 
+#undef BOOST_ASSIGN_V2_arg
+#undef BOOST_ASSIGN_V2_forward
+
 }// interpreter_aux
 BOOST_ASSIGN_V2_OPTION_MODIFIER_KEYWORD(iterate)
 BOOST_ASSIGN_V2_OPTION_MODIFIER_META_MODIFIER_TAG(iterate, modifier_tag::iterate<Arg>)
Modified: sandbox/assign_v2/boost/assign/v2/option/modifier/mapped.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/modifier/mapped.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/option/modifier/mapped.hpp	2011-03-29 22:54:35 EDT (Tue, 29 Mar 2011)
@@ -24,7 +24,7 @@
 namespace modifier_tag{ 
 
     template<
-        typename Arg // Mapping applied to mapped
+        typename Arg
     > 
     struct mapped; 
 
@@ -50,20 +50,21 @@
         {}
 
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
-        template<typename C, typename T>
-        void impl(C& cont, T&& key, data_tag::storage )const
-        {
-            cont[ key ] = (*this->ptr)( cont[ std::forward<T>( key ) ] );
-        }
-
+#define BOOST_ASSIGN_V2_arg T&& t
+#define BOOST_ASSIGN_V2_forward std::forward<T>( t )
 #else
+#define BOOST_ASSIGN_V2_arg T& t
+#define BOOST_ASSIGN_V2_forward t
+#endif
 
         template<typename C, typename T>
-        void impl(C& cont, T& key, data_tag::storage )const{
-            cont[ key ] = (*this->ptr)( cont[ key ] );
+        void impl(C& cont, BOOST_ASSIGN_V2_arg, data_tag::storage )const
+        {
+            cont[ t/*key*/ ] = (*this->ptr)( cont[ BOOST_ASSIGN_V2_forward ] );
         }
 
-#endif
+#undef BOOST_ASSIGN_V2_arg
+#undef BOOST_ASSIGN_V2_forward
 
         private:
         ptr_ ptr;
Modified: sandbox/assign_v2/boost/assign/v2/option/modifier/repeat.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/modifier/repeat.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/option/modifier/repeat.hpp	2011-03-29 22:54:35 EDT (Tue, 29 Mar 2011)
@@ -47,23 +47,21 @@
         {}
 
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
-        template<typename C, typename T, typename DataTag>
-        void impl(C& cont, T&& t, DataTag tag )const
-        {
-            size_type m = this->size();\
-            while(m--) this->inner_.impl( cont, std::forward<T>( t ), tag );
-        }
-
+#define BOOST_ASSIGN_V2_arg T&& t
+#define BOOST_ASSIGN_V2_forward std::forward<T>( t )
 #else
-
+#define BOOST_ASSIGN_V2_arg T& t
+#define BOOST_ASSIGN_V2_forward t
+#endif
         template<typename C, typename T, typename DataTag>
-        void impl(C& cont, T& t, DataTag tag )const
+        void impl(C& cont, BOOST_ASSIGN_V2_arg, DataTag tag )const
         {
-            size_type m = this->size();
-            while(m--) this->inner_.impl( cont, t, tag );
+            size_type m = this->size();\
+            while(m--) this->inner_.impl( cont, BOOST_ASSIGN_V2_forward, tag );
         }
 
-#endif
+#undef BOOST_ASSIGN_V2_arg
+#undef BOOST_ASSIGN_V2_forward
 
         size_type const& size()const{ return this->n_; }
 
Modified: sandbox/assign_v2/boost/assign/v2/option/modifier/std.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/modifier/std.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/option/modifier/std.hpp	2011-03-29 22:54:35 EDT (Tue, 29 Mar 2011)
@@ -26,45 +26,35 @@
 }// assign
 }// boost
 
-
-#define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_CPP03(FUN)\
-    template<typename C, typename T>\
-        void impl(C& cont, T& t, data_tag::value)const{\
-        cont.FUN( t );\
-    }\
-    template<typename C, typename T>\
-    void impl(C& cont, T& t, data_tag::ptr)const{\
-        typedef typename container_aux::value<C>::type value_;\
-        cont.FUN( new value_( t ) );\
-    }\
-/**/
-
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 #include <utility>
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/is_reference.hpp>
-// disable_if necessary to avoid ambiguity resolution
-#define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_RVALUE(FUN)\
+#define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL(FUN)\
     template<typename C, typename T>\
-        typename boost::disable_if<\
-        boost::is_reference<T>,\
-        void\
-    >::type\
-    impl(C& cont, T&& t, data_tag::value)const{\
+        void impl(C& cont, T&& t, data_tag::value)const{\
         cont.FUN( std::forward<T>( t ) );\
     }\
-/**/
-#define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL(FUN)\
-BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_CPP03(FUN)\
-BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_RVALUE(FUN)\
+    template<typename C, typename T>\
+    void impl(C& cont, T&& t, data_tag::ptr)const{\
+        typedef typename container_aux::value<C>::type value_;\
+        cont.FUN( new value_( std::forward<T>( t ) ) );\
+    }\
 /**/
 #else
 #define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL(FUN)\
-BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_CPP03(FUN)\
+    template<typename C, typename T>\
+        void impl(C& cont, T& t, data_tag::value)const{\
+        cont.FUN( t );\
+    }\
+    template<typename C, typename T>\
+    void impl(C& cont, T& t, data_tag::ptr)const{\
+        typedef typename container_aux::value<C>::type value_;\
+        cont.FUN( new value_( t ) );\
+    }\
 /**/
 #endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 
+
 #define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_TAG(FUN)\
 namespace boost{\
 namespace assign{\
Modified: sandbox/assign_v2/libs/assign/v2/test/detail/traits.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/detail/traits.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/detail/traits.cpp	2011-03-29 22:54:35 EDT (Tue, 29 Mar 2011)
@@ -26,15 +26,15 @@
         namespace ns = as2::container_aux;
         {
             typedef std::queue<int> v_;
-            BOOST_MPL_ASSERT(( ns::has_push<v_> ));
+            BOOST_MPL_ASSERT(( ns::has_push_deduced_value<v_> ));
         }
         {
             typedef std::queue<int> v_;
-            BOOST_MPL_ASSERT(( ns::has_push<v_> ));
+            BOOST_MPL_ASSERT(( ns::has_push_deduced_value<v_> ));
         }
         {
             typedef std::vector<int> v_;
-            BOOST_MPL_ASSERT_NOT(( ns::has_push<v_> ));
+            BOOST_MPL_ASSERT_NOT(( ns::has_push_deduced_value<v_> ));
         }
         {
             typedef std::vector<int> inp_;