Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r70671 - in sandbox/assign_v2: boost/assign/v2 boost/assign/v2/conversion boost/assign/v2/deque boost/assign/v2/detail boost/assign/v2/detail/check/equal_container boost/assign/v2/detail/functor boost/assign/v2/detail/traits boost/assign/v2/detail/traits/ptr_container boost/assign/v2/detail/traits/value_container boost/assign/v2/interpreter boost/assign/v2/option/data_generator boost/assign/v2/option/modifier boost/assign/v2/ref/wrapper libs/assign/v2/src libs/assign/v2/test libs/assign/v2/test/option libs/assign/v2/test/put
From: erwann.rogard_at_[hidden]
Date: 2011-03-28 16:47:30


Author: e_r
Date: 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
New Revision: 70671
URL: http://svn.boost.org/trac/boost/changeset/70671

Log:
upd assign_v2
Text files modified:
   sandbox/assign_v2/boost/assign/v2/conversion/deduce_tag.hpp | 11 +
   sandbox/assign_v2/boost/assign/v2/conversion/predicate.hpp | 50 -------
   sandbox/assign_v2/boost/assign/v2/deque/deque.hpp | 34 +++--
   sandbox/assign_v2/boost/assign/v2/detail/check/equal_container/deduce.hpp | 2
   sandbox/assign_v2/boost/assign/v2/detail/functor/new.hpp | 113 ----------------
   sandbox/assign_v2/boost/assign/v2/detail/traits.hpp | 3
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container.hpp | 16 --
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/fwd.hpp | 101 ---------------
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/meta.hpp | 44 ------
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp | 266 ---------------------------------------
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container.hpp | 17 --
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/category.hpp | 95 --------------
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/fwd.hpp | 83 ------------
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_push.hpp | 55 --------
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_value_type.hpp | 46 ------
   sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp | 54 +++----
   sandbox/assign_v2/boost/assign/v2/interpreter/data_generator.hpp | 45 ------
   sandbox/assign_v2/boost/assign/v2/interpreter/fwd.hpp | 25 +++
   sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp | 40 ++++-
   sandbox/assign_v2/boost/assign/v2/interpreter/replace.hpp | 20 +-
   sandbox/assign_v2/boost/assign/v2/option.hpp | 8
   sandbox/assign_v2/boost/assign/v2/option/data_generator/framework.hpp | 8
   sandbox/assign_v2/boost/assign/v2/option/data_generator/key.hpp | 20 --
   sandbox/assign_v2/boost/assign/v2/option/modifier/framework.hpp | 8
   sandbox/assign_v2/boost/assign/v2/option/modifier/iterate.hpp | 26 +-
   sandbox/assign_v2/boost/assign/v2/option/modifier/mapped.hpp | 5
   sandbox/assign_v2/boost/assign/v2/option/modifier/repeat.hpp | 26 +--
   sandbox/assign_v2/boost/assign/v2/option/modifier/std.hpp | 32 ++--
   sandbox/assign_v2/boost/assign/v2/put.hpp | 61 +++++++-
   sandbox/assign_v2/boost/assign/v2/ref/wrapper/copy.hpp | 2
   sandbox/assign_v2/libs/assign/v2/src/main.cpp | 22 +-
   sandbox/assign_v2/libs/assign/v2/test/option/std_modifier.cpp | 6
   sandbox/assign_v2/libs/assign/v2/test/put.cpp | 2
   sandbox/assign_v2/libs/assign/v2/test/put/ptr.cpp | 22 +-
   sandbox/assign_v2/libs/assign/v2/test/put/put.cpp | 30 ++--
   35 files changed, 282 insertions(+), 1116 deletions(-)

Modified: sandbox/assign_v2/boost/assign/v2/conversion/deduce_tag.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/conversion/deduce_tag.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/conversion/deduce_tag.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -10,8 +10,10 @@
 #ifndef BOOST_ASSIGN_V2_CONVERSION_DEDUCE_TAG_ER_2010_HPP
 #define BOOST_ASSIGN_V2_CONVERSION_DEDUCE_TAG_ER_2010_HPP
 #include <boost/assign/v2/detail/traits/switch.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 #include <boost/assign/v2/conversion/helper.hpp>
 #include <boost/assign/v2/conversion/predicate.hpp>
+#include <boost/mpl/or.hpp>
 #include <boost/mpl/pair.hpp>
 
 namespace boost{
@@ -21,6 +23,15 @@
 namespace switch_tag{
     struct deduce_convert{};
 }// switch_tag
+namespace conversion_aux{
+
+ template<typename C, typename R>
+ struct use_put : ::boost::mpl::or_<
+ container_aux::is_array<C>,
+ container_aux::has_push_deduced_value<C>
+ >{};
+
+}// conversion_aux
 namespace switch_aux{
 
     template<>

Modified: sandbox/assign_v2/boost/assign/v2/conversion/predicate.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/conversion/predicate.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/conversion/predicate.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -1,49 +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_CONVERSION_TRAITS_ER_2010_HPP
-#define BOOST_ASSIGN_V2_CONVERSION_TRAITS_ER_2010_HPP
-#include <boost/assign/v2/detail/traits/value_container/category.hpp>
-#include <boost/assign/v2/detail/traits/value_container/has_push.hpp>
-#include <boost/assign/v2/detail/traits/ptr_container/meta.hpp>
-#include <boost/mpl/or.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace conversion_aux{
-
- template<typename C>
- struct is_array : ::boost::mpl::apply1<
- container_aux::through_value_container<
- container_aux::is_array
- >,
- C
- >{};
-
- template<typename C>
- struct has_push : ::boost::mpl::apply1<
- container_aux::through_value_container<
- container_aux::has_push_deduced_value
- >,
- C
- >{};
-
- template<typename C, typename R>
- struct use_put : ::boost::mpl::or_<
- is_array<C>,
- has_push<C>
- >{};
-
-}// conversion_aux
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_CONVERSION_TRAITS_ER_2010_HPP
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/deque/deque.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/deque/deque.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/deque/deque.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -35,21 +35,27 @@
 namespace interpreter_aux{
 
     template<typename T>
- struct deque_impl{ typedef /*<-*/std::deque<T> BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/type; };
+ struct deque_impl{
+ typedef /*<-*/std::deque<T>
+ BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/
+ type;
+ };
 
- template<typename T, typename F, typename Tag>
+ template<typename T, typename F, typename ModifierTag>
     class deque_interpreter
         : public interpreter_crtp<
- typename deque_impl<T>::type, F, Tag,
- deque_interpreter<T, F, Tag>
+ typename deque_impl<T>::type, F, ModifierTag, data_tag::value,
+ deque_interpreter<T, F, ModifierTag>
>
     {
 //<-
         typedef typename deque_impl<T>::type impl_;
         typedef impl_ const cimpl_;
- typedef interpreter_crtp<impl_, F, Tag, deque_interpreter> put_crtp_;
+ typedef interpreter_crtp<
+ impl_, F, ModifierTag, data_tag::value, deque_interpreter
+ > put_crtp_;
 
- typedef interpreter_aux::interpreter_modifier<Tag> modifier_;
+ typedef interpreter_aux::interpreter_modifier<ModifierTag> modifier_;
 //->
         public:
 
@@ -129,18 +135,18 @@
 //->
     };
 
- template<typename T, typename F, typename Tag>
- struct replace_data_generator< deque_interpreter<T, F, Tag> >
+ template<typename T, typename F, typename ModifierTag>
+ struct replace_data_generator< deque_interpreter<T, F, ModifierTag> >
     {
         template<typename F1>
- struct apply{ typedef /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)deque_interpreter<T, F1, Tag>/*->*/ type; };
+ struct apply{ typedef /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)deque_interpreter<T, F1, ModifierTag>/*->*/ type; };
     };
 
