Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r70239 - in sandbox/assign_v2: boost/assign/v2/ref/aux_/list boost/assign/v2/ref/aux_/list/holder boost/assign/v2/ref/aux_/list_tuple boost/assign/v2/ref/aux_/list_tuple/cpp03 boost/assign/v2/ref/aux_/list_tuple/cpp0x boost/assign/v2/ref/aux_/tuple/cpp0x boost/assign/v2/utility boost/assign/v2/value/pipe libs/assign/v2 libs/assign/v2/src libs/assign/v2/test/ref libs/assign/v2/test/ref/aux_ libs/assign/v2/test/utility libs/assign/v2/test/value libs/assign/v2/test/value/modifier libs/assign/v2/test/value/pipe libs/assign/v2/test/value/pipe/modifier
From: erwann.rogard_at_[hidden]
Date: 2011-03-20 20:12:06


Author: e_r
Date: 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
New Revision: 70239
URL: http://svn.boost.org/trac/boost/changeset/70239

Log:
upd assign_v2
Text files modified:
   sandbox/assign_v2/boost/assign/v2/ref/aux_/list/as_modulo_list.hpp | 9 ++
   sandbox/assign_v2/boost/assign/v2/ref/aux_/list/container.hpp | 28 ++++++---
   sandbox/assign_v2/boost/assign/v2/ref/aux_/list/holder/tail.hpp | 15 +++-
   sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/cpp03/container.hpp | 117 +++++++++++++++++----------------------
   sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/cpp0x/container.hpp | 70 +++++++----------------
   sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/list_tuple.hpp | 53 +++++++----------
   sandbox/assign_v2/boost/assign/v2/ref/aux_/tuple/cpp0x/data.hpp | 3
   sandbox/assign_v2/boost/assign/v2/utility/csv.hpp | 7 ++
   sandbox/assign_v2/boost/assign/v2/value/pipe/arg_list.hpp | 20 +++---
   sandbox/assign_v2/boost/assign/v2/value/pipe/args_list.hpp | 6 +
   sandbox/assign_v2/libs/assign/v2/src/main.cpp | 10 ++
   sandbox/assign_v2/libs/assign/v2/test/ref/array.cpp | 7 +
   sandbox/assign_v2/libs/assign/v2/test/ref/aux_/list.cpp | 5 -
   sandbox/assign_v2/libs/assign/v2/test/ref/csv_array.cpp | 6 +
   sandbox/assign_v2/libs/assign/v2/test/utility/chain.cpp | 6 +
   sandbox/assign_v2/libs/assign/v2/test/value/fun.cpp | 5 +
   sandbox/assign_v2/libs/assign/v2/test/value/modifier/standard.cpp | 1
   sandbox/assign_v2/libs/assign/v2/test/value/pipe.cpp | 9 +-
   sandbox/assign_v2/libs/assign/v2/test/value/pipe/args_list.cpp | 6 +
   sandbox/assign_v2/libs/assign/v2/test/value/pipe/modifier/iterate.cpp | 3
   sandbox/assign_v2/libs/assign/v2/test/value/pipe/modifier/standard.cpp | 8 +-
   sandbox/assign_v2/libs/assign/v2/test/value/pipe/put.cpp | 11 ++-
   sandbox/assign_v2/libs/assign/v2/test/value/ptr.cpp | 10 +-
   sandbox/assign_v2/libs/assign/v2/test/value/put.cpp | 4 +
   sandbox/assign_v2/libs/assign/v2/tutorial.cpp | 4 +
   25 files changed, 216 insertions(+), 207 deletions(-)

Modified: sandbox/assign_v2/boost/assign/v2/ref/aux_/list/as_modulo_list.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/aux_/list/as_modulo_list.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/ref/aux_/list/as_modulo_list.hpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -11,6 +11,7 @@
 #define BOOST_ASSIGN_V2_LIST_REF_AS_MODULO_LIST_ER_2010_HPP
 #include <boost/assign/v2/ref/aux_/list/at.hpp>
 #include <boost/assign/v2/ref/aux_/list/fwd.hpp>
+#include <boost/config.hpp>
 #include <boost/mpl/at.hpp>
 #include <boost/mpl/size.hpp>
 #include <boost/typeof/typeof.hpp>
@@ -32,7 +33,13 @@
         {
             static Lhs lhs;
             static P p;
- typedef BOOST_TYPEOF_TPL( lhs % p ) type;
+
+#ifdef BOOST_MSVC
+ BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, lhs % p )
+ typedef typename nested::type type;
+#else
+ typedef BOOST_TYPEOF_TPL( lhs % p ) type;
+#endif
         };
         
         typedef typename result<at_>::type result_;

Modified: sandbox/assign_v2/boost/assign/v2/ref/aux_/list/container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/aux_/list/container.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/ref/aux_/list/container.hpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -25,13 +25,13 @@
 
     template<typename Tag, typename H, typename T>
     class container :
+ public tail_holder<T>, // (*) see holder/tail.hpp
         public head_holder<H>,
