$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r71125 - in sandbox/assign_v2: boost/assign/v2/conversion boost/assign/v2/deque boost/assign/v2/detail boost/assign/v2/detail/traits boost/assign/v2/interpreter boost/assign/v2/option boost/assign/v2/option/modifier boost/assign/v2/put boost/assign/v2/ref/wrapper libs/assign/v2 libs/assign/v2/test libs/assign/v2/test/put libs/assign/v2/test/ref
From: erwann.rogard_at_[hidden]
Date: 2011-04-08 16:51:09
Author: e_r
Date: 2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
New Revision: 71125
URL: http://svn.boost.org/trac/boost/changeset/71125
Log:
upd assign_v2
Text files modified: 
   sandbox/assign_v2/boost/assign/v2/conversion/convert.hpp        |    15 +++---                                  
   sandbox/assign_v2/boost/assign/v2/conversion/converter.hpp      |    11 ++--                                    
   sandbox/assign_v2/boost/assign/v2/deque/csv_deque.hpp           |    21 ++++----                                
   sandbox/assign_v2/boost/assign/v2/deque/deque.hpp               |    93 +++++++++++++++++++++------------------ 
   sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp            |     4                                         
   sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp   |    19 ++++++++                                
   sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp          |     4                                         
   sandbox/assign_v2/boost/assign/v2/interpreter/data.hpp          |     2                                         
   sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp      |     8 +-                                      
   sandbox/assign_v2/boost/assign/v2/option/data.hpp               |    16 +++---                                  
   sandbox/assign_v2/boost/assign/v2/option/modifier/framework.hpp |     4                                         
   sandbox/assign_v2/boost/assign/v2/option/modifier/repeat.hpp    |     4                                         
   sandbox/assign_v2/boost/assign/v2/put/csv_put.hpp               |    88 ++++++++++++++++++-------------------   
   sandbox/assign_v2/boost/assign/v2/ref/wrapper/copy.hpp          |     5 +                                       
   sandbox/assign_v2/libs/assign/v2/test/conversion.cpp            |    20 --------                                
   sandbox/assign_v2/libs/assign/v2/test/deque.cpp                 |    87 ++++++++++++++++++++++++++-----------   
   sandbox/assign_v2/libs/assign/v2/test/put/ptr.cpp               |     6 +-                                      
   sandbox/assign_v2/libs/assign/v2/test/put/put.cpp               |     2                                         
   sandbox/assign_v2/libs/assign/v2/test/ref/csv_array.cpp         |    11 ++++                                    
   sandbox/assign_v2/libs/assign/v2/tutorial.cpp                   |     4                                         
   20 files changed, 238 insertions(+), 186 deletions(-)
Modified: sandbox/assign_v2/boost/assign/v2/conversion/convert.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/conversion/convert.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/conversion/convert.hpp	2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -97,22 +97,23 @@
     struct convert/*<-*/
         : conversion_aux::convert<C, Arg>
     {
-    
+//<-    
         typedef conversion_aux::convert<C> super_t;
+//->
         
-        convert()/*<-*/{}/*->*/
-        convert(Arg const& arg)
+        convert()/*<-*/{}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+        convert(Arg const& arg)/*<-*/
             : super_t( arg )
-        {}
+        {}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
                 
         template<typename Arg1>
         convert<C, Arg1>
-        operator+=(Arg1 const& arg1)
+        operator^(Arg1 const& arg1)/*<-*/
         {
             return convert<C, Arg1>( arg1 );
-        }
+        }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
     
-    }/*->*/;
+    };
 
 //]
 }// v2
