$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r70542 - in sandbox/assign_v2: boost/assign/v2/conversion boost/assign/v2/deque/cpp03 boost/assign/v2/detail/check/equal_container boost/assign/v2/detail/traits/ptr_container boost/assign/v2/detail/traits/value_container boost/assign/v2/interpreter boost/assign/v2/option boost/assign/v2/pipe boost/assign/v2/ref/aux_/list/holder libs/assign/v2/test libs/assign/v2/test/detail libs/assign/v2/test/ref libs/assign/v2/test/ref/aux_
From: erwann.rogard_at_[hidden]
Date: 2011-03-25 12:42:01
Author: e_r
Date: 2011-03-25 12:41:57 EDT (Fri, 25 Mar 2011)
New Revision: 70542
URL: http://svn.boost.org/trac/boost/changeset/70542
Log:
upd assign_v2
Text files modified: 
   sandbox/assign_v2/boost/assign/v2/conversion/predicate.hpp                           |     8 +++---                                  
   sandbox/assign_v2/boost/assign/v2/deque/cpp03/csv_deque.hpp                          |     4 +-                                      
   sandbox/assign_v2/boost/assign/v2/detail/check/equal_container/deduce.hpp            |     8 +++---                                  
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/meta.hpp               |     4 +-                                      
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp |     4 +-                                      
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/category.hpp         |     4 +-                                      
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_push.hpp         |     4 +-                                      
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_value_type.hpp   |     4 +-                                      
   sandbox/assign_v2/boost/assign/v2/interpreter/crtp.hpp                               |     2                                         
   sandbox/assign_v2/boost/assign/v2/interpreter/data.hpp                               |    10 ++++----                                
   sandbox/assign_v2/boost/assign/v2/interpreter/modifier.hpp                           |     9 +++----                                 
   sandbox/assign_v2/boost/assign/v2/option/key.hpp                                     |    33 ++++++++++++++++++++++++-------         
   sandbox/assign_v2/boost/assign/v2/pipe/option_traits.hpp                             |     1                                         
   sandbox/assign_v2/boost/assign/v2/ref/aux_/list/holder/head.hpp                      |     2                                         
   sandbox/assign_v2/libs/assign/v2/test/chain.cpp                                      |     1                                         
   sandbox/assign_v2/libs/assign/v2/test/detail/traits.cpp                              |     2                                         
   sandbox/assign_v2/libs/assign/v2/test/ref/array.cpp                                  |    13 ++++++++++++                            
   sandbox/assign_v2/libs/assign/v2/test/ref/aux_/list.cpp                              |    16 ++++++++------                          
   sandbox/assign_v2/libs/assign/v2/test/ref/csv_array.cpp                              |    41 ++++++++++++++++++++++++++------------- 
   19 files changed, 108 insertions(+), 62 deletions(-)
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -21,16 +21,16 @@
 
     template<typename C>
     struct is_array : ::boost::mpl::apply1<
-        ptr_container_aux::through_value_container<
-            value_container_aux::is_array
+        container_aux::through_value_container<
+            container_aux::is_array
         >,
         C
     >{};
 
     template<typename C>
     struct has_push : ::boost::mpl::apply1<
-        ptr_container_aux::through_value_container<
-            value_container_aux::has_push_deduced_value
+        container_aux::through_value_container<
+            container_aux::has_push_deduced_value
         >,
         C
     >{};