- public tail_holder<T>,
         public ::boost::mpl::apply2<policy<Tag>, H, T>::type
     {
 
- typedef head_holder<H> head_holder_;
         typedef tail_holder<T> tail_holder_;
+ typedef head_holder<H> head_holder_;
 
         public:
 
@@ -44,27 +44,37 @@
         };
 
         explicit container(
- H h,
- typename boost::call_traits<T>::param_type t
- )
- : head_holder_( h ), tail_holder_( t )
+ typename boost::call_traits<T>::param_type t,
+ H h
+ ):
+ tail_( t ) // // tail_holder_( t ) // (*)
+ , head_holder_( h )
         {}
 
         template<typename H1>
         typename result<H1&>::type
         operator()(H1& h)const{
             typedef typename result<H1&>::type result_;
- return result_( h, *this);
+ return result_( *this, h );
         }
 
         template<typename H1>
         typename result<H1 const&>::type
         operator()(H1 const& h)const{
             typedef typename result<H1 const&>::type result_;
- return result_( h, *this);
+ return result_( *this, h );
         }
         
-
+ typedef typename tail_holder_::result_of_tail_type result_of_tail_type;
+
+ // (*)
+ result_of_tail_type
+ tail()const{ return this->tail_; }
+
+ private:
+ typename boost::call_traits< // (*)
+ typename tail_holder_::result_of_tail_type
+ >::value_type tail_;
     };
 
 }// list_aux

Modified: sandbox/assign_v2/boost/assign/v2/ref/aux_/list/holder/tail.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/aux_/list/holder/tail.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/ref/aux_/list/holder/tail.hpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -24,16 +24,19 @@
     template<typename T>
     struct tail_holder
     {
+// (*) MSVC workaround : tail has to be variable, not a base class
+// http://social.msdn.microsoft.com/Forums/en/vclanguage/thread/68d0361c-1813-4689-aaa3-b78f47eaf8ad
+
+ //tail_holder(T const& t) : tail_( t ){}
+ //result_of_tail_type tail()const{ return this->tail_; }
+
         typedef T tail_type;
         typedef ::boost::mpl::int_<T::static_size::value + 1> static_size;
 
- tail_holder(T const& t) : tail_( t ){}
-
         typedef T const& result_of_tail_type;
- result_of_tail_type tail()const{ return this->tail_; }
 
- private:
- T const& tail_;
+ //private:
+ //T const& tail_;
     };
 
     template<>
@@ -42,6 +45,8 @@
         typedef nil tail_type;
         typedef ::boost::mpl::int_<0> static_size;
         tail_holder(){}
+
+ typedef tail_type result_of_tail_type;
     };
 
     template<typename T>

Modified: sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/cpp03/container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/cpp03/container.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/cpp03/container.hpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -11,6 +11,7 @@
 #define BOOST_ASSIGN_V2_REF_AUX_LIST_TUPLE_CPP03_CONTAINER_ER_2010_HPP
 #include <boost/assign/v2/detail/config/limit_arity.hpp>
 #include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
+#include <boost/call_traits.hpp>
 #include <boost/config.hpp>
 #include <boost/mpl/aux_/na.hpp>
 #include <boost/mpl/empty_base.hpp>
@@ -33,17 +34,17 @@
     typedef ::boost::tuples::null_type null_type;
     typedef ::boost::mpl::na na_type;
 
-#define params_default(T, U)\
+#define params_default(U, Na)\
     BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(\
         BOOST_ASSIGN_V2_LIMIT_ARITY,\
- T,\
- U\
+ U,\
+ Na\
     )\
 /**/
-#define params(T)\
+#define params(U)\
     BOOST_PP_ENUM_PARAMS(\
         BOOST_ASSIGN_V2_LIMIT_ARITY,\
- T\
+ U\
     )\
 /**/
 
@@ -61,10 +62,10 @@
     template<> struct vec_value<na_type>{ typedef na_type type; };
 
     template<params( typename T )>
- struct tuple
+ struct head_value
     {
 #define BOOST_ASSIGN_V2_MACRO(z, n, T)\
- typename list_tuple_aux::tuple_value<\
+ typename tuple_value<\
         BOOST_PP_CAT(T, n)\
>::type\
 /**/
@@ -88,72 +89,59 @@
     };
 
     template<list_size_type N,
- typename L, params_default(typename T, na_type)>
+ typename Tail, params_default(typename T, na_type)>
     class container;
 