Modified: sandbox/assign_v2/boost/assign/v2/conversion/converter.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/conversion/converter.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/conversion/converter.hpp	2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -28,11 +28,11 @@
     class converter
     {
 
-        typedef boost::iterator_range<
+        /*<-*/typedef boost::iterator_range<
             typename boost::range_iterator<
                 typename boost::add_const<R>::type
             >::type
-        > source_type;
+        > source_type;/*->*/
 
         public:
 
@@ -47,14 +47,15 @@
              : source_( boost::make_iterator_range( source ) )
         {}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
+        // Implicit conversion
         template<typename C>
-        operator C () const/*<-*/
+        operator C() const/*<-*/
         {
             return this->type<C>();
         }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
-        template<typename C>
-        C type()const/*<-*/
+        // Explicit converion
+        template<typename C> C type()const/*<-*/
         {
             typedef convert<C, Arg> convert_;
             return this->source_ | convert_( this->arg_ );
Modified: sandbox/assign_v2/boost/assign/v2/deque/csv_deque.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/deque/csv_deque.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/deque/csv_deque.hpp	2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -44,16 +44,17 @@
         >
     {}/*->*/;
 
-    template<typename Os, typename T>
+    template<typename O, typename T>
     struct csv_deque_option/*<-*/
         : modulo_result<
             typename result_of::csv_deque<T>::type,
-            Os
+            O
         >
     {}/*->*/;
 
 }// result_of
 
+    // Empty
     template<typename T>
     typename result_of::csv_deque<T>::type
     csv_deque()/*<-*/{
@@ -64,10 +65,10 @@
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 //->
     template<typename T, typename... Args>
-    typename boost::lazy_disable_if<
+    typename /*<-*/boost::lazy_disable_if<
         is_option_crtp_cpp0x<T>,
-        result_of::csv_deque<T>
-    >::type
+        /*->*/result_of::csv_deque<T>/*<-*/
+    >/*->*/::type
     csv_deque(T&& t, Args&& ...  args)/*<-*/
     {
         typename result_of::csv_deque<T>::type result;
@@ -76,10 +77,10 @@
     }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
     template<typename T, typename O, typename... Args>
-    typename boost::lazy_enable_if<
+    typename /*<-*/boost::lazy_enable_if<
         is_option_crtp<O>,
-        result_of::csv_deque_option<O, T>
-    >::type
+        /*->*/result_of::csv_deque_option<O, T>/*<-*/
+    >/*->*/::type
     csv_deque(O const& options, T&& t, Args&& ...  args)/*<-*/
     {
         typedef typename result_of::csv_deque<T>::type before_op_;
@@ -110,9 +111,9 @@
         : interpreter_aux::result_of::csv_deque<T>
     {}/*->*/;
 
-    template<typename Os, typename T>
+    template<typename O, typename T>
     struct csv_deque_option/*<-*/
-        : interpreter_aux::result_of::csv_deque_option<Os, T>
+        : interpreter_aux::result_of::csv_deque_option<O, T>
     {}/*->*/;
 
 }// result_of
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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -36,38 +36,47 @@
 
     template<typename T>
     struct deque_impl{ 
-        typedef /*<-*/std::deque<T> 
-            BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/
-            type; 
+        typedef std::deque<T> type; 
     };
 
-    template<typename T, typename F, typename ModifierTag>
+    template<typename T, typename F, typename MTag>
     class deque_interpreter 
         : public interpreter_crtp<
-            typename deque_impl<T>::type, F, ModifierTag, data_tag::value,
-            deque_interpreter<T, F, ModifierTag>
+            typename deque_impl<T>::type, F, MTag, data_tag::value,
+            deque_interpreter<T, F, MTag>
         >
     {
-//<-
         typedef typename deque_impl<T>::type impl_;
+        typedef interpreter_aux::interpreter_modifier<MTag> modifier_;
+//<-
         typedef impl_ const cimpl_;
         typedef interpreter_crtp<
-            impl_, F, ModifierTag, data_tag::value, deque_interpreter
+            impl_, F, MTag, data_tag::value, deque_interpreter
         > put_crtp_;
-
-        typedef interpreter_aux::interpreter_modifier<ModifierTag> modifier_;
 //->
+
         public:
 
         typedef T value_type;
-        typedef /*<-*/typename boost::range_size<impl_>::type BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/size_type;
-        typedef /*<-*/typename boost::range_iterator<impl_>::type BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/iterator;
-        typedef /*<-*/typename boost::range_iterator<cimpl_>::type BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/const_iterator;
+        typedef /*<-*/typename boost::range_size<impl_>::type 
+        BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/size_type;
+        typedef /*<-*/typename boost::range_iterator<impl_>::type 
+        BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/iterator;
+        typedef /*<-*/typename boost::range_iterator<cimpl_>::type 
+        BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/const_iterator;
+        typedef /*<-*/typename impl_::reference
+        BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/reference;
+        typedef /*<-*/typename impl_::const_reference
+        BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/const_reference;
+        typedef /*<-*/typename impl_::difference_type
+        BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified /*<-*/)/*->*/difference_type;
 
-        // Construct
+        // Constructor
         deque_interpreter()/*<-*/
             {}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
-        explicit deque_interpreter( impl_ const& cont, F const& f, modifier_ const& m )/*<-*/
+        explicit deque_interpreter( 
+            impl_ const& cont, F const& f, modifier_ const& m 
+        )/*<-*/
             : put_crtp_( f, m ), impl( cont )
         {}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
@@ -85,10 +94,6 @@
             return boost::end( this->impl );
         }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
-        typedef /*<-*/typename impl_::reference BOOST_ASSIGN_V2_IGNORE(/*->*/ unspecified /*<-*/)reference;
-        typedef /*<-*/typename impl_::const_reference BOOST_ASSIGN_V2_IGNORE(/*->*/ unspecified /*<-*/)const_reference;
-        typedef /*<-*/typename impl_::difference_type BOOST_ASSIGN_V2_IGNORE(/*->*/ unspecified /*<-*/)difference_type;
-
         size_type size()const/*<-*/{
             return this->container().size();
         }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
@@ -135,42 +140,41 @@
 //->
     };
 