- template<typename T, typename F, typename Tag>
- struct replace_modifier_tag< deque_interpreter<T, F, Tag> >/*<-*/
+ template<typename T, typename F, typename ModifierTag>
+ struct replace_modifier_tag< deque_interpreter<T, F, ModifierTag> >/*<-*/
     {
- template<typename Tag1>
- struct apply{ /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)typedef deque_interpreter<T, F, Tag1>/*->*/ type; };
+ template<typename ModifierTag1>
+ struct apply{ /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)typedef deque_interpreter<T, F, ModifierTag1>/*->*/ type; };
     }/*->*/;
 
 //<-
@@ -153,7 +159,7 @@
         typedef typename deque_impl<t_>::type impl_;
         typedef typename deduce_data_generator<impl_>::type f_;
         typedef typename deduce_modifier_tag<impl_>::type modifier_tag_;
- typedef deque_interpreter<t_,f_,modifier_tag_> type;
+ typedef deque_interpreter<t_, f_, modifier_tag_> type;
     };
 
 }// result_of

Modified: sandbox/assign_v2/boost/assign/v2/detail/check/equal_container/deduce.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/check/equal_container/deduce.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/check/equal_container/deduce.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -9,7 +9,7 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_DETAIL_CHECK_EQUAL_CONTAINER_DEDUCE_ER_2010_HPP
 #define BOOST_ASSIGN_V2_DETAIL_CHECK_EQUAL_CONTAINER_DEDUCE_ER_2010_HPP
-#include <boost/assign/v2/detail/traits/value_container/category.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 #include <boost/assign/v2/detail/check/equal_container/array.hpp>
 #include <boost/assign/v2/detail/check/equal_container/fifo.hpp>
 #include <boost/assign/v2/detail/check/equal_container/lifo.hpp>

Modified: sandbox/assign_v2/boost/assign/v2/detail/functor/new.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/functor/new.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/functor/new.hpp 2011-03-28 16:47:24 EDT (Mon, 28 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_DETAIL_FUNCTOR_NEW_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_FUNCTOR_NEW_ER_2010_HPP
-#include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
-#include <boost/assign/v2/detail/keyword/nil.hpp>
-#if BOOST_ASSIGN_V2_ENABLE_CPP0X
-#include <utility>
-#else
-#include <boost/assign/v2/detail/config/limit_arity.hpp>
-#include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
-#include <boost/mpl/always.hpp>
-#include <boost/preprocessor/repetition.hpp>
-#include <boost/range/reference.hpp>
-#include <boost/type_traits/remove_cv.hpp>
-#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace functor_aux{
-
- template<typename T = keyword_aux::nil>
- class new_
-#if BOOST_ASSIGN_V2_ENABLE_CPP0X
-// do nothing
-#else
- : public functor_aux::crtp_unary_and_up<
- functor_aux::new_<T>,
- ::boost::mpl::always<T*>
- >
-#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
- {
- typedef T* ptr_;
- typedef functor_aux::new_<T> this_;
-
- public:
-
- typedef ptr_ result_type;
-
- new_(){}
-
- result_type operator()()const{ return new T(); }
-
- template<typename U>
- new_<U> type()const{ return new_<U>(); }
-
-
-#if BOOST_ASSIGN_V2_ENABLE_CPP0X
- template<typename... Args>
- result_type operator()(Args&&...args)const
- {
- return new T(std::forward<Args>(args)...);
- }
-#else
- protected:
- typedef ::boost::mpl::always< ptr_ > meta_result_;
- typedef functor_aux::crtp_unary_and_up<this_, meta_result_> super_;
- public:
-
- using super_::operator();
-
-#define BOOST_ASSIGN_V2_MACRO(z, N, data) \
- template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
- result_type impl( BOOST_PP_ENUM_BINARY_PARAMS(N, T, &_) )const{ \
- return new T( BOOST_PP_ENUM_PARAMS(N, _) ); \
- } \
-/**/
-BOOST_PP_REPEAT_FROM_TO(
- 1,
- BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
- BOOST_ASSIGN_V2_MACRO,
- ~
-)
-#undef BOOST_ASSIGN_V2_MACRO
-#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
-
- };
-
-}// functor_aux
-/*
-namespace result_of{
-
- template<typename T>
- struct new_
- {
- typedef functor_aux::new_<T> type;
- };
-
-}// result_of
-
- template<typename T>
- typename result_of::new_<T>::type
- new_()
- {
- typedef typename result_of::new_<T>::type result_;
- return result_();
- }
-
-*/
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_DETAIL_FUNCTOR_NEW_ER_2010_HPP
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/detail/traits.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -9,7 +9,6 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_DETAIL_TRAITS_ER_2010_HPP
 #define BOOST_ASSIGN_V2_DETAIL_TRAITS_ER_2010_HPP