Modified: sandbox/assign_v2/boost/assign/v2/deque/cpp03/csv_deque.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/deque/cpp03/csv_deque.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/deque/cpp03/csv_deque.hpp	2011-03-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -24,8 +24,8 @@
     typename result_of::csv_deque<T>::type\
     csv_deque( BOOST_PP_ENUM_PARAMS(N, T const & _) )\
     {\
-        typedef typename boost::decay<T>::type decay_;\
-        return deque<decay_>( v2::_nil ) BOOST_PP_REPEAT(N, BOOST_ASSIGN_V2_MACRO1, ~ );\
+    	typedef typename result_of::csv_deque<T>::type result_;\
+        return result_() BOOST_PP_REPEAT(N, BOOST_ASSIGN_V2_MACRO1, ~ );\
     }\
 /**/
 BOOST_PP_REPEAT_FROM_TO(
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -29,28 +29,28 @@
     struct case_<switch_tag::check_container, 0> :
         switch_aux::helper<
             check_aux::fifo,
-            value_container_aux::is_fifo
+            container_aux::is_fifo
         >{};
 
     template<>
     struct case_<switch_tag::check_container, 1> :
         switch_aux::helper<
             check_aux::lifo,
-            value_container_aux::is_lifo
+            container_aux::is_lifo
         >{};
 
     template<>
     struct case_<switch_tag::check_container, 2> :
         switch_aux::helper<
             check_aux::sorted,
-            value_container_aux::is_sorted
+            container_aux::is_sorted
         >{};
 
     template<>
     struct case_<switch_tag::check_container, 3> :
         switch_aux::helper<
             check_aux::array,
-            value_container_aux::is_array
+            container_aux::is_array
         >{};
 
     template<>
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -16,7 +16,7 @@
 namespace boost{
 namespace assign{
 namespace v2{
-namespace ptr_container_aux{
+namespace container_aux{
 
 
     template<typename PtrC>
@@ -35,7 +35,7 @@
         >{};
     };
 
-}// ptr_container_aux
+}// container_aux
 }// v2
 }// assign
 }// boost
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -19,7 +19,7 @@
 namespace boost{
 namespace assign{
 namespace v2{
-namespace ptr_container_aux{
+namespace container_aux{
 
     template<typename A, typename T> struct to_value_allocator_helper{};
 
@@ -207,7 +207,7 @@
 
     // TODO unordered
 
-}// ptr_container_aux
+}// container_aux
 }// v2
 }// assign
 }// boost
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -15,7 +15,7 @@
 namespace boost{
 namespace assign{
 namespace v2{
-namespace value_container_aux{
+namespace container_aux{
 
     // FIFO
     template<typename C> struct is_fifo : ::boost::mpl::false_{};
@@ -47,7 +47,7 @@
     > : ::boost::mpl::true_{};
 
 
-}// value_container_aux
+}// container_aux
 }// v2
 }// assign
 }// boost
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -17,7 +17,7 @@
 namespace boost{
 namespace assign{
 namespace v2{
-namespace value_container_aux{
+namespace container_aux{
 
     template<typename C, typename T = typename C::value_type>
     struct has_push{
@@ -46,7 +46,7 @@
     template<typename C>
     struct has_push_deduced_value : has_push<C>{};
 
-}// value_container_aux
+}// container_aux
 }// v2
 }// assign
 }// boost
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -16,7 +16,7 @@
 namespace boost{
 namespace assign{
 namespace v2{
-namespace value_container_aux{
+namespace container_aux{
 
     template<typename T>
     struct has_value_type{
@@ -37,7 +37,7 @@
     };
 
 
-}// value_container_aux
+}// container_aux
 }// 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-03-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -233,7 +233,7 @@
 
         template<typename T>
         struct ptr_enabler : boost::enable_if<
-            ptr_container_aux::is_ptr_container<C>
+            container_aux::is_ptr_container<C>
         >{};
 
         template<typename T>
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-03-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -7,8 +7,8 @@
 //  Boost Software License, Version 1.0. (See accompanying file             //
 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
 //////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_INTERPRETER_FUN_ER_2010_HPP
-#define BOOST_ASSIGN_V2_INTERPRETER_FUN_ER_2010_HPP
+#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/functor/constructor.hpp>
@@ -33,7 +33,7 @@
     struct deduce_ptr_generator/*<-*/
     {
         
-        typedef typename v2::ptr_container_aux::to_value_container<
+        typedef typename v2::container_aux::to_value_container<
             PtrC
         >::type cont_;
         typedef functor_aux::new_<
@@ -57,7 +57,7 @@
     >
     struct deduce_data_generator/*<-*/
         :  boost::mpl::eval_if<
-            ptr_container_aux::is_ptr_container<C>,
+            container_aux::is_ptr_container<C>,
             deduce_ptr_generator<C>,
             deduce_value_generator<C>
         >
@@ -69,4 +69,4 @@
 }// assign
 }// boost
 
-#endif // BOOST_ASSIGN_V2_INTERPRETER_FUN_ER_2010_HPP
+#endif // BOOST_ASSIGN_V2_INTERPRETER_DATA_ER_2010_HPP
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -71,7 +71,7 @@
     struct case_<switch_tag::deduce_put, CaseNumber> :\
         switch_aux::helper<\
             v2::modifier_tag::Tag,\
-            ptr_container_aux::through_value_container<BooleanMetaF>::apply\
+            container_aux::through_value_container<BooleanMetaF>::apply\
         >{};\
 }\
 /**/
@@ -82,7 +82,7 @@
 #error
 #else
 #define BOOST_ASSIGN_V2_OPTION_MODIFIER_SWITCH_ASSOCIATIVE(CaseNumber)\
-BOOST_ASSIGN_V2_OPTION_MODIFIER_SWITCH_CASE(insert, value_container_aux::is_sorted, CaseNumber)\
+BOOST_ASSIGN_V2_OPTION_MODIFIER_SWITCH_CASE(insert, container_aux::is_sorted, CaseNumber)\
 /**/
 #endif
 
@@ -90,7 +90,7 @@
 #error
 #else
 #define BOOST_ASSIGN_V2_OPTION_MODIFIER_SWITCH_ARRAY(CaseNumber)\
-BOOST_ASSIGN_V2_OPTION_MODIFIER_SWITCH_CASE(iterate<>, value_container_aux::is_array, CaseNumber)
+BOOST_ASSIGN_V2_OPTION_MODIFIER_SWITCH_CASE(iterate<>, container_aux::is_array, CaseNumber)
 /**/
 #endif
 
@@ -98,7 +98,7 @@
 #error
 #else
 #define BOOST_ASSIGN_V2_OPTION_MODIFIER_SWITCH_ADAPTER(CaseNumber)\
-BOOST_ASSIGN_V2_OPTION_MODIFIER_SWITCH_CASE(push, value_container_aux::has_push_deduced_value, CaseNumber)
+BOOST_ASSIGN_V2_OPTION_MODIFIER_SWITCH_CASE(push, container_aux::has_push_deduced_value, CaseNumber)
 /**/
 #endif
 
@@ -125,7 +125,6 @@
 #define BOOST_ASSIGN_V2_OPTION_MODIFIER_SWITCH
 #endif
 
-
 /*->*/
 namespace interpreter_aux{
 
Modified: sandbox/assign_v2/boost/assign/v2/option/key.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/option/key.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/option/key.hpp	2011-03-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -9,9 +9,12 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_OPTION_KEY_ER_2010_HPP
 #define BOOST_ASSIGN_V2_OPTION_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/interpreter/data.hpp>
 #include <boost/assign/v2/option/data.hpp>
 #include <boost/mpl/apply.hpp>
+#include <boost/utility/enable_if.hpp>
 
 namespace boost{
 namespace assign{
@@ -22,10 +25,12 @@
     template<typename C>
     struct container_key{ typedef typename C::key_type type; };
 
-    template<typename /*<<Value or pointer-container>>*/C>
-    struct /*<<Metafunction>>*/deduce_key_generator/*<-*/
+    template<
+    	typename C // Value or pointer-container
+    >
+    struct deduce_key_generator/*<-*/
         :  boost::mpl::eval_if<
-            ptr_container_aux::is_ptr_container<C>,
+            container_aux::is_ptr_container<C>,
             deduce_ptr_generator<C, container_key>,
             deduce_value_generator<C, container_key>
         >
@@ -37,16 +42,28 @@
 namespace result_of{
 
     template<typename C, typename D>
-    struct option_key : ::boost::mpl::apply1<
-        interpreter_aux::result_of::option_data_generator<D>,
-        typename deduce_key_generator<C>::type
+    struct option_key : boost::lazy_enable_if<
+    	::boost::mpl::apply1<
+    		container_aux::through_value_container<
+    			container_aux::is_sorted
+    		>,
+    		C
+    	>,
+    	::boost::mpl::apply1<
+        	interpreter_aux::result_of::option_data_generator<D>,
+        	typename deduce_key_generator<C>::type
+    	>
     >{};
 
 }//result_of
 
-    template<typename /*<<Associative container>>*/C, typename F, typename Tag, typename D>
+	// Overrides data generator with a constructor for C::key_type
+    template<
+    	typename C  // Associative container
+    	, typename F, typename Tag, typename D
+    >
     typename result_of::option_key<C, D>::type
-    operator%/*<<Overrides data generator with a constructor for C::key_type>>*/(
+    operator%(
         interpreter_crtp<C, F, Tag, D> const& lhs,
         option_key rhs
     )/*<-*/
Modified: sandbox/assign_v2/boost/assign/v2/pipe/option_traits.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/pipe/option_traits.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/pipe/option_traits.hpp	2011-03-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -17,6 +17,7 @@
 #include <boost/mpl/vector/vector0.hpp>
 
 namespace boost{
+	struct use_default;
 namespace assign{
 namespace v2{
 namespace interpreter_aux{
Modified: sandbox/assign_v2/boost/assign/v2/ref/aux_/list/holder/head.hpp
==============================================================================
--- sandbox/assign_v2/boost/assign/v2/ref/aux_/list/holder/head.hpp	(original)
+++ sandbox/assign_v2/boost/assign/v2/ref/aux_/list/holder/head.hpp	2011-03-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -26,7 +26,7 @@
         typedef T head_value_type;
 
         explicit head_holder(T& t) : head_( &t ){}
-
+        
         typedef T& result_of_head_type;
         result_of_head_type head()const{ return (*this->head_); }
 
Modified: sandbox/assign_v2/libs/assign/v2/test/chain.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/chain.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/chain.cpp	2011-03-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -10,6 +10,7 @@
 #include <iterator>
 #include <vector>
 #include <list>
+#include <string>
 #include <boost/next_prior.hpp>
 #include <boost/range/begin.hpp>
 #include <boost/range/end.hpp>
Modified: sandbox/assign_v2/libs/assign/v2/test/detail/traits.cpp
==============================================================================
--- sandbox/assign_v2/libs/assign/v2/test/detail/traits.cpp	(original)
+++ sandbox/assign_v2/libs/assign/v2/test/detail/traits.cpp	2011-03-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -23,7 +23,7 @@
     void test()
     {
         namespace as2 = boost::assign::v2;
-        namespace ns = as2::value_container_aux;
+        namespace ns = as2::container_aux;
         {
             typedef std::queue<int> v_;
             BOOST_MPL_ASSERT(( ns::has_push<v_> ));
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -29,6 +29,19 @@
         using namespace boost;
         namespace as2 = assign::v2;
         {
+            //[test_ref_array_temporaries
+            boost::array<int, 3> ar; 
+            ar[0] = 72; ar[1] = 31; ar[2] = 48;
+            
+            BOOST_ASSIGN_V2_CHECK(
+            	range::equal(
+            		as2::ref::array( 72 )( 31 )( 48 ),
+            		ar    	
+            	)
+            )/*<<Temporaries destroyed past semicolon>>*/;
+            //]
+		}
+        {
             //[test_ref_array_read
             typedef int const T;
             T w = 11, x = 72, y = 31, z = 48;
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -45,19 +45,21 @@
             typedef add_reference<t2_>::type r2_;
 
             t0_ a = 0;
-#define B 2
             t2_ c = "c";
 
             typedef as2::ref::nth_result_of::list<tag_> result_;
             typedef mpl::apply1<result_,
                 mpl::vector<r0_, r1_, r2_>
             >::type ar_;
-            ar_ ar = as2::ref::list<tag_>( as2::_nil )( a )( B )( c );
 
-            BOOST_ASSIGN_V2_CHECK( &as2::ref::at<0>( ar ) == &a );
-            BOOST_ASSIGN_V2_CHECK( as2::ref::at<1>( ar ) == B );
-            BOOST_ASSIGN_V2_CHECK( str_( as2::ref::at<2>( ar ) ) == c );
-#undef B
+// Reminder : temporaries destroyed at the semi-colon
+// Implication : don't try to save the result.
+#define BOOST_ASSIGN_V2_macro as2::ref::list<tag_>( as2::_nil )( a )( 2 )( c )
+
+            BOOST_ASSIGN_V2_CHECK( &as2::ref::at<0>( BOOST_ASSIGN_V2_macro ) == &a );
+            BOOST_ASSIGN_V2_CHECK( as2::ref::at<1>( BOOST_ASSIGN_V2_macro ) == 2 );
+            BOOST_ASSIGN_V2_CHECK( str_( as2::ref::at<2>( BOOST_ASSIGN_V2_macro ) ) == c );
+#undef BOOST_ASSIGN_V2_macro
         }
         {
             typedef int t_; typedef add_reference<t_>::type r_;
@@ -78,7 +80,7 @@
             BOOST_ASSIGN_V2_CHECK( &arw[ 2 ].get() == &c );
         }
         {
-               typedef as2::ref::alloc_tag::lazy_alloc tag_;
+            typedef as2::ref::alloc_tag::lazy_alloc tag_;
             typedef as2::ref::list_aux::void_ void_;
             typedef as2::ref::list_aux::nil nil_;
             typedef as2::ref::empty_list<tag_>::type empty_;
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-25 12:41:57 EDT (Fri, 25 Mar 2011)
@@ -27,30 +27,43 @@
         using namespace boost;
         namespace as2 = assign::v2;
         {
+            //[test_ref_csv_array_temporaries
+            boost::array<int, 3> ar; 
+            ar[0] = 72; ar[1] = 31; ar[2] = 48;
+            
+            BOOST_ASSIGN_V2_CHECK(
+            	range::equal(
+            		as2::ref::csv_array( 72, 31, 48 ),
+            		ar    	
+            	)
+            )/*<<Temporaries destroyed past semicolon>>*/;
+            //]
+		}
+        {
             //[test_ref_csv_array_read
             typedef int const T;
             T x = 72, y = 31, z = 48;
-            typedef as2::ref::nth_result_of::csv_array<3, T>::type ar_;
-            ar_ ar = as2::ref::csv_array( x, y, z );
-            {
-                T& a = ar[0]; T& b = ar[2];
+            as2::ref::nth_result_of::csv_array<3, T>::type ar 
+            	= as2::ref::csv_array( x, y, z );
+            /*<-*/{/*->*/
+            T& front = ar.front(); T& back = ar.back();
             
-                BOOST_ASSIGN_V2_CHECK( &a == &x );
-                BOOST_ASSIGN_V2_CHECK( &b == &z );
-            }
+            BOOST_ASSIGN_V2_CHECK( &front == &x );
+            BOOST_ASSIGN_V2_CHECK( &back == &z );
+            /*<-*/}/*->*/
             //]
             {
-                T& a = ar.front(); T& b = ar.back();
+                T& front = ar.front(); T& back = ar.back();
 
-                BOOST_ASSIGN_V2_CHECK( &a == &x );
-                BOOST_ASSIGN_V2_CHECK( &b == &z );
+                BOOST_ASSIGN_V2_CHECK( &front == &x );
+                BOOST_ASSIGN_V2_CHECK( &back == &z );
             }
             {
-                T& a = (*begin( ar ) );
-                T& b = *next(boost::begin( ar ), 2 );
+                T& front = ( *begin( ar ) );
+                T& back = *next( boost::begin( ar ), 2 );
 
-                BOOST_ASSIGN_V2_CHECK( &a == &x );
-                BOOST_ASSIGN_V2_CHECK( &b == &z );
+                BOOST_ASSIGN_V2_CHECK( &front == &x );
+                BOOST_ASSIGN_V2_CHECK( &back == &z );
             }
         }
         {