-    template<typename T, typename F, typename ModifierTag>
-    struct replace_data_generator< deque_interpreter<T, F, ModifierTag> >
+    template<typename T, typename F, typename MTag>
+    struct replace_data_generator< deque_interpreter<T, F, MTag> >
     {
         template<typename F1>
         struct apply{    
-            typedef /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)deque_interpreter<T, F1, ModifierTag>/*->*/ type; 
+            typedef /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)
+            deque_interpreter<T, F1, MTag>/*->*/ type; 
         };
     };
 
-    template<typename T, typename F, typename ModifierTag>
-    struct replace_modifier_tag< deque_interpreter<T, F, ModifierTag> >
+    template<typename T, typename F, typename MTag>
+    struct replace_modifier_tag< deque_interpreter<T, F, MTag> >
     {
-        template<typename ModifierTag1>
+        template<typename MTag1>
         struct apply{ 
-            /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)typedef deque_interpreter<T, F, ModifierTag1>/*->*/ type; 
+            /*<-*/BOOST_ASSIGN_V2_IGNORE(/*->*/unspecified/*<-*/)typedef 
+            deque_interpreter<T, F, MTag1>/*->*/ type; 
         };
     };
 
-//<-
 namespace result_of{
 
     template<typename T>
-    struct deque
+    struct deque/*<-*/
     {
         typedef typename boost::remove_cv<T>::type t_;
         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;
-    };
+    }/*->*/;
 
 }// result_of
-}// interpreter_aux
-namespace interpreter_aux{
-//->
 
+    // Empty
     template<typename T>
     typename result_of::deque<T>::type
     deque( nil_ )/*<-*/
@@ -178,19 +182,9 @@
         return typename result_of::deque<T>::type();
     }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
     
-}// interpreter_aux
-namespace result_of{
-
-    template<typename T>
-    struct deque/*<-*/ 
-        : interpreter_aux::result_of::deque<T>
-    {}/*->*/;
-
-}// result_of
 //<-
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 //->
-namespace interpreter_aux{
 
     template<typename T, typename...Args>
     typename result_of::deque<T>::type
@@ -199,11 +193,24 @@
         return deque<T>( v2::_nil )( std::forward<Args>(args)... );
     }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
+//<-
+#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
+//->
+
 }// interpreter_aux
+
 using interpreter_aux::deque;
+
+namespace result_of{
+
+    template<typename T>
+    struct deque/*<-*/ 
+        : interpreter_aux::result_of::deque<T>
+    {}/*->*/;
+
+}// result_of
 //]
 
-#endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 }// v2
 }// assign
 }// boost
Modified: sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/keyword.hpp	2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -28,13 +28,13 @@
     struct value/*<-*/{}/*->*/;
 
 }//keyword_aux
-    typedef keyword_aux::ignore            ignore_;
+    typedef keyword_aux::ignore         ignore_;
     typedef keyword_aux::element        element_;
     typedef keyword_aux::key            key_;
     typedef keyword_aux::map            map_;
     typedef keyword_aux::nil            nil_;
     typedef keyword_aux::use_default    use_default_;