-#include <boost/assign/v2/detail/traits/ptr_container.hpp>
-#include <boost/assign/v2/detail/traits/value_container.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 
 #endif // BOOST_ASSIGN_V2_DETAIL_TRAITS_ER_2010_HPP

Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -1,15 +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_TRAITS_PTR_CONTAINER_ER_2010_HPP
-#define BOOST_ASSIGN_V2_TRAITS_PTR_CONTAINER_ER_2010_HPP
-#include <boost/assign/v2/detail/traits/ptr_container/meta.hpp>
-#include <boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp>
-
-#endif // BOOST_ASSIGN_V2_TRAITS_PTR_CONTAINER_ER_2010_HPP
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/fwd.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/fwd.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/fwd.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -1,100 +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_DETAIL_TRAITS_PTR_CONTAINER_FWD_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_FWD_ER_2010_HPP
-#include <cstddef>
-
-
-namespace boost{
-
- template
- <
- class T,
- std::size_t N,
- class CloneAllocator
- >
- class ptr_array;
-
- template
- <
- class T,
- class CloneAllocator,
- class Allocator
- >
- class ptr_circular_buffer;
-
- template
- <
- class T,
- class CloneAllocator,
- class Allocator
- >
- class ptr_deque;
-
- template
- <
- class T,
- class CloneAllocator,
- class Allocator
- >
- class ptr_list;
-
- template
- <
- class Key,
- class T,
- class Compare,
- class CloneAllocator,
- class Allocator
- >
- class ptr_map;
-
- template
- <
- class Key,
- class Compare,
- class CloneAllocator,
- class Allocator
- >
- class ptr_set;
-
- template
- <
- class Key,
- class Mapped,
- class Hash,
- class Pred,
- class CloneAllocator,
- class Allocator
- >
- class ptr_unordered_map;
-
- template
- <
- class Key,
- class Hash,
- class Pred,
- class CloneAllocator,
- class Allocator
- >
- class ptr_unordered_set;
-
-
- template
- <
- class T,
- class CloneAllocator,
- class Allocator
- >
- class ptr_vector;
-
-}// boost
-
-#endif // BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_FWD_ER_2010_HPP
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/meta.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/meta.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/meta.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -1,43 +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_DETAIL_TRAITS_PTR_CONTAINER_META_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_META_ER_2010_HPP
-#include <boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace container_aux{
-
-
- template<typename PtrC>
- struct is_ptr_container : ::boost::mpl::not_<
- boost::is_same<
- PtrC, typename to_value_container<PtrC>::type
- >
- >{};
-
- template<template<typename > class F>
- struct through_value_container
- {
- template<typename PtrC /*or C*/>
- struct apply : F<
- typename to_value_container<PtrC>::type
- >{};
- };
-
-}// container_aux
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_META_ER_2010_HPP
\ No newline at end of file
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -1,265 +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_DETAIL_TRAITS_PTR_CONTAINER_TRAITS_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_TRAITS_ER_2010_HPP
-#include <cstddef>
-#include <memory> // std::allocator
-#include <boost/assign/v2/detail/traits/value_container/fwd.hpp>
-#include <boost/assign/v2/detail/traits/ptr_container/fwd.hpp>
-#include <boost/mpl/size_t.hpp>
-#include <boost/type_traits/remove_reference.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace container_aux{
-
- // VALUE
-
- template<typename PtrC>
- struct to_value_value : boost::remove_reference<
- typename PtrC::reference
- >{};
-
- template<typename PtrC>
- struct to_value_mapped : boost::remove_reference<
- typename PtrC::mapped_reference
- >{};
-
- // ALLOCATOR
-
- template<typename PtrC>
- struct to_value_allocator
- {
- typedef std::allocator<typename to_value_value<PtrC>::type> type;
- };
-
-
- // ARRAY
-
- template<typename PtrC> struct helper_size{};
-
- template<typename T, std::size_t N, typename C>
- struct helper_size< boost::ptr_array<T, N, C> >
- : ::boost::mpl::size_t<
- N
- >{};
-
- template<typename PtrC>
- struct to_value_array
- {
- typedef boost::array<
- typename to_value_value<PtrC>::type,
- helper_size<PtrC>::value
- > type;
- };
-
- // SEQUENCE
-
- template<typename PtrC, template<typename, typename> class C>
- struct to_value_sequence {
-
- typedef C<
- typename to_value_value<PtrC>::type,
- typename to_value_allocator<PtrC>::type
- > type;
-
- };
-
- // MAP
-
- template<typename PtrC, template<typename, typename, typename, typename> class C>
- struct to_value_map{
-
- typedef C<
- typename PtrC::key_type,
- typename to_value_mapped<PtrC>::type,
- typename PtrC::key_compare,
- typename to_value_allocator<PtrC>::type
- > type;
-
- };
-
- // SET
-
- template<typename PtrC, template<typename, typename, typename> class C>
- struct to_value_set{
-
- typedef C<
- typename PtrC::key_type,
- typename PtrC::key_compare,
- typename to_value_allocator<PtrC>::type
- > type;
-
- };
-
- // UNORDERED MAP
-
- template<typename PtrC,
- template<typename, typename, typename, typename, typename> class C>
- struct to_value_unordered_map{
-
- typedef C<
- typename PtrC::key_type,
- typename to_value_mapped<PtrC>::type,
- typename PtrC::hasher,
- typename PtrC::key_equal,
- typename to_value_allocator<PtrC>::type
- > type;
-
- };
-
- // UNORDERED SET
-
- template<typename PtrC,
- template<typename, typename, typename, typename> class C>
- struct to_value_unordered_set{
-
- typedef C<
- typename PtrC::key_type,
- typename PtrC::hasher,
- typename PtrC::key_equal,
- typename to_value_allocator<PtrC>::type
- > type;
-
- };
-
- // TO_VALUE_CONTAINER
-
- template<typename PtrC>
- struct to_value_container
- {
- typedef PtrC type;
- };
-
- // Array
- template<
- typename T,
- std::size_t N,
- typename A
- >
- struct to_value_container<
- boost::ptr_array<T, N, A>
- > : to_value_array<
- boost::ptr_array<T, N, A>
- >{};
-
- // Sequence
-
- template<
- typename T,
- typename C,
- typename A
- >
- struct to_value_container<
- boost::ptr_deque<T, C, A>
- > : to_value_sequence<
- boost::ptr_deque<T, C, A>,
- std::deque
- >{};
-
- template<
- typename T,
- typename C,
- typename A
- >
- struct to_value_container<
- boost::ptr_list<T, C, A>
- > : to_value_sequence<
- boost::ptr_list<T, C, A>,
- std::list
- >{};
-
- template<
- typename T,
- typename C,
- typename A
- >
- struct to_value_container<
- boost::ptr_vector<T, C, A>
- > : to_value_sequence<
- boost::ptr_vector<T, C, A>,
- std::vector
- >{};
-
- // Map
-
- template
- <
- class Key,
- class Mapped,
- class Compare,
- class CloneAllocator,
- class Allocator
- >
- struct to_value_container<
- boost::ptr_map<Key, Mapped, Compare, CloneAllocator, Allocator>
- > : to_value_map<
- boost::ptr_map<Key, Mapped, Compare, CloneAllocator, Allocator>,
- std::map
- >{};
-
- // Set
-
- template
- <
- class Key,
- class Compare,
- class CloneAllocator,
- class Allocator
- >
- struct to_value_container<
- boost::ptr_set<Key, Compare, CloneAllocator, Allocator>
- > : to_value_set<
- boost::ptr_set<Key, Compare, CloneAllocator, Allocator>,
- std::set
- >{};
-
- // Unordered map
-
- template
- <
- class Key,
- class Mapped,
- class Hash,
- class Pred,
- class CloneAllocator,
- class Allocator
- >
- struct to_value_container<
- boost::ptr_unordered_map<Key, Mapped, Hash, Pred, CloneAllocator, Allocator>
- > : to_value_unordered_map<
- boost::ptr_unordered_map<Key, Mapped, Hash, Pred, CloneAllocator, Allocator>,
- boost::unordered_map
- >{};
-
- // Unordered set
-
- template
- <
- class Key,
- class Hash,
- class Pred,
- class CloneAllocator,
- class Allocator
- >
- struct to_value_container<
- boost::ptr_unordered_set<Key, Hash, Pred, CloneAllocator, Allocator>
- > : to_value_unordered_set<
- boost::ptr_unordered_set<Key, Hash, Pred, CloneAllocator, Allocator>,
- boost::unordered_set
- >{};
-
-}// container_aux
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_DETAIL_TRAITS_CONTAINER_FWD_PTR_ER_2010_HPP
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/value_container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/value_container.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/value_container.hpp 2011-03-28 16:47:24 EDT (Mon, 28 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_TRAITS_VALUE_CONTAINER_ER_2010_HPP
-#define BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_ER_2010_HPP
-#include <boost/assign/v2/detail/traits/value_container/category.hpp>
-#include <boost/assign/v2/detail/traits/value_container/has_push.hpp>
-#include <boost/assign/v2/detail/traits/value_container/has_value_type.hpp>
-
-#endif // BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_ER_2010_HPP
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/category.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/category.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/category.hpp 2011-03-28 16:47:24 EDT (Mon, 28 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_TRAITS_VALUE_CONTAINER_CATEGORY_ER_2010_HPP
-#define BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_CATEGORY_ER_2010_HPP
-#include <boost/assign/v2/detail/traits/value_container/fwd.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/preprocessor/seq.hpp>
-#include <boost/preprocessor/cat.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace container_aux{
-
- template<typename C> struct is_fifo : ::boost::mpl::false_{};
-
- template<typename V>
- struct is_lifo : ::boost::mpl::false_{};
-
- template<typename C>
- struct is_associative : ::boost::mpl::false_{};
-
- template<typename C>
- struct is_sorted : ::boost::mpl::false_{};
-
- template<typename C> struct is_array : ::boost::mpl::false_{};
-
- // FIFO
- template<typename T, typename A>
- struct is_fifo< std::queue<T, A> > : ::boost::mpl::true_{};
-
- // LIFO
- template<typename T, typename A>
- struct is_lifo< std::stack<T,A> > : ::boost::mpl::true_{};
-
-}// container_aux
-
-#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_CATEGORY(SeqPar, IsCategory, Identifier, SeqArg)\
-namespace container_aux{\
- template<BOOST_PP_SEQ_ENUM(SeqPar)>\
- struct IsCategory <\
- Identifier<BOOST_PP_SEQ_ENUM(SeqArg)> \
- > : ::boost::mpl::true_{};\
-}\
-/**/
-#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_CATEGORIES_HELPER(r, data, elem)\
- BOOST_ASSIGN_V2_TRAITS_CONTAINER_CATEGORY(\
- BOOST_PP_SEQ_ELEM(0, data),\
- elem,\
- BOOST_PP_SEQ_ELEM(1, data),\
- BOOST_PP_SEQ_ELEM(2, data)\
- )
-/**/
-#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_CATEGORIES(SeqPar, SeqIsCategory, Identifier, SeqArg)\
- BOOST_PP_SEQ_FOR_EACH(\
- BOOST_ASSIGN_V2_TRAITS_CONTAINER_CATEGORIES_HELPER,\
- (SeqPar)(Identifier)(SeqArg),\
- SeqIsCategory\
- )\
-/**/
-
-BOOST_ASSIGN_V2_TRAITS_CONTAINER_CATEGORIES(
- (typename T)( std::size_t sz), (is_array),
- boost::array, (T)(sz)
-)
-BOOST_ASSIGN_V2_TRAITS_CONTAINER_CATEGORIES(
- (typename K)(typename T)(typename C)(typename A), (is_sorted)(is_associative),
- std::map, (K)(T)(C)(A)
-)
-BOOST_ASSIGN_V2_TRAITS_CONTAINER_CATEGORIES(
- (typename T)(typename C)(typename A), (is_sorted)(is_associative),
- std::set, (T)(C)(A)
-)
-BOOST_ASSIGN_V2_TRAITS_CONTAINER_CATEGORIES(
- (typename K)(typename M)(typename H)(typename P)(typename A), (is_associative),
- boost::unordered_map, (K)(M)(H)(P)(A)
-)
-BOOST_ASSIGN_V2_TRAITS_CONTAINER_CATEGORIES(
- (typename K)(typename H)(typename P)(typename A), (is_associative),
- boost::unordered_set, (K)(H)(P)(A)
-)
-
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_CATEGORY_ER_2010_HPP
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/fwd.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/fwd.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/fwd.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -1,82 +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_DETAIL_TRAITS_VALUE_CONTAINER_FWD_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_TRAITS_VALUE_CONTAINER_FWD_ER_2010_HPP
-#include <cstddef>
-
-namespace std{
-
- // www.sgi.com/tech/stl/Deque.html
- template<typename T, typename A> class deque;
-
- // http://www.sgi.com/tech/stl/List.html
- template<typename T, typename A> class list;
-
- // http://www.sgi.com/tech/stl/Map.html
- template<typename K, typename T, typename C, typename A> class map;
-
- // http://www.sgi.com/tech/stl/queue.html
- template<typename T, typename S> class queue;
-
- // http://www.sgi.com/tech/stl/set.html
- template<typename T, typename C, typename A> class set;
-
- // http://www.sgi.com/tech/stl/stack.html
- template<typename T, typename S> class stack;
-
- // http://www.sgi.com/tech/stl/Vector.html
- template<typename T, typename A> class vector;
-
-}// std
-namespace boost{
-
- // http://www.boost.org/doc/libs/release/doc/html/array.html
- template<typename T, std::size_t size> class array;
-
- // http://www.boost.org/doc/libs/release/libs/circular_buffer/index.html
- template<typename T, typename Alloc> class circular_buffer;
-
- template <
- class Key,
- class Hash,
- class Pred,
- class Alloc
- >
- class unordered_set;
-
- template <
- class Key,
- class Mapped,
- class Hash,
- class Pred,
- class Alloc
- >
- class unordered_map;
-
- template<
- class Key,
- class Mapped,
- class Hash,
- class Pred,
- class Alloc
- >
- class unordered_multimap;
-
- template<
- class Key,
- class Hash,
- class Pred,
- class Alloc
- >
- class unordered_multiset;
-
-}// boost
-
-#endif // BOOST_ASSIGN_V2_DETAIL_TRAITS_VALUE_CONTAINER_FWD_ER_2010_HPP
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_push.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_push.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_push.hpp 2011-03-28 16:47:24 EDT (Mon, 28 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) //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_PUSH_ER_2010_HPP
-#define BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_PUSH_ER_2010_HPP
-#include <boost/config.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/detail/yes_no_type.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace container_aux{
-
- template<typename C, typename T = typename C::value_type>
- struct has_push{
-
- typedef typename boost::type_traits::yes_type yes_;
- typedef typename boost::type_traits::no_type no_;
-
- template<typename U,void (U::*fp)(T const&)>
- struct helper{
- // See http://lists.boost.org/Archives/boost/2002/03/27233.php
- };
-
- template<typename U>
- static yes_ test(U*, helper<U, &U::push>* p = 0);
- static no_ test(...);
-
- BOOST_STATIC_CONSTANT(
- bool,
- value = sizeof( test((C*)0) ) == sizeof( yes_ )
- );
-
- typedef ::boost::mpl::bool_<value> type;
-
- };
-
- template<typename C>
- struct has_push_deduced_value : has_push<C>{};
-
-}// container_aux
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_PUSH_ER_2010_HPP
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_value_type.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_value_type.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_value_type.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -1,45 +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_TRAITS_VALUE_CONTAINER_HAS_VALUE_TYPE_ER_2010_HPP
-#define BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_VALUE_TYPE_ER_2010_HPP
-#include <boost/config.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/type_traits/detail/yes_no_type.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace container_aux{
-
- template<typename T>
- struct has_value_type{
-
- typedef typename boost::type_traits::yes_type yes_;
- typedef typename boost::type_traits::no_type no_;
-
-
- template<typename U>
- static yes_ test(U*, typename U::value_type* p = 0);
- static no_ test(...);
-
- BOOST_STATIC_CONSTANT(
- bool,
- value = sizeof( test((T*)0) ) == sizeof( yes_ )
- );
- typedef ::boost::mpl::bool_<value> type;
- };
-
-
-}// container_aux
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_VALUE_TYPE_ER_2010_HPP
+// TODO remove file
\ No newline at end of file