- template<list_size_type N, typename L,
- params_default(typename T, na_type)
- >
- struct meta_result
+ template<list_size_type N, typename Tail,
+ params_default(typename T, na_type)>
+ struct traits
     {
-
- typedef list_tuple_aux::container<N, L, params(T)> this_;
-
- template<params_default(typename U, na_type)>
- struct apply
- {
- typedef container<
- N + 1,
- this_,
- params(U)
- > type;
+ typedef container<N, Tail, params(T)> cont_;
+ typedef typename head_value<params(T)>::type head_value_;
+ typedef fetch_tuple<N, Tail, head_value_, cont_> fetch_tuple_;
+ struct meta_result{
+ template<params_default(typename U, na_type)>
+ struct apply
+ {
+ typedef container<N + 1, cont_, params(U)> type;
+ };
         };
+ typedef ::boost::mpl::unpack_args<meta_result> unpacked_;
+ typedef functor_aux::crtp_unary_and_up<cont_, unpacked_> crtp_;
 
     };
 
- template<list_size_type N, typename L,
- params_default(typename T, na_type)>
- struct traits
- {
- typedef list_tuple_aux::container<N, L, params(T)> C;
- typedef typename list_tuple_aux::tuple<params(T)>::type tuple_;
- typedef list_tuple_aux::extraction<N, L, tuple_, C> extraction_;
- typedef list_tuple_aux::meta_result<N, L, params(T)> meta_result_;
- typedef functor_aux::crtp_unary_and_up<
- C,
- boost::mpl::unpack_args<meta_result_>
- > crtp_;
- typedef typename ::boost::mpl::eval_if_c<
- N == 0,
- ::boost::mpl::identity< ::boost::mpl::empty_base >,
- ::boost::mpl::identity< link<L> >
- >::type link_;
- };
-
- template<list_size_type N, typename L, params(typename T)>
+ template<list_size_type N, typename Tail, 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_,
- public list_tuple_aux::traits<N, L, params(T)>::extraction_
+ public traits<N, Tail, params(T)>::crtp_,
+ public traits<N, Tail, params(T)>::fetch_tuple_
     {
- typedef list_tuple_aux::traits<N, L, params(T)> traits_;
- typedef typename traits_::link_ link_;
- typedef typename traits_::meta_result_ meta_result_;
- typedef typename traits_::tuple_ tuple_;
+
+ typedef traits<N, Tail, params(T)> traits_;
+ typedef typename traits_::meta_result meta_result_;
+ typedef typename traits_::head_value_ head_value_;
         typedef typename traits_::crtp_ crtp_;
+ typedef typename ::boost::mpl::eval_if_c<
+ N == 0,
+ ::boost::mpl::identity< Tail >,
+ ::boost::mpl::identity< Tail const& >
+ >::type tail_value_;
 
- tuple_ tuple;
+ tail_value_ t;
+ head_value_ h;
 
         public:
- tuple_ const& get_tuple()const{ return this->tuple; }
- link_ const& get_link()const{ return (*this); }
+ typename boost::call_traits<tail_value_>::const_reference
+ tail()const{ return this->t; }
+ typename boost::call_traits<head_value_>::const_reference
+ head()const{ return this->h; }
 
         typedef list_tuple_aux::list_size_type list_size_type;
         typedef list_tuple_aux::tuple_size_type tuple_size_type;
         BOOST_STATIC_CONSTANT( list_size_type, static_get_size = N );
         BOOST_STATIC_CONSTANT(
             tuple_size_type,
- static_tuple_size = ::boost::tuples::length<tuple_>::value
+ static_tuple_size = ::boost::tuples::length<head_value_>::value
         );
 
         container()
@@ -161,15 +149,14 @@
             BOOST_STATIC_ASSERT( N == 0 );
         }
 
- explicit container(const L& l)
- : link_( l )
- {
- BOOST_STATIC_ASSERT( N > 0 );
-
- }
+ explicit container(const Tail& t_)
+ : t( t )
+ {
+ BOOST_STATIC_ASSERT( N > 0 );
+ }
 
 #define BOOST_ASSIGN_V2_MACRO1(T,R)\
- typename list_tuple_aux::tuple_param<T>::type R\
+ typename tuple_param<T>::type R\
 /**/
 #define BOOST_ASSIGN_V2_MACRO(z, n, T)\
     BOOST_ASSIGN_V2_MACRO1(\
@@ -179,16 +166,16 @@
         = boost::tuples::detail::cnull()\
 /**/
     explicit container(
- const L& l,
- BOOST_ASSIGN_V2_MACRO1(T0,_0) // (*)
+ const Tail& t_,
+ BOOST_ASSIGN_V2_MACRO1(T0, _0) // (*)
         BOOST_PP_ENUM_TRAILING(
             BOOST_PP_DEC(BOOST_ASSIGN_V2_LIMIT_ARITY),
             BOOST_ASSIGN_V2_MACRO,
             T
         )
     )
- : link_( l )
- , tuple(
+ : t( t_ )
+ , h(
         BOOST_PP_ENUM_PARAMS(BOOST_ASSIGN_V2_LIMIT_ARITY, _)
     )
     {

Modified: sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/cpp0x/container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/cpp0x/container.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/cpp0x/container.hpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -24,27 +24,6 @@
 namespace ref{
 namespace list_tuple_aux{
 
- template<list_size_type N,
- typename L, typename...Args> class container;
-
- template<list_size_type N, typename L, typename...Args>
- struct meta_result
- {
-
- typedef container<N, L, Args...> this_;
-
- template<typename... Args1>
- struct apply
- {
- typedef container<
- N + 1,
- this_,
- Args1...
- > type;
- };
-
- };
-
     template<typename NewState>
     struct result
     {
@@ -52,28 +31,27 @@
         struct apply : NewState::template result<Args...>{};
     };
 
- template<list_size_type N, typename L, typename...Args>
- class container :
- ::boost::mpl::eval_if_c<
- N == 0,
- ::boost::mpl::identity< ::boost::mpl::empty_base >,
- ::boost::mpl::identity< link<L> >
- >::type,
- public list_tuple_aux::extraction<
- N, L,
- tuple_aux::data<Args...>,
- list_tuple_aux::container<N, L, Args...>
- >
+ template<list_size_type N, typename Tail, typename...Args>
+ class container
+ : public fetch_tuple<
+ N, L,
+ tuple_aux::data<Args...>,
+ list_tuple_aux::container<N, Tail, Args...>
+ >
     {
- typedef link<L> link_;
- typedef meta_result<N, L, Args...> meta_result_;
+ typename ::boost::mpl::eval_if_c<
+ N == 0,
+ ::boost::mpl::identity< Tail >,
+ ::boost::mpl::identity< Tail const& >
+ >::type tail_value_;
+ typedef tuple_aux::data<Args...> head_value_;
 
- typedef tuple_aux::data<Args...> tuple_;
- tuple_ tuple;
+ tail_value_ t;
+ head_value_ h;
 
         public:
- tuple_ const& get_tuple()const{ return this->tuple; }
- link_ const& get_link()const{ return *this; }
+ tail_value_ const& tail()const{ return this->t; }
+ head_value_ const& head()const{ return this->h; }
 
         typedef list_tuple_aux::list_size_type list_size_type;
         typedef list_tuple_aux::tuple_size_type tuple_size_type;
@@ -90,20 +68,18 @@
         }
 
         explicit container(
- const L& l,
+ const Tail& t_,
             Args&&... args
- )
- : link_( l ),
- tuple(
- std::forward<Args>( args )...
- )
-
+ ) : t( t_ ), h( std::forward<Args>( args )... )
         {
             BOOST_STATIC_ASSERT( N > 0 );
         }
 
         template<typename... Args1>
- struct result : meta_result_::template apply<Args1...>{};
+ struct result
+ {
+ typedef container<N + 1, container, Args1...> type;
+ };
 
         template<typename... Args1>
         typename result<Args1...>::type

Modified: sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/list_tuple.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/list_tuple.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/ref/aux_/list_tuple/list_tuple.hpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -26,18 +26,19 @@
 
     struct root{};
 
- template<typename T>
- struct link
- {
-
- link(T const& t) : unlink( t ){}
-
- T const& unlink;
- };
+// (*) MSVC workaround : tail has to be variable, not a base class
+// http://social.msdn.microsoft.com/Forums/en/vclanguage/thread/68d0361c-1813-4689-aaa3-b78f47eaf8ad
+// template<typename T>
+// struct tail_holder
+// {
+//
+// tail_holder(T const& t) : tail( t ){}
+//
+// T const& tail;
+// };
 
- template<list_size_type N,
- typename L, typename T, typename D>
- class extraction
+ template<list_size_type N, typename H, typename T, typename D>
+ class fetch_tuple
     {
         typedef D const& result_of_derived_;
         result_of_derived_ derived()const
@@ -49,39 +50,31 @@
 
         public:
 
- template<list_size_type I>
+ template<list_size_type I>
         struct is_head : ::boost::mpl::bool_< I + 1 == N >{};
-
         template<list_size_type I>
- struct link_get_result : L::template get_result<I>{};
+ struct tail_result : H::template get_result<I>{};
+ struct head_result{ typedef T const& type; };
 
         template<list_size_type I>
         struct get_result : ::boost::mpl::eval_if<
- is_head<I>,
- ::boost::mpl::identity<
- T const&
- >,
- link_get_result<I>
+ is_head<I>,
+ head_result,
+ tail_result<I>
>{};
 
         template<list_size_type I>
- typename boost::lazy_enable_if<
- is_head<I>,
- get_result<I>
- >::type
- get(boost::mpl::int_<I> index)const
+ typename boost::lazy_enable_if<is_head<I>, get_result<I> >::type
+ get( ::boost::mpl::int_<I> index)const
         {
- return this->derived().get_tuple();
+ return this->derived().head();
         }
 
         template<list_size_type I>
- typename boost::lazy_disable_if<
- is_head<I>,
- get_result<I>
- >::type
+ typename boost::lazy_disable_if<is_head<I>, get_result<I> >::type
         get( ::boost::mpl::int_<I> index )const
         {
- return this->derived().get_link().unlink.get( index );
+ return this->derived().tail().get( index );
         }
 
     };

Modified: sandbox/assign_v2/boost/assign/v2/ref/aux_/tuple/cpp0x/data.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/aux_/tuple/cpp0x/data.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/ref/aux_/tuple/cpp0x/data.hpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -15,8 +15,7 @@
 #include <boost/type_traits/add_reference.hpp>
 #include <boost/type_traits/is_reference.hpp>
 
-// This tuple variant keeps a copy of rvalue reference. Expression templates
-// involving references to tuples otheriwse cause runtime errors in Release mode under OS X.
+// Keeps copy of rvalue (otherwise reference to temporary problem)
 
 namespace boost{
 namespace assign{

Modified: sandbox/assign_v2/boost/assign/v2/utility/csv.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/utility/csv.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/utility/csv.hpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -11,6 +11,7 @@
 #define BOOST_ASSIGN_V2_UTILITY_CSV_ER_2010_HPP
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
 #include <boost/assign/v2/detail/pp/ignore.hpp>
+#include <boost/config.hpp>
 #include <boost/typeof/typeof.hpp>
 #include <boost/mpl/apply.hpp>
 #include <boost/mpl/fold.hpp>
@@ -36,7 +37,13 @@
     {
         static F f;
         static T t;
+#ifdef BOOST_MSVC
+ BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, f( t ) )
+ typedef typename nested::type type;
+#else
         typedef BOOST_TYPEOF_TPL( f( t ) ) type;
+#endif
+
     };
 
     template<typename F>

Modified: sandbox/assign_v2/boost/assign/v2/value/pipe/arg_list.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/value/pipe/arg_list.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/value/pipe/arg_list.hpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -104,16 +104,6 @@
         struct result{
             typedef value_aux::arg_list<ParList, N, U> type;
         };
-
- typename result<0>::type
- operator()()const
- {
- typedef typename result<0>::type result_;
- return result_(
- *this,
- ref::csv_array<na_>( _nil )
- );
- }
  
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 
@@ -151,6 +141,16 @@
 
 #else
 
+ typename result<0>::type
+ operator()()const
+ {
+ typedef typename result<0>::type result_;
+ return result_(
+ *this,
+ ref::csv_array<na_>( _nil )
+ );
+ }
+
 #define BOOST_ASSIGN_V2_MACRO1(N, U)\
     return result_( \
         this->par_list_cont(), \

Modified: sandbox/assign_v2/boost/assign/v2/value/pipe/args_list.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/value/pipe/args_list.hpp (original)
+++ sandbox/assign_v2/boost/assign/v2/value/pipe/args_list.hpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -41,7 +41,11 @@
     typedef ref::list_tuple_aux::na_type na_type;
 #endif
 
- template<typename ParList = empty_par_list_, typename ArgsList = empty_args_list_, bool enable_pars = ::boost::mpl::size<ArgsList>::value == 0>
+ template<
+ typename ParList = empty_par_list_,
+ typename ArgsList = empty_args_list_,
+ bool enable_pars = ::boost::mpl::size<ArgsList>::value == 0
+ >
     class args_list;
 
     template<typename ParList, typename ArgsList, bool enable_pars>

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-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -3,12 +3,13 @@
 #include <boost/config.hpp>
 #include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
 #include <boost/format.hpp>
+#include <boost/version.hpp>
 
 // Test
 #include <libs/assign/v2/test/detail.h>
 #include <libs/assign/v2/test/ref.h>
 #include <libs/assign/v2/test/value.h>
-#include <libs/assign/v2/test/utility.h>
+//#include <libs/assign/v2/test/utility.h>
 
 // Tutorial
 #include <libs/assign/v2/tutorial.h>
@@ -23,6 +24,11 @@
 {
 
     // Do not put libs/assign/v2/test/unit_testing in this project
+ {
+ boost::format f( "boost version %1%.%2% %3% " );
+ f % (BOOST_VERSION / 100000 ) % ( (BOOST_VERSION / 100) % 1000) % (BOOST_VERSION % 100 );
+ std::cout << f.str() << std::endl;
+ }
     {
         std::string str = "RVALUE_REFERENCE : %1%\n";
         str += "VARIADIC_TEMPLATES : %2%\n";
@@ -55,7 +61,7 @@
         xxx_detail::test();
         xxx_value::test();
         xxx_ref::test();
- xxx_utility::test();
+// xxx_utility::test();
     }
     {
         tutorial_assign_v2::run();

Modified: sandbox/assign_v2/libs/assign/v2/test/ref/array.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/ref/array.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/ref/array.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -21,6 +21,9 @@
 namespace xxx_ref{
 namespace xxx_array{
 
+ // MSVC REMINDER : fully qualify boost::begin boost::end - error C2668
+
+
     void test()
     {
         using namespace boost;
@@ -46,7 +49,7 @@
             //]
             {
                 T& a = ( *begin( ar4 ) );
- T& b = *next( begin( ar4 ), ar4.size() - 1 );
+ T& b = *next(boost::begin( ar4 ), ar4.size() - 1 );
 
                 BOOST_ASSIGN_V2_CHECK( &a == &w );
                 BOOST_ASSIGN_V2_CHECK( &b == &z );
@@ -55,7 +58,7 @@
         {
             //[test_ref_array_write
             typedef int T; T x, y, z; std::vector<T> r( 3 ); r[0] = 72; r[1] = 31; r[2] = 48;
- boost::copy( r, begin( as2::ref::array( x )( y )( z ) | as2::ref::_get ) );
+ boost::copy( r,boost::begin( as2::ref::array( x )( y )( z ) | as2::ref::_get ) );
 
             BOOST_ASSIGN_V2_CHECK( x == r[0] );
             BOOST_ASSIGN_V2_CHECK( z == r[2] );

Modified: sandbox/assign_v2/libs/assign/v2/test/ref/aux_/list.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/ref/aux_/list.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/ref/aux_/list.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -41,12 +41,7 @@
             typedef add_reference<t0_>::type r0_;
 
 
-/* // TODO possible extension
-#ifndef BOOST_NO_RVALUE_REFERENCES
- typedef int r1_;
-#else*/
             typedef add_reference<t1_>::type r1_;
-//#endif
             typedef add_reference<t2_>::type r2_;
 
             t0_ a = 0;

Modified: sandbox/assign_v2/libs/assign/v2/test/ref/csv_array.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/ref/csv_array.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/ref/csv_array.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -20,6 +20,8 @@
 namespace xxx_ref{
 namespace xxx_csv_array{
 
+ // MSVC REMINDER : fully qualify boost::begin boost::end - error C2668
+
     void test()
     {
         using namespace boost;
@@ -45,7 +47,7 @@
             }
             {
                 T& a = (*begin( ar ) );
- T& b = *next( begin( ar ), 2 );
+ T& b = *next(boost::begin( ar ), 2 );
 
                 BOOST_ASSIGN_V2_CHECK( &a == &x );
                 BOOST_ASSIGN_V2_CHECK( &b == &z );
@@ -55,7 +57,7 @@
             //[test_ref_csv_array_write
             typedef int T; T x, y, z;
             std::vector<T> r( 3 ); r[0] = 72; r[1] = 31; r[2] = 48;
- boost::copy( r, begin( as2::ref::csv_array( x, y, z ) | as2::ref::_get ) );
+ boost::copy( r,boost::begin( as2::ref::csv_array( x, y, z ) | as2::ref::_get ) );
 
             BOOST_ASSIGN_V2_CHECK( x == r[0] );
             BOOST_ASSIGN_V2_CHECK( z == r[2] );

Modified: sandbox/assign_v2/libs/assign/v2/test/utility/chain.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/utility/chain.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/utility/chain.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -26,6 +26,8 @@
 namespace xxx_utility{
 namespace xxx_chain{
 
+ // MSVC REMINDER : fully qualify boost::begin boost::end - error C2668
+
     void test()
     {
         using namespace boost;
@@ -54,7 +56,7 @@
             words[0] = "foo"; words[1] = "bar"; words[2] = "baz";
             words[3] = "qux"; words[4] = "quux"; words[5] = "grault";
             array<word, 3> head; std::list<word> tail( 3 );
- copy( words, begin( head | as2::_chain( tail ) ) );
+ copy( words,boost::begin( head | as2::_chain( tail ) ) );
 
             BOOST_ASSIGN_V2_CHECK( range::equal( head, as2::csv_deque<word>( "foo", "bar", "baz" ) ) );
             BOOST_ASSIGN_V2_CHECK( range::equal( tail, as2::csv_deque<word>( "qux", "quux", "grault" ) ) );
@@ -68,7 +70,7 @@
             array<int, 5> consecutive5; int six, seven, eight;
             boost::copy(
                 consecutive8,
- begin( consecutive5 && (/*<< rvalue! >>*/ as2::ref::csv_array( six, seven, eight ) | as2::ref::_get ) )
+ boost::begin( consecutive5 && (/*<< rvalue! >>*/ as2::ref::csv_array( six, seven, eight ) | as2::ref::_get ) )
             );
 
             BOOST_ASSIGN_V2_CHECK( range::equal( consecutive5, as2::csv_deque( 1, 2, 3, 4, 5 ) ) );

Modified: sandbox/assign_v2/libs/assign/v2/test/value/fun.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/value/fun.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/value/fun.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -37,14 +37,15 @@
         using namespace boost;
         namespace as2 = assign::v2;
         {
+ // (*fp) resolves error C2440 using MSVC
             //[test_value_fun_math
             std::vector<double> exponent;
+ typedef double(*fp)(double);
             typedef function<double(double)> f_;
             (
- as2::put( exponent ) % ( as2::_fun = f_( log10 ) )
+ as2::put( exponent ) % ( as2::_fun = f_( fp(log10) ) )
             )/*<<Equivalent to `as2::put( exponent )( log10( 1000.0 ) )( log10( 10.0 ) )( log10( 10000.0 ) )( log10( 1.0 ) )( log10( 100.0 ) )`>>*/( 1000.0 )( 10.0 )( 10000.0 )( 1.0 )( 100.0 );
 
-
             double eps = numeric::bounds<double>::smallest();
             BOOST_ASSIGN_V2_CHECK( fabs( exponent.front() - 3.0 ) < eps );
             BOOST_ASSIGN_V2_CHECK( fabs( exponent.back() - 2.0 ) < eps );

Modified: sandbox/assign_v2/libs/assign/v2/test/value/modifier/standard.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/value/modifier/standard.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/value/modifier/standard.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -58,6 +58,7 @@
             //]
         }
         {
+ // fully qual boost::begin/end demanded by MSVC - error C2668
             //[test_value_modifier_push_front
             std::deque<double> sqrt2;
             ( as2::put( sqrt2 ) % as2::_push_front )( 1.41421 )( 1.4142 )( 1.414 )( 1.41 );

Modified: sandbox/assign_v2/libs/assign/v2/test/value/pipe.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/value/pipe.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/value/pipe.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -11,7 +11,6 @@
 #include <libs/assign/v2/test/value/pipe/fun.h>
 #include <libs/assign/v2/test/value/pipe/modifier.h>
 #include <libs/assign/v2/test/value/pipe/put.h>
-// #include <libs/assign/v2/test/value/pipe/put_range.h>
 #include <libs/assign/v2/test/value/pipe.h>
 
 namespace test_assign_v2{
@@ -20,11 +19,11 @@
 
     void test()
     {
- xxx_args_list::test();
- xxx_fun::test();
- xxx_modifier::test();
+ // TODO
+ //xxx_args_list::test();
+ //xxx_fun::test();
+ //xxx_modifier::test();
         xxx_put::test();
- // xxx_put_range::test();
     }
 
 }// xxx_pipe

Modified: sandbox/assign_v2/libs/assign/v2/test/value/pipe/args_list.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/value/pipe/args_list.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/value/pipe/args_list.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -47,10 +47,10 @@
         typedef chk::equal_ref r_;
         typedef chk::equal_val v_;
         {
-/* rvalue */
+// rvalue
 #define A -10
 #define B 10
- /* lvalue */
+ // lvalue
             int a1 = -1, b1 = 0;
             typedef const int cint_;
             cint_ a = 4, b = 5;
@@ -87,6 +87,7 @@
 #undef A
 #undef B
         }
+/*
         {
             // str_literal
             BOOST_AUTO(args_list, as2::_put( "x" ) );
@@ -99,6 +100,7 @@
             #endif
             aux_::check_args_list<0, 0>( args_list, v_(), str_( "x" ) );
         }
+*/
     }
 
 

Modified: sandbox/assign_v2/libs/assign/v2/test/value/pipe/modifier/iterate.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/value/pipe/modifier/iterate.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/value/pipe/modifier/iterate.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -31,9 +31,10 @@
         {
         
             //[pipe_iterate
- using namespace lambda;
             typedef int T; boost::array<T, 4> powers; powers[0] = 1; powers[1] = 10;
+
             int i = 2;
+ using namespace lambda;
             BOOST_ASSIGN_V2_CHECK(
                 boost::range::equal(
                     powers | ( as2::_csv_put % ( as2::_iterate = var( i )++ ) )( 100, 1000 ),

Modified: sandbox/assign_v2/libs/assign/v2/test/value/pipe/modifier/standard.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/value/pipe/modifier/standard.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/value/pipe/modifier/standard.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -36,8 +36,10 @@
         // ------------------------------ WARNING ---------------------------- //
         // Don't misconstrue the commands in the tests below as *necessary* to //
         // obtain particular implementation. Most of the time the default is //
- // already set at that invoked with operator% //
+ // already set at that invoked with operator% //
         // ------------------------------------------------------------------- //
+
+ // MSVC REMINDER : fully qualify boost::begin boost::end - error C2668
 
         {
             //[test_value_pipe_modifier_push_front
@@ -66,8 +68,8 @@
                 sqrt2 | ( as2::_put % as2::_insert )( 1.414 )( 1.41421 )( 1.41 )( 1.4142 )
             ).lower_bound( 1.41 );
         
- BOOST_ASSIGN_V2_CHECK( lower == begin( sqrt2 ) );
- BOOST_ASSIGN_V2_CHECK( sqrt2.upper_bound( 1.41421 ) == end( sqrt2 ) );
+ BOOST_ASSIGN_V2_CHECK( lower ==boost::begin( sqrt2 ) );
+ BOOST_ASSIGN_V2_CHECK( sqrt2.upper_bound( 1.41421 ) ==boost::end( sqrt2 ) );
             //]
         }
     }

Modified: sandbox/assign_v2/libs/assign/v2/test/value/pipe/put.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/value/pipe/put.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/value/pipe/put.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -32,31 +32,34 @@
         {
             //[test_value_pipe_put_str_literal
             typedef const char* T; typedef std::string str_; std::deque<T> cont;
+
             BOOST_ASSIGN_V2_CHECK(
                 boost::range::equal(
                     cont | /*<<`"x"`, `"y"` and `"z"` are kept as `const char(&)[2]`>>*/as2::_csv_put( "x", "y", "z" ),
- as2::csv_deque( "x", "y", "z" )
+ as2::csv_deque<str_>( "x", "y", "z" )
                 )
             );
- BOOST_ASSIGN_V2_CHECK( str_( cont[1] ) == "y" );
- BOOST_ASSIGN_V2_CHECK( str_( cont[2] ) == "z" );
             //]
         }
+// TODO
+/*
         {
             //[test_value_pipe_put_intervals
             boost::array<int, 2> interval; boost::array<int, 6> all6;
+
             BOOST_ASSIGN_V2_CHECK(
                 boost::range::equal(
                     all6 | as2::_put( 1 )( 2 )( as2::as_arg_list( interval | as2::_csv_put( 3, 4 ) ) )( 5 )( 6 ),
                     as2::csv_deque( 1, 2, 3, 4, 5, 6 )
                 )
             );
+
             BOOST_ASSIGN_V2_CHECK(
                 boost::range::equal( interval, as2::csv_deque( 3, 4 ) )
             );
             //]
         }
-
+*/
     }// test()
 
 }// xxx_put

Modified: sandbox/assign_v2/libs/assign/v2/test/value/ptr.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/value/ptr.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/value/ptr.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -31,7 +31,7 @@
             //[test_value_ptr_array
             typedef int T;
             T x = 1, y = 2, z = 3; boost::ptr_array<T, 3> cont;
- as2::put( cont )( x )( y )( z );
+ as2::put( cont )/*<<Calls `assoc[i++] = new T( t )` for `i = 0` and `t`[^ = ] `x`, `y`, and `z`>>*/( x )( y )( z );
             
             BOOST_ASSIGN_V2_CHECK( cont.front() == x );
             BOOST_ASSIGN_V2_CHECK( cont.back() == z );
@@ -40,7 +40,7 @@
         {
             //[test_value_ptr_deque
             typedef int T; T x = 1, y = 2, z = 0; boost::ptr_deque<T> cont;
- as2::put( cont )( x )( y )( z );
+ as2::put( cont )/*<<Calls `assoc.push_back( new T( t ) )` for `t` [^=] `x`, `y`, and `z`>>*/( x )( y )( z );
 
             BOOST_ASSIGN_V2_CHECK( cont.front() == x );
             BOOST_ASSIGN_V2_CHECK( cont.back() == z );
@@ -49,7 +49,7 @@
         {
             //[test_value_ptr_list
             typedef int T; T x = 1, y = 2, z = 0; boost::ptr_list<T> cont;
- as2::put( cont )( x )( y )( z );
+ as2::put( cont )/*<<Calls `assoc.push_back( new T( t ) )` for `t` [^=] `x`, `y`, and `z`>>*/( x )( y )( z );
 
             BOOST_ASSIGN_V2_CHECK( cont.front() == x );
             BOOST_ASSIGN_V2_CHECK( cont.back() == z );
@@ -58,7 +58,7 @@
         {
             //[test_value_ptr_vector
             typedef int T; T x = 1, y = 2, z = 0; boost::ptr_vector<T> cont;
- as2::put( cont )( x )( y )( z );
+ as2::put( cont )/*<<Calls `assoc.push_back( new T( t ) )` for `t` [^=] `x`, `y`, and `z`>>*/( x )( y )( z );
 
             BOOST_ASSIGN_V2_CHECK( cont.front() == x );
             BOOST_ASSIGN_V2_CHECK( cont.back() == z );
@@ -77,7 +77,7 @@
             //[put_ptr_set
             typedef std::string T; boost::ptr_set<T> assoc;
             T x = "isomer", y = "ephemeral", z = "prosaic";
- as2::put( assoc )( x )( z )( y );
+ as2::put( assoc )/*<<Calls `assoc.insert( new T( t ) )` for `t` [^=] `x`, `y`, and `z`>>*/( x )( z )( y );
             BOOST_ASSIGN_V2_CHECK( assoc.count( x ) == 1 );
             BOOST_ASSIGN_V2_CHECK( assoc.count( z ) == 1 );
             //]

Modified: sandbox/assign_v2/libs/assign/v2/test/value/put.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/value/put.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/test/value/put.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -36,6 +36,8 @@
 namespace xxx_value{
 namespace xxx_put{
 
+ // MSVC REMINDER : fully qualify boost::begin boost::end - error C2668
+
     void test(){
 
         using namespace boost;
@@ -80,7 +82,7 @@
             variable_size_ b( 4 ); b[0] = 0.61; b[1] = 0.69; b[2] = 0.92; b[3] = 0.55;
             array<variable_size_, 4> ragged;
             as2::put( ragged )
- /*<<Calls `ragged.push_back( variable_size_( begin( a ), end( a ) ) )`>>*/( begin( a ), end( a ) )
+ /*<<Calls `ragged.push_back( variable_size_( begin( a ), end( a ) ) )`>>*/( boost::begin( a ), boost::end( a ) )
                 /*<<Calls `ragged.push_back( variable_size_( b ) )`>>*/( b )
                 /*<<Calls `ragged.push_back( variable_size_( 1, -99.99 ) )`>>*/( 1, -99.99 )
                 /*<<Calls `ragged.push_back( variable_size_( ) )`>>*/( );

Modified: sandbox/assign_v2/libs/assign/v2/tutorial.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/tutorial.cpp (original)
+++ sandbox/assign_v2/libs/assign/v2/tutorial.cpp 2011-03-20 20:11:59 EDT (Sun, 20 Mar 2011)
@@ -27,6 +27,8 @@
 
 namespace tutorial_assign_v2{
 
+ // MSVC REMINDER : fully qualify boost::begin boost::end - error C2668
+
     void run()
     {
         using namespace boost;
@@ -77,7 +79,7 @@
             array<int, 5> consecutive5; int six, seven, eight;
             boost::copy(
                 consecutive8,
- begin( consecutive5 | _chain( ref::csv_array( six, seven, eight ) | ref::_get ) )
+ boost::begin( consecutive5 | _chain( ref::csv_array( six, seven, eight ) | ref::_get ) )
             );
 
             assert( range::equal( consecutive5, csv_deque(1, 2, 3, 4, 5) ) );


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