-    typedef keyword_aux::value            value_;    
+    typedef keyword_aux::value          value_;    
 /*<-*/namespace{/*->*/
     const ignore_ _ignore/*<-*/ = ignore_()/*->*/;
     const element_ _element/*<-*/ = element_()/*->*/;
Modified: sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/container.hpp	2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -26,6 +26,8 @@
 namespace boost{
 namespace assign{
 namespace v2{
+//[syntax_detail_traits_container
+/*<-*/
 namespace container_aux{
 
 // HELPER
@@ -98,12 +100,29 @@
     {};
 
 }// container_aux
+/*->*/
+
+    template<typename C>
+    struct value_container_element/*<-*/
+        : container_aux::element<C>{}
+    /*->*/;
+
+    template<typename C>
+    struct value_container_key/*<-*/
+        : container_aux::key<C>{}
+    /*->*/;
+
+    template<typename C>
+    struct value_container_mapped/*<-*/
+        : container_aux::mapped<C>{}
+    /*->*/;
 
     template<typename C>
     struct value_container_value/*<-*/
         : container_aux::value<C>{}
     /*->*/;
 
+//]
 }// v2
 }// assign
 }// boost
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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -136,8 +136,8 @@
     template<
         typename C              // Container, 
         , typename F            // Data generator
-        , typename MTag          // Modifier tag
-        , typename DTag          // Data tag
+        , typename MTag         // Modifier tag
+        , typename DTag         // Data tag
         , typename D            // Derived
     >
     class interpreter_crtp
Modified: sandbox/assign_v2/boost/assign/v2/interpreter/data.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/interpreter/data.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/interpreter/data.hpp	2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -19,7 +19,7 @@
 namespace boost{
 namespace assign{
 namespace v2{
-//[syntax_interpreter_data_generator
+//[syntax_interpreter_data
 namespace switch_tag{
     struct data_generator{};
 }// switch_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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -36,23 +36,23 @@
 namespace interpreter_aux{
 
 
-    template<typename ModifierTag>
+    template<typename MTag>
     struct interpreter_modifier
     {
         // Specialize on Tag to model ConceptModifier 
     };
 
-    template<typename ModifierTag, typename DataTag, typename C, typename T>
+    template<typename MTag, typename DTag, typename C, typename T>
     struct ConceptModifier
     {
 
         BOOST_CONCEPT_USAGE(ConceptModifier)
         {
-            m.impl( cont, t, DataTag() ); 
+            m.impl( cont, t, DTag() ); 
         }
 
         private:
-        static interpreter_aux::interpreter_modifier<ModifierTag>& m;
+        static interpreter_aux::interpreter_modifier<MTag>& m;
         static C& cont;
         static T t;
     };
Modified: sandbox/assign_v2/boost/assign/v2/option/data.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/data.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/option/data.hpp	2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -26,7 +26,7 @@
 namespace interpreter_aux{
 
     template<
-        typename C         // Value or pointer-container
+        typename C      // Value or pointer-container
         , typename F    // Functor or keyword    
     >
     struct data_generator/*<-*/
@@ -85,11 +85,11 @@
 }// result_of
 
     // F is a functor or either of the keywors:
-    //     element_
+    //    element_
     //    key_
     //    map_
-    //  use_default_
-    //    value_
+    //    use_default_
+    //     value_
     template<typename F = ignore_>
     struct option_data/*<-*/
         : option_crtp<
@@ -158,14 +158,14 @@
     }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
     struct keyword_data
-    /*<-*/{
+    {
 
         template<typename F>
-        option_data<F> operator=(F const& f)const{
+        option_data<F> operator=(F const& f)const/*<-*/{
             return option_data<F>( f );
-        }
+        }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
-    }/*->*/;
+    };
 
 }// interpreter_aux
 namespace{
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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -80,11 +80,11 @@
             
 }// result_of
 
-    template<typename C, typename F, typename ModifierTag, typename DataTag, typename D, 
+    template<typename C, typename F, typename MTag, typename DTag, typename D, 
         typename Keyword, typename Arg>
     typename result_of::option_modifier<D, Keyword, Arg>::type
     operator%(
-        interpreter_crtp<C, F, ModifierTag, DataTag, D> const& lhs,
+        interpreter_crtp<C, F, MTag, DTag, D> const& lhs,
         option_modifier<Keyword, Arg> const& rhs
     )/*<-*/
     {
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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -54,8 +54,8 @@
 #define BOOST_ASSIGN_V2_forward t
 #endif
 //->
-        template<typename C, typename T, typename DataTag>
-        void impl(C& cont, BOOST_ASSIGN_V2_arg, DataTag tag )const
+        template<typename C, typename T, typename DTag>
+        void impl(C& cont, BOOST_ASSIGN_V2_arg, DTag tag )const
         {
             size_type m = this->size();\
             while(m--) this->inner_.impl( cont, BOOST_ASSIGN_V2_forward, tag );
Modified: sandbox/assign_v2/boost/assign/v2/put/csv_put.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/put/csv_put.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/put/csv_put.hpp	2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -28,47 +28,46 @@
 namespace v2{
 //[syntax_csv_put
 namespace interpreter_aux{
-
+/*<-*/
     template<typename F>
-    struct csv_ready/*<-*/
+    struct csv_ready
         : ::boost::mpl::true_
-    {}/*->*/;
+    {};
 
     template<typename T, typename K, typename M>
     struct csv_ready<
         functor_aux::pair<T, K, M>
-    > /*<-*/
+    > 
         : ::boost::mpl::false_
-    {}/*->*/;
+    {};
 
 namespace result_of{
 
     template<typename C, typename F, typename MTag, typename DTag>
-    struct if_csv_ready/*<-*/
+    struct if_csv_ready
         : ::boost::mpl::identity<
             put_interpreter<C, F, MTag, DTag>
         >
-    {}/*->*/;
+    {};
 
     template<typename C, typename F, typename MTag, typename DTag>
-    struct else_csv_ready/*<-*/
+    struct else_csv_ready
         : result_of::option_data<
             put_interpreter<C, F, MTag, DTag>, C, value_
         >
-    {}/*->*/;
+    {};
 
     template<typename C, typename F, typename MTag, typename DTag>
-    struct make_csv_ready/*<-*/
+    struct make_csv_ready
         : ::boost::mpl::eval_if<
             csv_ready<F>,
             if_csv_ready<C, F, MTag, DTag>,
             else_csv_ready<C, F, MTag, DTag>
         >
-    {}/*->*/;
+    {};
 
 }// result_of
 
-/*<-*/
     template<typename C, typename F, typename MTag, typename DTag>
     typename result_of::if_csv_ready<C, F, MTag, DTag>::type
     make_csv_ready(
@@ -88,30 +87,31 @@
     {
         return interpreter % ( _data = _value );
     }
-/*->*/
+
     template<typename C, typename F, typename MTag, typename DTag>
     typename result_of::make_csv_ready<C, F, MTag, DTag>::type
     make_csv_ready( put_interpreter<C, F, MTag, DTag> const& interpreter)
-    /*->*/{
+    {
         return make_csv_ready(
             interpreter,
             typename csv_ready<F>::type()
         );
-    }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
+    }
 
+/*->*/
 //<-
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 //->
 
     template<typename C, typename O, bool is, typename... Args>
-    typename boost::enable_if<
+    /*<-*/typename boost::enable_if<
         is_option_crtp<O>
-    >::type csv_put(
+    >::type BOOST_ASSIGN_V2_IGNORE(/*->*/void /*<-*/)
+    /*->*/csv_put(
         C& cont,
         option_crtp<O, is> const& crtp,
         Args&&... args
-    )
-    /*<-*/
+    )/*<-*/
     {
         O const& options = static_cast<O const&>( crtp );
         csv(
@@ -123,9 +123,10 @@
     }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
     template<typename C, typename T, typename... Args>
-    typename boost::disable_if<
+    /*<-*/typename boost::disable_if<
         is_option_crtp_cpp0x<T>
-    >::type csv_put( C& cont, T&& t, Args&&... args)/*<-*/
+    >::type BOOST_ASSIGN_V2_IGNORE(/*->*/void /*<-*/)
+    /*->*/csv_put( C& cont, T&& t, Args&&... args)/*<-*/
     {
         csv(
             make_csv_ready( put( cont ) ),
@@ -135,7 +136,7 @@
     }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
     template<typename C>
-    void csv_put( C& cont)/*<-*/
+    void csv_put( C& cont )/*<-*/
     {
         csv(
             make_csv_ready( put( cont ) )
@@ -145,21 +146,19 @@
 //<-
 #endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 //->
-
-
-    template<typename R, typename Os = empty_list_option>
+    template<typename R, typename O = empty_list_option>
     struct delayed_csv_put/*<-*/
-        : Os, as_arg_list_adapter<R>
+        : O, as_arg_list_adapter<R>
     {
 
-        typedef Os super1_t;
+        typedef O super1_t;
         typedef as_arg_list_adapter<R> super2_t;
 
         explicit delayed_csv_put(R& r)
             : super2_t( r )
         {}
 
-        explicit delayed_csv_put(Os options, R& r)
+        explicit delayed_csv_put(O options, R& r)
             : super1_t( options ), super2_t( r )
         {}
 
@@ -178,8 +177,8 @@
 
     }/*->*/;
 
-    template<typename C, typename R, typename Os>
-    C& operator|(C& cont, delayed_csv_put<R, Os> const& rhs)/*<-*/
+    template<typename C, typename R, typename O>
+    C& operator|(C& cont, delayed_csv_put<R, O> const& rhs)/*<-*/
     {
         return rhs.apply( cont );
 
@@ -187,13 +186,12 @@
 
 namespace result_of{
 
-    template<typename R, typename Os = empty_list_option>
+    template<typename R, typename O = empty_list_option>
     struct delay_csv_put/*<-*/
     {
-        typedef delayed_csv_put<R, Os> type;
+        typedef delayed_csv_put<R, O> type;
     }/*->*/;
 
-
 }// result_of
 
     template<typename R>
@@ -203,13 +201,12 @@
         return delayed_csv_put<R const>( range );
     }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
-
-    template<typename Os, typename R>
-    typename result_of::delay_csv_put<R const, Os>::type
-    delay_csv_put(option_crtp<Os> const& options, R const& range)/*<-*/
+    template<typename O, typename R>
+    typename result_of::delay_csv_put<R const, O>::type
+    delay_csv_put(option_crtp<O> const& options, R const& range)/*<-*/
     {
-        return delayed_csv_put<R const, Os>(
-            static_cast<Os const&>( options ), range
+        return delayed_csv_put<R const, O>(
+            static_cast<O const&>( options ), range
         );
     }BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
 
@@ -217,19 +214,18 @@
 //<-
 #if BOOST_ASSIGN_V2_ENABLE_CPP0X
 //->
-using interpreter_aux::csv_put;
+    using interpreter_aux::csv_put;
 //<-
 #endif // BOOST_ASSIGN_V2_ENABLE_CPP0X
 //->
-
-    using interpreter_aux::delay_csv_put;
+    using interpreter_aux::delay_csv_put;    
 
 namespace result_of{
 
-    template<typename R, typename Os = empty_list_option_>
-    struct delay_csv_put
-        : interpreter_aux::result_of::delay_csv_put<R, Os>
-    {};
+    template<typename R, typename O = empty_list_option_>
+    struct delay_csv_put/*<-*/
+        : interpreter_aux::result_of::delay_csv_put<R, O>
+    {}/*->*/;
 
 }// 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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -30,9 +30,10 @@
     :
         public ref::wrapper_crtp< wrapper<ref::assign_tag::copy, T>, T>
     {
-        typedef T type;
+        
+        typedef T type;/*<-*/
 
-        /*<-*/BOOST_STATIC_CONSTANT( bool, is_const = boost::is_const<T>::value );/*->*/
+        BOOST_STATIC_CONSTANT( bool, is_const = boost::is_const<T>::value );/*->*/
 
         wrapper()/*<-*/
             {/*TODO or null pointer?*/}BOOST_ASSIGN_V2_IGNORE(/*->*/;/*<-*/)/*->*/
Modified: sandbox/assign_v2/libs/assign/v2/test/conversion.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/conversion.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/conversion.cpp	2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -43,7 +43,7 @@
 
         // External containers (fully qualified)
         {
-            //[tutorial_convert
+            //[test_convert
             typedef std::stack<int> C;
             
             C lifo; lifo.push( 3 ); lifo.push( 2 ); lifo.push( 1 );
@@ -117,24 +117,6 @@
         }
         // Boost.Assign.2.0 containers - name lookup
         {
-            //[test_converter_from_deque
-            typedef array<int, 5> C; C const& ar = /*<<Notice unqualified>>*/converter( 
-                as2::csv_deque( 1, 2, 3, 4, 5 )
-            );
-            
-            BOOST_ASSIGN_V2_CHECK( 
-                range::equal( ar, as2::csv_deque( 1, 2, 3, 4, 5 ) ) 
-            );
-            //]
-        }
-        {
-            //[test_converter_from_ref_array
-            std::queue<int> fifo = /*<<Notice unqualified>>*/converter( as2::ref::csv_array( 1, 2, 3, 4, 5 ) );
-            
-            BOOST_ASSIGN_V2_CHECK( fifo.front() == 1  );
-            //]
-        }
-        {
             //[test_converter_multi_array
             typedef boost::multi_array<int, 2> array2_;
             typedef array2_::size_type size_;
Modified: sandbox/assign_v2/libs/assign/v2/test/deque.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/deque.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/deque.cpp	2011-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -10,9 +10,11 @@
 #include <deque>
 #include <string>
 #include <utility>
+#include <boost/array.hpp>
 #include <boost/mpl/assert.hpp>
 #include <boost/type_traits/is_same.hpp>
 #include <boost/assign/v2/detail/config/check.hpp>
+#include <boost/assign/v2/deque/conversion.hpp>
 #include <boost/assign/v2/include/csv_deque.hpp>
 #include <boost/assign/v2/include/deque.hpp>
 #include <boost/range/algorithm/equal.hpp>
@@ -41,37 +43,60 @@
             //]
         }
         {
-            //[test_deque_pair
-            typedef std::string code_; typedef std::string name_;
-            typedef std::pair<code_, name_> T;
-            typedef as2::result_of::deque<T>::type C;
-            
-            C airports1 = as2::deque<T>( as2::_nil );
-            BOOST_ASSIGN_V2_CHECK( airports1.empty() );
-            airports1("AUH", "Abu Dhabi")("JFK", "New York")("LHR", "London")("PEK", "Beijing");
-            
-            std::deque<T> benchmark;
-            benchmark.push_back( T("AUH", "Abu Dhabi") );
-            benchmark.push_back( T("JFK", "New York") );
-            benchmark.push_back( T("LHR", "London") );
-            benchmark.push_back( T("PEK", "Beijing") );
-            BOOST_ASSIGN_V2_CHECK( 
-                range::equal( benchmark, airports1 )
-            ); 
+            //[test_deque_variadic
+            typedef std::string word_;
+            const char x[] = "foo";
+            const char y[4] = { 'b', 'a', 'r', '\0' };
+            word_ z = "***baz";
+
+            std::deque<word_> benchmark;
+            benchmark.push_back( word_( x, 3 ) );
+            benchmark.push_back( word_( y ) );
+            benchmark.push_back( word_( z, 3, 3 ) );
+            benchmark.push_back( word_( "qux" ) );
+
+            typedef as2::result_of::deque<word_>::type C;
+            C cont1 = as2::deque<word_>( as2::_nil );
+
+            BOOST_ASSIGN_V2_CHECK( cont1.empty() );
+
+            cont1( x, 3 )( y )( z, 3, 3 )( "qux" );
             
-            C airports2 = as2::deque<T>("AUH", "Abu Dhabi")("JFK", "New York")("LHR", "London")("PEK", "Beijing");
-            BOOST_ASSIGN_V2_CHECK( 
-                range::equal( benchmark, airports2 )
-            ); 
+            BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, cont1 ) ); 
+            
+            C cont2 = as2::deque<word_>( x, 3 )( y )( z, 3, 3 )( "qux" );
+            
+            BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, cont2 ) ); 
             //]
         }
-       {
+        {
             //[test_csv_deque_str_literal
-            typedef as2::result_of::csv_deque<const char[2]>::type C;
+            typedef as2::result_of::csv_deque<const char[2]>::type C1;
+            typedef as2::result_of::csv_deque<std::string>::type C2;
+            
+            BOOST_MPL_ASSERT(( is_same<C1, as2::result_of::deque<char*>::type> ));
+            BOOST_MPL_ASSERT(( is_same<C2, as2::result_of::deque<std::string>::type> ));
+            
+            C1 deque1 = as2::csv_deque( "x", "y", "z" ); 
+            C2 deque2 = as2::csv_deque<std::string>( "x", "y", "z" ); 
+            
+            std::deque<std::string> benchmark; 
+            benchmark.push_back( "x" ); 
+            benchmark.push_back( "y" ); 
+            benchmark.push_back( "z" );
+            
+            BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, deque1 ) );
+            BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, deque2 ) );
+            //]
+        }
+        {
+            //[test_csv_deque_str
+            typedef std::string T;
+            typedef as2::result_of::csv_deque<T>::type C;
             
-            BOOST_MPL_ASSERT(( is_same<C, as2::result_of::deque<char*>::type> ));
+            BOOST_MPL_ASSERT(( is_same<C, as2::result_of::deque<std::string>::type> ));
             
-            C  deque = as2::csv_deque( "x", "y", "z" ); 
+            C  deque = as2::csv_deque<T>( "x", "y", "z" ); 
             
             std::deque<std::string> benchmark; 
             benchmark.push_back( "x" ); 
@@ -81,7 +106,6 @@
             BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, deque ) );
             //]
         }
-
         {
             //[test_csv_deque_ints
             typedef as2::result_of::csv_deque<int>::type C;
@@ -106,6 +130,17 @@
             BOOST_ASSIGN_V2_CHECK( range::equal( benchmark, series2 ) );
             //]
         }
+        {
+            //[test_csv_deque_converter
+            typedef array<int, 5> C; C const& ar = /*<<Notice unqualified>>*/converter( 
+                as2::csv_deque( 1, 2, 3, 4, 5 )
+            );
+            
+            BOOST_ASSIGN_V2_CHECK( 
+                range::equal( ar, as2::csv_deque( 1, 2, 3, 4, 5 ) ) 
+            );
+            //]
+        }
     }
 
 }// xxx_deque
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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -93,17 +93,17 @@
         // SET
         {
             // Shows that x, y, z can be variadic
-            //[test_put_ptr_set
+            //[test_csv_put_ptr_set
             typedef std::string T; boost::ptr_set<T> assoc;
             T x = "isomer", y = "ephemeral", z = "prosaic";
-            /*<<Calls `assoc.insert( new T( t ) )` for `t` [^=] `x`, `y`, and `z`>>*/as2::csv_put( assoc, x, z, y );
+            as2::csv_put( assoc, x, z, y );
 
             BOOST_ASSIGN_V2_CHECK( assoc.count( x ) == 1 );
             BOOST_ASSIGN_V2_CHECK( assoc.count( z ) == 1 );
             //]
         }
         {    
-            //[test_put_ptr_unordered_set
+            //[test_csv_put_ptr_unordered_set
             boost::ptr_unordered_set<std::string> set; 
             as2::csv_put( set, "foo", "bar", "baz" );
 
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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -262,7 +262,7 @@
         }
         // OTHER
         {
-            //test_csv_put_cb
+            //[test_csv_put_cb
             boost::circular_buffer<int> cb(3);
             as2::csv_put( cb, 1, 2, 3 );
 
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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -7,11 +7,13 @@
 //  Boost Software License, Version 1.0. (See accompanying file             //
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
 //////////////////////////////////////////////////////////////////////////////
+#include <queue>
 #include <vector>
 #include <boost/range/begin.hpp>
 #include <boost/range/algorithm/copy.hpp>
 #include <boost/typeof/typeof.hpp>
 #include <boost/assign/v2/detail/config/check.hpp>
+#include <boost/assign/v2/ref/array/conversion.hpp>
 #include <boost/assign/v2/include/ref/csv_array.hpp>
 #include <boost/assign/v2/ref/wrapper.hpp>
 #include <libs/assign/v2/test/ref/csv_array.h>
@@ -36,7 +38,7 @@
                     as2::ref::csv_array( 1, 10, 100 ),
                     ar        
                 )
-            )/*<<Temporaries destroyed past semicolon>>*/;
+            );
             //]
         }
         {
@@ -90,6 +92,13 @@
             BOOST_ASSIGN_V2_CHECK( z == -1 );
             //]
         }
+        {
+            //[test_ref_csv_array_converter
+            std::queue<int> fifo = /*<<Notice unqualified>>*/converter( as2::ref::csv_array( 1, 2, 3, 4, 5 ) );
+            
+            BOOST_ASSIGN_V2_CHECK( fifo.front() == 1  );
+            //]
+        }
     }
 
 }// xxx_csv_array
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-04-08 16:51:07 EDT (Fri, 08 Apr 2011)
@@ -61,10 +61,10 @@
             );
             //]
         }
-        {
+        {    
             //[tutorial_empty_deque
             assert( deque<int>( _nil ).size() == 0 );    // Functor form
-            assert( csv_deque<int>().size() == 0 );        // Csv form
+            assert( csv_deque<int>().size() == 0 );       // Csv form
             //]
         }
         {