Modified: sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -12,7 +12,7 @@
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
 #include <boost/assign/v2/detail/pp/forward.hpp>
 #include <boost/assign/v2/detail/pp/ignore.hpp>
-#include <boost/assign/v2/detail/traits/ptr_container/meta.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 #include <boost/assign/v2/interpreter/as_arg_list.hpp>
 #include <boost/assign/v2/interpreter/fwd.hpp>
 #include <boost/assign/v2/interpreter/modifier.hpp>
@@ -116,10 +116,10 @@
 
     };
 
- template<typename C, typename F, typename Tag, typename D>
+ template<typename C, typename F, typename ModifierTag, typename D>
     struct ConceptDerivedInterpreter2 : ConceptDerivedInterpreter1<C, D>{
 
- typedef interpreter_aux::interpreter_modifier<Tag> modifier_;
+ typedef interpreter_aux::interpreter_modifier<ModifierTag> modifier_;
 
         BOOST_CONCEPT_USAGE(ConceptDerivedInterpreter2)
         {
@@ -134,18 +134,19 @@
     };
 
     template<
- typename C // Container,
- , typename F // Data generator
- , typename Tag // Modifier tag
- , typename D // Derived
+ typename C // Container,
+ , typename F // Data generator
+ , typename ModifierTag // Modifier tag
+ , typename DataTag // Data tag
+ , typename D // Derived
>
     class interpreter_crtp
 //<-
         : public data_gen_holder<F>
- , public modifier_holder<Tag>
+ , public modifier_holder<ModifierTag>
 #if !BOOST_ASSIGN_V2_ENABLE_CPP0X
         , public functor_aux::crtp_unary_and_up<
- interpreter_crtp<C, F, Tag, D>,
+ interpreter_crtp<C, F, ModifierTag, DataTag, D>,
             ::boost::mpl::always< D const& >
>
 #endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
@@ -159,18 +160,22 @@
         protected:
 
         typedef data_gen_holder<F> data_gen_holder_;
- typedef modifier_holder<Tag> modifier_holder_;
+ typedef modifier_holder<ModifierTag> modifier_holder_;
 //->
 
         public:
 
- typedef /*<-*/ typename modifier_holder_::modifier_type BOOST_ASSIGN_V2_IGNORE(/*->*/ interpreter_modifier<Tag> /*<-*/)/*->*/
+ typedef /*<-*/ typename modifier_holder_::modifier_type
+ BOOST_ASSIGN_V2_IGNORE(/*->*/ interpreter_modifier<Tag> /*<-*/)/*->*/
         modifier_type;
 
         interpreter_crtp(){}
- explicit interpreter_crtp( F const& f )/*<-*/ : data_gen_holder_( f ){}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+ explicit interpreter_crtp( F const& f )/*<-*/
+ : data_gen_holder_( f )
+ {}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
         explicit interpreter_crtp( F const& f, modifier_type const& m )/*<-*/
- : data_gen_holder_( f ), modifier_holder_( m ){}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+ : data_gen_holder_( f ), modifier_holder_( m )
+ {}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
         typedef D const& result_type;
 
@@ -232,23 +237,9 @@
         protected:
 
         template<typename T>
- struct ptr_enabler : boost::enable_if<
- container_aux::is_ptr_container<C>
- >{};
-
- template<typename T>
- result_type modify(T* t, typename ptr_enabler<T>::type* = 0)const
- {
- typedef ConceptModifier<Tag, C, T*> concept_;
- BOOST_CONCEPT_ASSERT(( concept_ ));
- this->modifier.impl( this->derived().container(), t );
- return this->derived();
- }
-
- template<typename T>
         void check_modifier( BOOST_ASSIGN_V2_FORWARD_PARAM(T, t) )const
         {
- typedef ConceptModifier<Tag, C,
+ typedef ConceptModifier<ModifierTag, DataTag, C,
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
                 T&&
 #else
@@ -267,7 +258,8 @@
             
             this->modifier.impl(
                 this->derived().container(),
- std::forward<T>( t )
+ std::forward<T>( t ),
+ DataTag()
             );
             return this->derived();
         }
@@ -276,7 +268,7 @@
         result_type modify(T& t)const
         {
             check_modifier( t );
- this->modifier.impl( this->derived().container(), t );
+ this->modifier.impl( this->derived().container(), t, DataTag() );
             return this->derived();
         }
 
@@ -284,7 +276,7 @@
         result_type modify(T const& t)const
         {
             check_modifier( t );
- this->modifier.impl( this->derived().container(), t );
+ this->modifier.impl( this->derived().container(), t, DataTag() );
             return this->derived();
         }
 

Modified: sandbox/assign_v2/boost/assign/v2/interpreter/data_generator.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/data_generator.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/data_generator.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -9,15 +9,10 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_INTERPRETER_DATA_ER_2010_HPP
 #define BOOST_ASSIGN_V2_INTERPRETER_DATA_ER_2010_HPP
-#include <boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp>
-#include <boost/assign/v2/detail/traits/ptr_container/meta.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 #include <boost/assign/v2/detail/functor/constructor.hpp>
-#include <boost/assign/v2/detail/functor/new.hpp>
 #include <boost/mpl/eval_if.hpp>
-
-#include <boost/type_traits/remove_pointer.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-
+
 namespace boost{
 namespace assign{
 namespace v2{
@@ -25,47 +20,17 @@
 namespace interpreter_aux{
 //<-
 
- template<typename C>
- struct container_value{ typedef typename C::value_type type; };
-
- template<typename PtrC // Pointer-container
- ,template<typename > class F = container_value
- >
- struct deduce_ptr_generator/*<-*/
- {
-
- typedef typename v2::container_aux::to_value_container<
- PtrC
- >::type cont_;
- typedef functor_aux::new_<
- typename F<cont_>::type
- > type;
- }/*->*/;
-
     template<
- typename C // Value-container
- , template<typename > class F = container_value
+ typename C // Value or pointer-container
+ , template<typename> class F = container_aux::value
>
- struct deduce_value_generator/*<-*/
+ struct deduce_data_generator/*<-*/
     {
         typedef functor_aux::constructor<
             typename F<C>::type
> type;
     }/*->*/;
 
-//->
-
- template<
- typename C // Value or pointer-container
- >
- struct deduce_data_generator/*<-*/
- : boost::mpl::eval_if<
- container_aux::is_ptr_container<C>,
- deduce_ptr_generator<C>,
- deduce_value_generator<C>
- >
- {}/*->*/;
-
 }// interpreter_aux
 //]
 }// v2

Modified: sandbox/assign_v2/boost/assign/v2/interpreter/fwd.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/fwd.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/fwd.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -11,11 +11,34 @@
 #define BOOST_ASSIGN_V2_INTERPRETER_FWD_ER_2010_HPP
 
 namespace boost{
+ struct use_default;
 namespace assign{
 namespace v2{
+namespace data_tag{
+
+ // Storage
+ struct storage{};
+ struct storage_ptr : storage{};
+ struct storage_value : storage{};
+
+ // Assign
+ struct assign{};
+ struct assign_map : assign{};
+
+ template<typename Storage, typename Assign> struct plus : Storage{};
+
+ // Shortcuts
+
+ typedef plus<storage_ptr, assign> ptr;
+ typedef plus<storage_ptr, assign_map> ptr_map;
+ typedef plus<storage_value, assign> value;
+ typedef plus<storage_value, assign_map> value_map;
+
+}// data_tag
 namespace interpreter_aux{
 
- template<typename C, typename F, typename Tag, typename D>
+ template<typename C, typename F,
+ typename ModifierTag, typename DataTag, typename D>
     class interpreter_crtp;
 
     template<typename Tag>

Modified: sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -10,15 +10,15 @@
 #ifndef BOOST_ASSIGN_V2_INTERPRETER_MODIFIER_ER_2010_HPP
 #define BOOST_ASSIGN_V2_INTERPRETER_MODIFIER_ER_2010_HPP
 #include <boost/assign/v2/detail/pp/ignore.hpp>
-#include <boost/assign/v2/detail/traits/value_container/has_push.hpp>
-#include <boost/assign/v2/detail/traits/value_container/category.hpp>
-#include <boost/assign/v2/detail/traits/ptr_container/meta.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 #include <boost/assign/v2/detail/traits/switch.hpp>
-#include <boost/assign/v2/option/modifier/std.hpp>
+#include <boost/assign/v2/option/modifier/insert.hpp>
 #include <boost/assign/v2/option/modifier/iterate.hpp>
 #include <boost/assign/v2/option/modifier/std.hpp>
 #include <boost/concept_check.hpp>
 #include <boost/mpl/assert.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/apply.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/type_traits/is_same.hpp>
 
@@ -33,23 +33,24 @@
 }//modifier_tag
 namespace interpreter_aux{
 
- template<typename Tag>
+
+ template<typename ModifierTag>
     struct interpreter_modifier
     {
         // Specialize on Tag to model ConceptModifier
     };
 
- template<typename Tag, typename C, typename T>
+ template<typename ModifierTag, typename DataTag, typename C, typename T>
     struct ConceptModifier
     {
 
         BOOST_CONCEPT_USAGE(ConceptModifier)
         {
- m.impl( cont, t );
+ m.impl( cont, t, DataTag() );
         }
 
         private:
- static interpreter_aux::interpreter_modifier<Tag>& m;
+ static interpreter_aux::interpreter_modifier<ModifierTag>& m;
         static C& cont;
         static T t;
     };
@@ -70,7 +71,7 @@
     struct case_<switch_tag::deduce_put, CaseNumber> :\
         switch_aux::helper<\
             v2::modifier_tag::Tag,\
- container_aux::through_value_container<BooleanMetaF>::apply\
+ BooleanMetaF\
>{};\
 }\
 /**/
@@ -119,6 +120,27 @@
     }
 
 //->
+
+ template<
+ typename C // Container
+ >
+ struct deduce_data_tag{
+
+ typedef typename ::boost::mpl::if_<
+ container_aux::is_ptr_container<C>,
+ data_tag::storage_ptr,
+ data_tag::storage_value
+ >::type storage_;
+
+ typedef typename ::boost::mpl::if_<
+ container_aux::is_map<C>,
+ data_tag::assign_map,
+ data_tag::assign
+ >::type assign_;
+
+ typedef data_tag::plus<storage_, assign_> type;
+ };
+
 }// interpreter_aux
 //]
 }// v2

Modified: sandbox/assign_v2/boost/assign/v2/interpreter/replace.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/replace.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/replace.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -18,26 +18,24 @@
 //[syntax_put_adapter_replace_parameter
 namespace interpreter_aux{
 
- //Specialize on D
- template<
- typename D // Derives from interpreter_crtp
- >
+ template<typename Derived>
     struct replace_data_generator{
     
- // Return transformation by D::fun_type = F
         template<typename F>
         struct apply/*<-*/{}/*->*/;
     };
 
- //Specialize on D
- template<
- typename D // Derives from interpreter_crtp
- >
+ template<typename Derived>
     struct replace_modifier_tag{
 
- // Return transformation by D::modifier_tag = Tag
+ template<typename Tag> struct apply/*<-*/{}/*->*/;
+ };
+
+ template<typename Derived>
+ struct replace_data_tag{
+
         template<typename Tag>
- struct apply{};
+ struct apply/*<-*/{}/*->*/;
     };
     
 }// interpreter_aux

Modified: sandbox/assign_v2/boost/assign/v2/option.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/option.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -9,11 +9,7 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_OPTION_ER_2010_HPP
 #define BOOST_ASSIGN_V2_OPTION_ER_2010_HPP
-#include <boost/assign/v2/option/data_generator/key.hpp>
-#include <boost/assign/v2/option/modifier/iterate.hpp>
-#include <boost/assign/v2/option/modifier/mapped.hpp>
-#include <boost/assign/v2/option/modifier/framework.hpp>
-#include <boost/assign/v2/option/modifier/repeat.hpp>
-#include <boost/assign/v2/option/modifier/std.hpp>
+#include <boost/assign/v2/option/data_generator.hpp>
+#include <boost/assign/v2/option/modifier.hpp>
 
 #endif // BOOST_ASSIGN_V2_OPTION_ER_2010_HPP

Modified: sandbox/assign_v2/boost/assign/v2/option/data_generator/framework.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/data_generator/framework.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/option/data_generator/framework.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -49,10 +49,11 @@
     }/*->*/;
 
     // Overrides data generator
- template<typename C, typename F, typename Tag, typename D, typename F1>
+ template<typename C, typename F, typename ModifierTag
+ , typename DataTag, typename D, typename F1>
     typename ::boost::mpl::apply1<result_of::option_data_generator<D>, F1>::type
     operator%(
- interpreter_crtp<C, F, Tag, D> const& lhs,
+ interpreter_crtp<C, F, ModifierTag, DataTag, D> const& lhs,
         option_data_generator<F1> const& rhs
     )/*<-*/
     {
@@ -115,9 +116,6 @@
 #include <boost/assign/v2/detail/functor/constructor.hpp>
 BOOST_ASSIGN_V2_OPTION_DATA_GENERATE(constructor, v2::functor_aux::constructor<T>)
 
-#include <boost/assign/v2/detail/functor/new.hpp>
-BOOST_ASSIGN_V2_OPTION_DATA_GENERATE(new_ptr, v2::functor_aux::new_<T>)
-
 #include <boost/typeof/typeof.hpp>
 #include <boost/type_traits/add_const.hpp>
 #define BOOST_ASSIGN_V2_OPTION_DATA_KEYWORD(NAME, EXPR)\

Modified: sandbox/assign_v2/boost/assign/v2/option/data_generator/key.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/data_generator/key.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/option/data_generator/key.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -9,8 +9,7 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_OPTION_DATA_GENERATOR_KEY_ER_2010_HPP
 #define BOOST_ASSIGN_V2_OPTION_DATA_GENERATOR_KEY_ER_2010_HPP
-#include <boost/assign/v2/detail/traits/ptr_container/meta.hpp>
-#include <boost/assign/v2/detail/traits/value_container/category.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 #include <boost/assign/v2/interpreter/data_generator.hpp>
 #include <boost/assign/v2/option/data_generator/framework.hpp>
 #include <boost/mpl/apply.hpp>
@@ -29,11 +28,7 @@
         typename C // Value or pointer-container
>
     struct deduce_key_generator/*<-*/
- : boost::mpl::eval_if<
- container_aux::is_ptr_container<C>,
- deduce_ptr_generator<C, container_key>,
- deduce_value_generator<C, container_key>
- >
+ : deduce_data_generator<C, container_key>
     {}/*->*/;
 
     struct option_key{};
@@ -53,19 +48,14 @@
     // Overrides data generator with a constructor for C::key_type
     template<
         typename C // Associative container
- , typename F, typename Tag, typename D
+ , typename F, typename ModifierTag, typename DataTag, typename D
>
     typename /*<-*/boost::lazy_enable_if<
- ::boost::mpl::apply1<
- container_aux::through_value_container<
- container_aux::is_sorted
- >,
- C
- >,/*->*/
+ container_aux::is_sorted<C>,/*->*/
         result_of::option_key<C, D>/*<-*/
>::/*->*/type
     operator%(
- interpreter_crtp<C, F, Tag, D> const& lhs,
+ interpreter_crtp<C, F, ModifierTag, DataTag, D> const& lhs,
         option_key rhs
     )/*<-*/
     {

Modified: sandbox/assign_v2/boost/assign/v2/option/modifier/framework.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/modifier/framework.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/option/modifier/framework.hpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -88,13 +88,13 @@
             
 }// result_of
 
- template<typename C, typename F, typename Tag, typename D,
+ template<typename C, typename F, typename ModifierTag, typename DataTag, typename D,
         typename Keyword, typename Arg>
     typename ::boost::mpl::apply2<
         result_of::option_modifier<D>, Keyword, Arg
>::type
     operator%(
- interpreter_crtp<C, F, Tag, D> const& lhs,
+ interpreter_crtp<C, F, ModifierTag, DataTag, D> const& lhs,
         option_modifier<Keyword, Arg> const& rhs
     )/*<-*/
     {
@@ -116,8 +116,8 @@
 
 }// interpreter_aux
 
- /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/#define BOOST_ASSIGN_V2_OPTION_MODIFIER_KEYWORD(NAME) unspecified/*<-*/)/*->*/
- /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/#define BOOST_ASSIGN_V2_OPTION_MODIFIER_META_MODIFIER_TAG(NAME, Result) unspecified/*<-*/)/*->*/
+/*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/#define BOOST_ASSIGN_V2_OPTION_MODIFIER_KEYWORD(NAME) unspecified/*<-*/)/*->*/
+/*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/#define BOOST_ASSIGN_V2_OPTION_MODIFIER_META_MODIFIER_TAG(NAME, Result) unspecified/*<-*/)/*->*/
 
 //]
 namespace result_of{

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-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -13,6 +13,7 @@
 #include <boost/assign/v2/detail/keyword/ignore.hpp>
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
 #include <boost/assign/v2/detail/pp/ignore.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 #include <boost/assign/v2/interpreter/fwd.hpp>
 #include <boost/assign/v2/option/modifier/framework.hpp>
 #include <boost/call_traits.hpp>
@@ -72,29 +73,28 @@
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 
         template<typename C, typename T>
- typename boost::disable_if<
- boost::is_reference<T>,
- void
- >::type
- impl(C& cont, T&& t )const
+ void impl(C& cont, T&& t, data_tag::value )const
         {
- cont.at( (*this->ptr)() ) = std::move( t );
+ cont.at( (*this->ptr)() ) = std::forward<T>( t );
         }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
-#endif
-
+#else
+
         template<typename C, typename T>
- void impl(C& cont, T& t )const
+ void impl(C& cont, T& t, data_tag::value )const
         {
             cont.at( (*this->ptr)() ) = t;
         }
-
+
+#endif
+
         template<typename C, typename T>
- void impl(C& cont, T* t)const
+ void impl(C& cont, T& t, data_tag::ptr )const
         {
- cont.replace( (*this->ptr)(), t);
+ typedef typename container_aux::value<C>::type value_;
+ cont.replace( (*this->ptr)(), new value_( t ) );
         }
-
+
         protected:
         ptr_ ptr;
 

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-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -11,6 +11,7 @@
 #define BOOST_ASSIGN_V2_OPTION_MODIFIER_MAPPED_ER_2010_HPP
 #include <boost/assign/v2/detail/keyword/ignore.hpp>
 #include <boost/assign/v2/detail/pp/ignore.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 #include <boost/assign/v2/interpreter/fwd.hpp>
 #include <boost/assign/v2/option/modifier/framework.hpp>
 #include <boost/call_traits.hpp>
@@ -50,7 +51,7 @@
 
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
         template<typename C, typename T>
- void impl(C& cont, T&& key )const
+ void impl(C& cont, T&& key, data_tag::storage_value )const
         {
             cont[ key ] = (*this->ptr)( cont[ std::forward<T>( key ) ] );
         }
@@ -58,7 +59,7 @@
 #else
 
         template<typename C, typename T>
- void impl(C& cont, T& key )const{
+ void impl(C& cont, T& key, data_tag::storage_value )const{
             cont[ key ] = (*this->ptr)( cont[ key ] );
         }
 

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-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -12,6 +12,7 @@
 #include <cstddef>
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
 #include <boost/assign/v2/detail/pp/ignore.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 #include <utility>
 #include <boost/utility/enable_if.hpp>
@@ -46,32 +47,23 @@
         {}
 
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
- template<typename C, typename T>
- typename boost::disable_if<
- boost::is_reference<T>,
- void
- >::type
- impl(C& cont, T&& t )const
+ 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 ) );
+ while(m--) this->inner_.impl( cont, std::forward<T>( t ), tag );
         }
 
-#endif
+#else
 
- template<typename C, typename T>
- void impl(C& cont, T& t )const
+ 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, t );
+ while(m--) this->inner_.impl( cont, t, tag );
         }
 
- template<typename C, typename T>
- void impl(C& cont, T* t)const
- {
- size_type m = this->size();
- while(m--) this->inner_.impl( cont, t );
- }
+#endif
 
         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-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -10,6 +10,7 @@
 #ifndef BOOST_ASSIGN_V2_OPTION_MODIFIER_STD_ER_2010_HPP
 #define BOOST_ASSIGN_V2_OPTION_MODIFIER_STD_ER_2010_HPP
 #include <boost/assign/v2/detail/keyword/ignore.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
 #include <boost/assign/v2/interpreter/fwd.hpp>
 #include <boost/assign/v2/option/modifier/framework.hpp>
 #include <boost/preprocessor/cat.hpp>
@@ -25,17 +26,17 @@
 }// assign
 }// boost
 
-#define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_PTR(FUN)\
+
+#define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_CPP03(FUN)\
     template<typename C, typename T>\
- void impl(C& cont, T* t)const{\
- cont.FUN( t );\
-}\
-/**/
-#define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_LVALUE(FUN)\
+ void impl(C& cont, T& t, data_tag::value)const{\
+ cont.FUN( t );\
+ }\
     template<typename C, typename T>\
- void impl(C& cont, T& t)const{\
- cont.FUN( 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>
@@ -43,24 +44,24 @@
 #include <utility>
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/is_reference.hpp>
-// disable_if necessary to avoid ambiguity resolution with GCC4.4
+// disable_if necessary to avoid ambiguity resolution
 #define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_RVALUE(FUN)\
     template<typename C, typename T>\
         typename boost::disable_if<\
         boost::is_reference<T>,\
         void\
>::type\
- impl(C& cont, T&& t)const{\
- cont.FUN( std::move( t ) );\
+ 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_LVALUE(FUN)\
+BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_CPP03(FUN)\
 BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_RVALUE(FUN)\
 /**/
 #else
 #define BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL(FUN)\
-BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_LVALUE(FUN)\
+BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_IMPL_CPP03(FUN)\
 /**/
 #endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 
@@ -105,9 +106,6 @@
 }\
 /**/
 
-BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_TAG(insert)
-BOOST_ASSIGN_V2_OPTION_STD_MODIFIER(insert)
-
 BOOST_ASSIGN_V2_OPTION_STD_MODIFIER_TAG(push)
 BOOST_ASSIGN_V2_OPTION_STD_MODIFIER(push)
 

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-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -22,23 +22,31 @@
 //[syntax_put
 namespace interpreter_aux{
 
- template<typename C, typename F, typename Tag>
+ template<typename C, typename F, typename ModifierTag, typename DataTag>
     class put_interpreter :
 //<-
         protected ref::wrapper< ref::assign_tag::copy, C >,
 //->
- public interpreter_aux::interpreter_crtp< C, F, Tag, put_interpreter<C, F, Tag> >
+ public interpreter_aux::interpreter_crtp<
+ C,
+ F,
+ ModifierTag, DataTag, put_interpreter<C, F, ModifierTag, DataTag>
+ >
     {
 //<-
- typedef interpreter_aux::interpreter_crtp< C, F, Tag, put_interpreter > super2_t;
+ typedef interpreter_aux::interpreter_crtp<
+ C, F, ModifierTag, DataTag, put_interpreter
+ > super2_t;
 //->
         public:
 
- typedef /*<-*/ typename super2_t::result_type BOOST_ASSIGN_V2_IGNORE(/*->*/ unspecified /*<-*/) /*->*/result_type;
+ typedef /*<-*/ typename super2_t::result_type
+ BOOST_ASSIGN_V2_IGNORE(/*->*/ unspecified /*<-*/)/*->*/
+ result_type;
 //<-
         protected:
 
- typedef interpreter_aux::interpreter_modifier<Tag> modifier_;
+ typedef interpreter_aux::interpreter_modifier<ModifierTag> modifier_;
         typedef ref::assign_tag::copy assign_tag_;
         typedef ref::wrapper<assign_tag_,C> super1_t;
 //->
@@ -59,16 +67,40 @@
 
     };
 
- template<typename C, typename F, typename Tag>
- struct replace_data_generator< interpreter_aux::put_interpreter<C, F, Tag> >{
+ template<typename C, typename F, typename ModifierTag, typename DataTag>
+ struct replace_data_generator<
+ interpreter_aux::put_interpreter<C, F, ModifierTag, DataTag>
+ >{
         template<typename F1>
- struct apply/*<-*/{ typedef interpreter_aux::put_interpreter<C, F1, Tag> type; }/*->*/;
+ struct apply/*<-*/{
+ typedef interpreter_aux::put_interpreter<
+ C, F1, ModifierTag, DataTag
+ > type;
+ }/*->*/;
     };
 
- template<typename C, typename F, typename Tag>
- struct replace_modifier_tag< interpreter_aux::put_interpreter<C, F, Tag> >{
- template<typename Tag1>
- struct apply/*<-*/{ typedef interpreter_aux::put_interpreter<C, F, Tag1> type; }/*->*/;
+ template<typename C, typename F, typename ModifierTag, typename DataTag>
+ struct replace_modifier_tag<
+ interpreter_aux::put_interpreter<C, F, ModifierTag, DataTag>
+ >{
+ template<typename ModifierTag1>
+ struct apply/*<-*/{
+ typedef interpreter_aux::put_interpreter<
+ C, F, ModifierTag1, DataTag
+ > type;
+ }/*->*/;
+ };
+
+ template<typename C, typename F, typename ModifierTag, typename DataTag>
+ struct replace_data_tag<
+ interpreter_aux::put_interpreter<C, F, ModifierTag, DataTag>
+ >{
+ template<typename DataTag1>
+ struct apply/*<-*/{
+ typedef interpreter_aux::put_interpreter<
+ C, F, ModifierTag, DataTag1
+ > type;
+ }/*->*/;
     };
 
 }// interpreter_aux
@@ -78,7 +110,10 @@
     struct put{/*<-*/
         typedef typename interpreter_aux::deduce_data_generator<C>::type f_;
         typedef typename interpreter_aux::deduce_modifier_tag<C>::type modifier_tag_;
- /*->*/typedef /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)interpreter_aux::put_interpreter<C, f_, modifier_tag_>/*->*/ type;
+ typedef typename interpreter_aux::deduce_data_tag<C>::type data_tag_;
+ /*->*/typedef /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)
+ interpreter_aux::put_interpreter<C, f_, modifier_tag_, data_tag_>/*->*/
+ type;
     };
 
 }// result_of

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-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -34,7 +34,7 @@
 
         /*<-*/BOOST_STATIC_CONSTANT( bool, is_const = boost::is_const<T>::value );/*->*/
 
- BOOST_ASSIGN_V2_IGNORE(static bool is_const;)
+ BOOST_ASSIGN_V2_IGNORE(static bool is_const;)
 
         wrapper()/*<-*/
             {/*TODO or null pointer?*/}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/

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-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -24,7 +24,7 @@
 /*#include <fstream>
 #include <libs/assign/v2/speed/test.h>*/
 
-#include <boost/assign/v2/include.hpp>
+//#include <boost/assign/v2/include.hpp>
 
 int main (int argc, char * const argv[])
 {
@@ -64,16 +64,16 @@
     }
     {
         using namespace test_assign_v2;
- xxx_chain::test();
- xxx_conversion::test();
- xxx_csv::test();
- xxx_detail::test();
- xxx_deque::test();
- xxx_interpreter::test();
- xxx_option::test();
- xxx_pipe::test();
- xxx_put::test();
- xxx_ref::test();
+ //xxx_chain::test();
+ //xxx_conversion::test();
+ //xxx_csv::test();
+ //xxx_detail::test();
+ //xxx_deque::test();
+ //xxx_interpreter::test();
+ //xxx_option::test();
+ //xxx_pipe::test();
+ //xxx_put::test();
+ //xxx_ref::test();
     }
     {
         tutorial_assign_v2::run();

Modified: sandbox/assign_v2/libs/assign/v2/test/option/std_modifier.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/option/std_modifier.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/option/std_modifier.cpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -61,17 +61,17 @@
         {
             // fully qual boost::begin/end demanded by MSVC - error C2668
             //[test_option_push_front
- boost::circular_buffer<int> cb(3);
+ boost::circular_buffer<int> cb(3);
              ( as2::put( cb ) % as2::_push_front)( 3 )( 2 )( 1 );
              
              BOOST_ASSIGN_V2_CHECK(
- range::equal(cb, as2::csv_deque(1, 2, 3) )
+ range::equal(cb, as2::csv_deque(1, 2, 3) )
              );
 
             as2::put( cb )( 4 )( 5 );
 
              BOOST_ASSIGN_V2_CHECK(
- range::equal(cb, as2::csv_deque(3, 4, 5) )
+ range::equal(cb, as2::csv_deque(3, 4, 5) )
              );
 
             //]

Modified: sandbox/assign_v2/libs/assign/v2/test/put.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/put.cpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -16,7 +16,7 @@
 
     void test(){
 
- xxx_ptr::test();
+ //xxx_ptr::test();
         xxx_put::test();
 
     }

Modified: sandbox/assign_v2/libs/assign/v2/test/put/ptr.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/ptr.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/ptr.cpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -73,10 +73,11 @@
             //[put_ptr_map
             typedef std::string key_;
             boost::ptr_map<key_, int> assoc;
- //( as2::put( assoc ) % _key % _mapped ) ( "jan", 31 )( "feb", 28 )( "mar", 31 );
- //key_ key = "jan";
- //std::pair<key_, int*> p( key, new int(31) );
- //assoc.insert( p );
+ as2::put( assoc )( "jan", 31 )( "feb", 28 )( "mar", 31 );
+ key_ key = "jan";
+ //typedef std::auto_ptr<int> auto_;
+ //std::pair< const key_, const auto_ > p( key, auto_( new int( 31 ) ) );
+ //assoc.base().insert( p );
             //]
         }
         {
@@ -88,18 +89,19 @@
             BOOST_ASSIGN_V2_CHECK( assoc.count( z ) == 1 );
             //]
         }
- {/*
- //[test_put_put_unordered_map
- boost::ptr_unordered_map<std::string, int> map;
+ {
+ /*
+ //[test_put_put_unordered_map
+ boost::ptr_unordered_map<std::string, int> map;
             as2::put( map )("foo", 1)("bar", 2)("baz", 3);
 
             BOOST_ASSIGN_V2_CHECK( map["foo"] == 1 );
             BOOST_ASSIGN_V2_CHECK( map["baz"] == 3 );
             //]
         */}
- {
- //[test_put_put_unordered_set
- boost::ptr_unordered_set<std::string> set;
+ {
+ //[test_put_put_unordered_set
+ boost::ptr_unordered_set<std::string> set;
             as2::put( set )("foo")("bar")("baz");
 
             BOOST_ASSIGN_V2_CHECK( set.count("foo") == 1 );

Modified: sandbox/assign_v2/libs/assign/v2/test/put/put.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/put/put.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/put/put.cpp 2011-03-28 16:47:24 EDT (Mon, 28 Mar 2011)
@@ -23,8 +23,9 @@
 #include <boost/unordered_set.hpp>
 
 #include <boost/assign/v2/detail/config/check.hpp>
-#include <boost/assign/v2/put.hpp>
+#include <boost/assign/v2/detail/traits.hpp>
 #include <boost/assign/v2/deque/csv_deque.hpp>
+#include <boost/assign/v2/put.hpp>
 #include <boost/tuple/tuple.hpp>
 #include <boost/range/algorithm_ext/iota.hpp>
 #include <boost/range/begin.hpp>
@@ -48,7 +49,8 @@
 
         {
              //[test_put_put_bitset
- typedef std::string str_; typedef std::bitset<3> data_; /*<<Keep in mind that although `data_( str_( "011" ) )`, for instance, is valid, `consecutive.push_back( str_( "011" ) )` isn't (GCC4.2)>>*/ std::vector<data_> consecutive;
+ typedef std::string str_; typedef std::bitset<3> data_;
+ /*<<Keep in mind that although `data_( str_( "011" ) )`, for instance, is valid, `consecutive.push_back( str_( "011" ) )` isn't (GCC4.2)>>*/ std::vector<data_> consecutive;
             /*<<Calls `consecutive.push_back( data_( t ) );` for [^t = ]`str_( "000" )`[^, ..., ]`str_( "111" )`>>*/as2::put( consecutive )
                 ( str_( "000" ) )( str_( "001" ) )
                 ( str_( "010" ) )( str_( "011" ) )
@@ -131,18 +133,18 @@
             BOOST_ASSIGN_V2_CHECK( get<1>( tri_state_area.front() ) == 212 );
             BOOST_ASSIGN_V2_CHECK( get<0>( tri_state_area.back() ) == ct );
         }
- {
- //[test_put_put_unordered_map
- boost::unordered_map<std::string, int> map;
+ {
+ //[test_put_put_unordered_map
+ boost::unordered_map<std::string, int> map;
             as2::put( map )("foo", 1)("bar", 2)("baz", 3);
 
             BOOST_ASSIGN_V2_CHECK( map["foo"] == 1 );
             BOOST_ASSIGN_V2_CHECK( map["baz"] == 3 );
             //]
         }
- {
- //[test_put_put_unordered_set
- boost::unordered_set<std::string> set;
+ {
+ //[test_put_put_unordered_set
+ boost::unordered_set<std::string> set;
             as2::put( set )("foo")("bar")("baz");
 
             BOOST_ASSIGN_V2_CHECK( set.count("foo") == 1 );
@@ -150,21 +152,21 @@
             //]
         }
         {
- //test_put_put_cb
- boost::circular_buffer<int> cb(3);
+ //test_put_put_cb
+ boost::circular_buffer<int> cb(3);
              as2::put( cb )( 1 )( 2 )( 3 );
              
              BOOST_ASSIGN_V2_CHECK(
- range::equal(cb, as2::csv_deque(1, 2, 3) )
+ range::equal(cb, as2::csv_deque(1, 2, 3) )
              );
 
              as2::put( cb )( 4 )( 5 );
 
              BOOST_ASSIGN_V2_CHECK(
- range::equal(cb, as2::csv_deque(3, 4, 5) )
+ range::equal(cb, as2::csv_deque(3, 4, 5) )
              );
- //]
- }
+ //]
+ }
     }// test()
 
 }// xxx_put


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk