$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r68082 - in sandbox/statistics/support/boost/assign/v2: . detail detail/keyword detail/traits/type put/deque put/generic put/modifier/ext put/pipe put/pipe/csv put/pipe/csv/cpp03 put/pipe/csv/cpp0x put/sub ref ref/array ref/detail/convert_traits ref/detail/unwrap ref/fusion ref/wrapper utility/chain utility/chain/checking utility/convert
From: erwann.rogard_at_[hidden]
Date: 2011-01-13 00:37:56
Author: e_r
Date: 2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
New Revision: 68082
URL: http://svn.boost.org/trac/boost/changeset/68082
Log:
upd libs/assign/v2
Text files modified: 
   sandbox/statistics/support/boost/assign/v2/detail/keyword.hpp                            |     1                                         
   sandbox/statistics/support/boost/assign/v2/detail/keyword/unwrap.hpp                     |    29 -------                                 
   sandbox/statistics/support/boost/assign/v2/detail/traits/type/meta_convert.hpp           |     9 +                                       
   sandbox/statistics/support/boost/assign/v2/put/deque/cont.hpp                            |    26 +++---                                  
   sandbox/statistics/support/boost/assign/v2/put/generic/concept_sub.hpp                   |     2                                         
   sandbox/statistics/support/boost/assign/v2/put/generic/crtp.hpp                          |    12 +-                                      
   sandbox/statistics/support/boost/assign/v2/put/generic/new_fun.hpp                       |     2                                         
   sandbox/statistics/support/boost/assign/v2/put/generic/new_modifier.hpp                  |     2                                         
   sandbox/statistics/support/boost/assign/v2/put/modifier/ext/result_of_modulo.hpp         |     2                                         
   sandbox/statistics/support/boost/assign/v2/put/pipe/csv/cpp03/forward.hpp                |   102 --------------------------              
   sandbox/statistics/support/boost/assign/v2/put/pipe/csv/cpp0x/forward.hpp                |   104 ---------------------------             
   sandbox/statistics/support/boost/assign/v2/put/pipe/csv/forward.hpp                      |     2                                         
   sandbox/statistics/support/boost/assign/v2/put/pipe/range.hpp                            |     2                                         
   sandbox/statistics/support/boost/assign/v2/put/sub/csv.hpp                               |     8 +-                                      
   sandbox/statistics/support/boost/assign/v2/put/sub/functor.hpp                           |     4                                         
   sandbox/statistics/support/boost/assign/v2/ref.hpp                                       |     1                                         
   sandbox/statistics/support/boost/assign/v2/ref/array/interface.hpp                       |    74 ++++++++-----------                     
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/add_const.hpp       |    36 ---------                               
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp        |   150 --------------------------------------- 
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/distinct_values.hpp |    71 ------------------                      
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp          |    99 --------------------------              
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/twin_values.hpp     |    44 -----------                             
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp                |   125 ---------------------------------       
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp                   |    87 ----------------------                  
   sandbox/statistics/support/boost/assign/v2/ref/fusion/container.hpp                      |     2                                         
   sandbox/statistics/support/boost/assign/v2/ref/fusion/head_holder.hpp                    |     2                                         
   sandbox/statistics/support/boost/assign/v2/ref/fusion/link_holder.hpp                    |     2                                         
   sandbox/statistics/support/boost/assign/v2/ref/wrapper.hpp                               |     1                                         
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/copy.hpp                          |    63 ++++++++--------                        
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp                          |    14 +-                                      
   sandbox/statistics/support/boost/assign/v2/utility/chain/adaptor.hpp                     |     2                                         
   sandbox/statistics/support/boost/assign/v2/utility/chain/checking/twin_values.hpp        |   109 +++++++++++++++-------------            
   sandbox/statistics/support/boost/assign/v2/utility/chain/use_lvalue.hpp                  |    46 ++++--------                            
   sandbox/statistics/support/boost/assign/v2/utility/convert/converter.hpp                 |     2                                         
   34 files changed, 197 insertions(+), 1040 deletions(-)
Modified: sandbox/statistics/support/boost/assign/v2/detail/keyword.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/keyword.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/detail/keyword.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -11,6 +11,5 @@
 #define BOOST_ASSIGN_V2_DETAIL_KEYWORD_ER_2010_HPP
 
 #include <boost/assign/v2/detail/keyword/nil.hpp>
-#include <boost/assign/v2/detail/keyword/unwrap.hpp>
 
 #endif
Modified: sandbox/statistics/support/boost/assign/v2/detail/keyword/unwrap.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/keyword/unwrap.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/detail/keyword/unwrap.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -1,28 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  Boost.Assign v2                                                         //
-//                                                                          //
-//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
-//  Copyright (C) 2010 Erwann Rogard                                        //
-//  Use, modification and distribution are subject to the                   //
-//  Boost Software License, Version 1.0. (See accompanying file             //
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_DETAIL_KEYWORD_UNWRAP_ER_2010_HPP
-#define BOOST_ASSIGN_V2_DETAIL_KEYWORD_UNWRAP_ER_2010_HPP
-
-namespace boost{
-namespace assign{ 
-namespace v2{
-namespace keyword_aux{ 
-
-	struct unwrap{};
-
-}// detail
-
-	keyword_aux::unwrap const _unwrap = keyword_aux::unwrap();
-
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file
\ No newline at end of file
Modified: sandbox/statistics/support/boost/assign/v2/detail/traits/type/meta_convert.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/detail/traits/type/meta_convert.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/type/meta_convert.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -9,10 +9,12 @@
 //////////////////////////////////////////////////////////////////////////////
 #ifndef BOOST_ASSIGN_V2_TRAITS_TYPE_HAS_VALUE_TYPE_ER_2010_HPP
 #define BOOST_ASSIGN_V2_TRAITS_TYPE_HAS_VALUE_TYPE_ER_2010_HPP
-#include <boost/assign/v2/ref/detail/convert_traits/result.hpp>
+//#include <boost/assign/v2/ref/convert_traits/result.hpp>
+
+#include <boost/assign/v2/ref/convert_traits/reference.hpp>
 
 namespace boost{
-//	struct boost::use_default;
+	struct boost::use_default;
 namespace assign{
 namespace v2{
 namespace type_traits{
@@ -21,7 +23,8 @@
     struct meta_convert{
 
         template<typename T1,typename T2>
-        struct apply : ref::convert_traits::result<T1,T2>{};
+//        struct apply : ref::convert_traits::result<T1, T2>{};
+        struct apply : ref::convert_traits::reference<T1, T2>{};
 
         };
 
Modified: sandbox/statistics/support/boost/assign/v2/put/deque/cont.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/deque/cont.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/deque/cont.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -103,46 +103,46 @@
         typedef typename impl_::difference_type difference_type;
 
         size_type size()const{
-            return this->unwrap().size();
+            return this->get().size();
         }
         size_type max_size()const{
-            return this->unwrap().max_size();
+            return this->get().max_size();
         }
         bool empty()const{
-            return this->unwrap().empty();
+            return this->get().empty();
         }
         reference operator[](size_type n){
-            return this->unwrap()[n];
+            return this->get()[n];
         }
         const_reference operator[](size_type n)const{
-            return this->unwrap()[n];
+            return this->get()[n];
         }
         reference front(){
-            return this->unwrap().front();
+            return this->get().front();
         }
         const_reference front()const{
-            return this->unwrap().front();
+            return this->get().front();
         }
                 reference back(){
-        	return this->unwrap().back();
+        	return this->get().back();
         }
         const_reference back()const{
-            return this->unwrap().back();
+            return this->get().back();
         }
         void pop_front(){
-            this->unwrap().pop_front();
+            this->get().pop_front();
         }
         void pop_back(){
-            this->unwrap().pop_back();
+            this->get().pop_back();
         }
         void swap(cont& that){
-            this->unwrap().swap( that.unwrap() );
+            this->get().swap( that.get() );
         }
 
         // Note : the modifiers such as push_back() are ommitted as they
         // accessible through the put interface.
 
-       impl_& unwrap()const{ return this->impl; }
+       impl_& get()const{ return this->impl; }
         protected:
         mutable impl_ impl;
 
Modified: sandbox/statistics/support/boost/assign/v2/put/generic/concept_sub.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/generic/concept_sub.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/concept_sub.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -25,7 +25,7 @@
                 BOOST_CONCEPT_USAGE(Pre1)
         {
                         X x( v );
-            V& ref = x.unwrap();
+            V& ref = x.get();
         }
         
         private:
Modified: sandbox/statistics/support/boost/assign/v2/put/generic/crtp.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/generic/crtp.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/crtp.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -147,7 +147,7 @@
 )
 #undef MACRO
 #endif
-		V& unwrap()const{ return this->derived().unwrap(); }
+		V& get()const{ return this->derived().get(); }
 
                 struct result_of_modulo{
 
@@ -170,7 +170,7 @@
                 typedef typename caller_::type cons_;
                     typedef typename result_of_modulo::deduce::type result_;
                     return result_(
-        		this->derived().unwrap(),
+        		this->derived().get(),
                      caller_::call()
                 );
         }
@@ -182,7 +182,7 @@
         {
                 typedef put_concept::ModifierImpl<modifier_, V, T*> concept_;
             BOOST_CONCEPT_ASSERT(( concept_ ));
-			this->modifier.impl( this->derived().unwrap(), t );
+			this->modifier.impl( this->derived().get(), t );
             return this->derived();
         }
 
@@ -206,7 +206,7 @@
         {
                         check_modifier( t );
                         this->modifier.impl(
-                this->derived().unwrap(),
+                this->derived().get(),
                 std::forward<T>( t )
             );
             return this->derived();
@@ -216,7 +216,7 @@
         result_type arg_deduct(T& t)const
         {
                         check_modifier( t );
-			this->modifier.impl( this->derived().unwrap(), t );
+			this->modifier.impl( this->derived().get(), t );
             return this->derived();
         }
 
@@ -224,7 +224,7 @@
         result_type arg_deduct(T const& t)const
         {
                         check_modifier( t );
-			this->modifier.impl( this->derived().unwrap(), t );
+			this->modifier.impl( this->derived().get(), t );
             return this->derived();
         }
 
Modified: sandbox/statistics/support/boost/assign/v2/put/generic/new_fun.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/generic/new_fun.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/new_fun.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -40,7 +40,7 @@
                     result_of_modulo::new_fun<T>,
                 F1
     	>::type result_;
-        return result_( t.unwrap(), h.value, t.modifier );
+        return result_( t.get(), h.value, t.modifier );
     }
 
         struct kwd_fun{
Modified: sandbox/statistics/support/boost/assign/v2/put/generic/new_modifier.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/generic/new_modifier.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/new_modifier.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -55,7 +55,7 @@
                 NewTag
     	>::type result_;
         typedef put_aux::modifier<NewTag> modifier_;
-        return result_( t.unwrap(), t.fun, modifier_( h.modifier_tag ) );
+        return result_( t.get(), t.fun, modifier_( h.modifier_tag ) );
     }
 
 }// put_aux
Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/ext/result_of_modulo.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/ext/result_of_modulo.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/ext/result_of_modulo.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -78,7 +78,7 @@
                 typedef put_concept::Parameter<m_,P> concept_;
                 BOOST_CONCEPT_ASSERT(( concept_ ));
                 return call(
-                    t.unwrap(),
+                    t.get(),
                     make_fun( t, is_same_fun() ),
                     m_( p.get() )
                 );
Modified: sandbox/statistics/support/boost/assign/v2/put/pipe/csv/cpp03/forward.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/pipe/csv/cpp03/forward.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/pipe/csv/cpp03/forward.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -1,101 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  Boost.Assign v2                                                         //
-//                                                                          //
-//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
-//  Copyright (C) 2010 Erwann Rogard                                        //
-//  Use, modification and distribution are subject to the                   //
-//  Boost Software License, Version 1.0. (See accompanying file             //
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_PUT_PIPE_FUNCTOR_CPP03_FORWARD_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_PIPE_FUNCTOR_CPP03_FORWARD_ER_2010_HPP
-#include <boost/preprocessor/repetition.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/assign/v2/ref/list_tuple.hpp>
-#include <boost/tuples/tuple.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace put_pipe_aux{
-
-    // --- Tuple --- //
-
-#define MACRO1(z, I, data) ::boost::get<I>( data ).unwrap()
-#define MACRO(z, N, data)\
-    template<typename F, BOOST_PP_ENUM_PARAMS(N, typename T)>\
-    void forward(\
-        F& f,\
-        ::boost::tuple<BOOST_PP_ENUM_PARAMS(N, T)> const& t\
-    )\
-    {\
-        f( BOOST_PP_ENUM(N, MACRO1, t) );\
-    }\
-/**/
-BOOST_PP_REPEAT(
-    BOOST_PP_INC(BOOST_PP_ASSIGN_V2_LIMIT_ARITY),
-    MACRO,
-    ~
-)
-
-    // --- List  --- //
-
-    template<
-        typename F,
-        int N, typename L, params(typename T)
-    >
-    void forward(
-        F& f ,
-        boost::mpl::int_<N>,
-        ref::list_tuple_aux::container<N, L, params(T)> const& list
-    )
-    {}
-
-    template<
-        typename F,
-        int I, int N, typename L, params(typename T)
-    >
-    void forward(
-        F& f ,
-        boost::mpl::int_<I>,
-        ref::list_tuple_aux::container<N, L, params(T)> const& list
-    )
-    {
-        {
-            typedef boost::mpl::int_<I> int_;
-            forward( f, list.get( int_() ) );
-        }
-        {
-            typedef boost::mpl::int_<I+1> next_;
-            forward( f, next_(), list );
-        }
-    }
-
-    // ------------ //
-
-    template<typename F, typename L>
-    void forward(
-        F& f ,
-        ref::list_tuple_aux::container<
-            0,
-            L,
-            params(list_tuple_aux::na_)
-        > const& list
-    ){}
-
-    template<typename F, int N, typename L, params(T)>
-    void forward(
-        F& f,
-        ref::list_tuple_aux::container<N, L, params(T)> const& list
-    )
-    {
-        typedef boost::mpl::int_<0> int_;
-        forward(f, int_(), list);
-    }
-
-}// put_pipe_aux
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_PUT_PIPE_FUNCTOR_FORWARD_ER_2010_HPP
+// TODO remove file
Modified: sandbox/statistics/support/boost/assign/v2/put/pipe/csv/cpp0x/forward.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/pipe/csv/cpp0x/forward.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/pipe/csv/cpp0x/forward.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -1,103 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  Boost.Assign v2                                                         //
-//                                                                          //
-//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
-//  Copyright (C) 2010 Erwann Rogard                                        //
-//  Use, modification and distribution are subject to the                   //
-//  Boost Software License, Version 1.0. (See accompanying file             //
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_PUT_PIPE_FUNCTOR_CPP0X_FORWARD_ER_2010_HPP
-#define BOOST_ASSIGN_V2_PUT_PIPE_FUNCTOR_CPP0X_FORWARD_ER_2010_HPP
-#include <boost/mpl/size.hpp>
-#include <boost/assign/v2/ref/tuple/cpp0x.hpp>
-#include <boost/assign/v2/ref/list_tuple.hpp>
-#include <boost/assign/v2/temporary/variadic_args_to_indices.hpp>
-
-namespace boost{
-namespace assign{
-namespace v2{
-namespace put_pipe_aux{
-
-    // --- Tuple --- //
-
-    template<typename F, typename T, typename I, I ...Values>
-    void forward(
-        F& f,
-        T const& t,
-        ::boost::mpl::er2010::indices<I, Values...>
-    )
-    {
-        f( get<Values>( t )... );
-    }
-
-    template<typename F, typename ...Args>
-    void forward(
-        F& f,
-        ref::tuple_aux::container<Args...> const& t
-    )
-    {
-        typedef typename ::boost::mpl::er2010::args_to_indices<
-            int,
-            Args...
-        >::type indices_;
-        forward( f, t, indices_() );
-    }
-
-    // --- List  --- //
-
-    template<
-        typename F,
-        int N, typename L, typename...Args
-    >
-    void forward(
-        F& f ,
-        boost::mpl::int_<N>,
-        ref::list_tuple_aux::container<N, L, Args...> const& list
-    )
-    {}
-
-    template<
-        typename F,
-        int I, int N, typename L, typename...Args
-    >
-    void forward(
-        F& f ,
-        boost::mpl::int_<I>,
-        ref::list_tuple_aux::container<N, L, Args...> const& list
-    )
-    {
-        {
-            typedef boost::mpl::int_<I> int_;
-            forward( f, list.get( int_() ) );
-        }
-        {
-            typedef boost::mpl::int_<I+1> next_;
-            forward( f, next_(), list );
-        }
-    }
-
-    // ------------ //
-
-    template<typename F, typename L>
-    void forward(
-        F& f ,
-        ref::list_tuple_aux::container<0, L> const& list
-    ){}
-
-    template<typename F, int N, typename L, typename...Args>
-    void forward(
-        F& f,
-        ref::list_tuple_aux::container<N, L, Args...> const& list
-    )
-    {
-        typedef boost::mpl::int_<0> int_;
-        forward(f, int_(), list);
-    }
-
-}// put_pipe_aux
-}// v2
-}// assign
-}// boost
-
-#endif // BOOST_ASSIGN_V2_PUT_PIPE_FUNCTOR_FORWARD_ER_2010_HPP
+// TODO remove file
Modified: sandbox/statistics/support/boost/assign/v2/put/pipe/csv/forward.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/pipe/csv/forward.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/pipe/csv/forward.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -35,7 +35,7 @@
         C const& c
     )
     {
-        f( c[ I ] );
+        f( c[ I ].get() );
         csv_forward<N, I+1>(f, c);
     }
 
Modified: sandbox/statistics/support/boost/assign/v2/put/pipe/range.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/pipe/range.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/pipe/range.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -28,7 +28,7 @@
 
             helper1(From const& from) : super_t(from){}
 
-        From const& from()const{ return this->unwrap(); }
+        From const& from()const{ return this->get(); }
 
         private:
         helper1();
Modified: sandbox/statistics/support/boost/assign/v2/put/sub/csv.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/sub/csv.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/sub/csv.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -67,7 +67,7 @@
         operator()(Args&&...args)
         {
             typedef typename result_of::put<V>::type result_;
-            result_ result = put( this->unwrap() );
+            result_ result = put( this->get() );
             this->impl(
                 result,
                 args...
@@ -81,7 +81,7 @@
     typename result_of::put<V>::type\
     operator()( BOOST_PP_ENUM_PARAMS(N, value_type const & _) )\
     {\
-        return put( this->unwrap() ) BOOST_PP_REPEAT(N, MACRO1, ~ );\
+        return put( this->get() ) BOOST_PP_REPEAT(N, MACRO1, ~ );\
     }\
 /**/
 BOOST_PP_REPEAT_FROM_TO(
@@ -93,8 +93,8 @@
 #undef MACRO1
 #undef MACRO2
 #endif
-		V& unwrap()const{
-        	return static_cast<super1_t const&>(*this).unwrap();
+		V& get()const{
+        	return static_cast<super1_t const&>(*this).get();
         }
 
     };
Modified: sandbox/statistics/support/boost/assign/v2/put/sub/functor.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/sub/functor.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/sub/functor.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -93,8 +93,8 @@
                 // when Tag or F is modified.
                 }
 
-		V& unwrap()const{ 
-        	return static_cast<super1_t const&>(*this).unwrap(); 
+		V& get()const{ 
+        	return static_cast<super1_t const&>(*this).get(); 
         }
 
     };
Modified: sandbox/statistics/support/boost/assign/v2/ref.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -11,5 +11,6 @@
 #define BOOST_ASSIGN_V2_REF_ER_2010_HPP
 
 #include <boost/assign/v2/ref/wrapper.hpp>
+#include <boost/assign/v2/ref/array.hpp>
 
 #endif
Modified: sandbox/statistics/support/boost/assign/v2/ref/array/interface.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/array/interface.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/array/interface.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -26,8 +26,7 @@
 
 #include <boost/assign/v2/ref/wrapper/framework.hpp>
 #include <boost/assign/v2/ref/wrapper/crtp.hpp>
-#include <boost/assign/v2/ref/detail/unwrap/range.hpp>
-/*  #include <boost/assign/v2/detail/relational_op.hpp> */
+#include <boost/assign/v2/ref/wrapper/get.hpp>
 
 namespace boost{
 namespace assign{
@@ -42,17 +41,19 @@
         typedef impl_ const cimpl_;
 
                 typedef typename Impl::value_type wrapper_;
-
-		typedef typename ref::result_of::unwrap_range<impl_>::type range_;
-		typedef typename ref::result_of::unwrap_range<cimpl_>::type crange_;
-        typedef typename boost::unwrap_reference<wrapper_>::type value_type;
-        typedef typename boost::add_reference<value_type>::type reference;
-        typedef typename boost::call_traits<
-            reference>::const_reference const_reference;
+        typedef typename boost::unwrap_reference<wrapper_>::type inner_type;
+        typedef impl_ range_;
+        typedef cimpl_ crange_;
         typedef typename boost::range_iterator<range_>::type iterator;
         typedef typename boost::range_iterator<crange_>::type const_iterator;
+        
+        typedef typename boost::range_value<range_>::type value_type;
+        typedef typename boost::range_reference<range_>::type reference;
+        typedef typename boost::range_reference<crange_>::type const_reference;
+        
+		typedef typename ref::result_of::get<wrapper_>::type result_of_get_;
+        typedef typename boost::call_traits<inner_type>::param_type param_type;
 
-        // wrappers
         #ifndef BOOST_MSVC
                     typedef typename boost::range_size<impl_>::type size_type;
         #endif
@@ -65,11 +66,6 @@
 
     template<typename Impl, typename D>
     class interface
-    /*:
-       public relational_op_aux::crtp<
-      		interface<Impl, D>
-        >
-	*/
     {
 
         typedef interface_traits<Impl> traits_;
@@ -77,9 +73,13 @@
         typedef typename traits_::impl_ impl_;
         typedef typename traits_::cimpl_ cimpl_;
         typedef interface<Impl, D> this_;
+		typedef typename traits_::result_of_get_ result_of_get_;
+        typedef typename traits_::param_type param_type;
 
         public:
+
         typedef wrapper_ wrapper_type;
+        typedef typename traits_::inner_type inner_type;
         typedef typename traits_::value_type value_type;
         typedef typename traits_::iterator iterator;
         typedef typename traits_::const_iterator const_iterator;
@@ -87,7 +87,6 @@
         typedef typename traits_::difference_type difference_type;
         typedef typename traits_::reference reference;
         typedef typename traits_::const_reference const_reference;
-		typedef typename boost::call_traits<value_type>::param_type param_type;
 
         BOOST_STATIC_CONSTANT(size_type, static_size = Impl::static_size);
 
@@ -117,35 +116,35 @@
                 return this->wrappers().empty();
         }
 
-		void rebind(size_type i, reference t)
+		void rebind(size_type i, result_of_get_ t)
         {
                 return (this->wrappers())[i].rebind( t );
         }
 
         reference operator[](size_type i)
         {
-        	return (this->wrappers())[i].unwrap();
+        	return this->elem_impl( this->wrappers()[i] );
         }
         const_reference operator[](size_type i)const
         {
-             return (this->wrappers())[i].unwrap();
+        	return this->elem_impl( this->wrappers()[i] );
         }
 
         reference front()
         {
-        	return (this->wrappers()).front().unwrap();
+        	return this->elem_impl( this->wrappers().front() );
         }
         const_reference front() const
         {
-        	return (this->wrappers()).front().unwrap();
+        	return this->elem_impl( this->wrappers().front() );
         }
         reference back()
         {
-        	return (this->wrappers()).back().unwrap();
+        	return this->elem_impl( this->wrappers().back() );
         }
         const_reference back() const
         {
-        	return (this->wrappers()).back().unwrap();
+        	return this->elem_impl( this->wrappers().back() );
         }
 
         void assign(param_type val)
@@ -154,20 +153,6 @@
                 this->assign_impl( val, int_() );
         }
 
-/*
-        // Relational op
-		template<typename R>
-        bool equal_to(const R& r)const{
-         	return ::boost::iterator_range_detail::equal(
-            	(*this), r );
-		}
-
-		template<typename R>
-        bool less_than(const R& r)const{
-         	return ::boost::iterator_range_detail::less_than(
-            	(*this), r );
-		}
-*/
                 protected:
 
         void assign_impl(param_type val, boost::mpl::int_<static_size>)
@@ -183,16 +168,19 @@
             this->assign_impl( val, next_() );
         }
 
-        public:
-
-        typename traits_::range_ unwrap()
+		template<typename W>
+		reference elem_impl(W& w)
         {
-        	return ref::unwrap_range( this->wrappers() );
+        	return w; // w.get()
         }
-        typename traits_::crange_ unwrap()const{
-        	return ref::unwrap_range( this->wrappers() );
+		template<typename W>
+		const_reference elem_impl(W & w)const
+        {
+        	return w; // w.get()
         }
 
+        public:
+
         impl_& wrappers(){
             return static_cast<D&>(*this).impl();
         }
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/add_const.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/add_const.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/add_const.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -1,35 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  Boost.Assign v2                                                         //
-//                                                                          //
-//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
-//  Copyright (C) 2010 Erwann Rogard                                        //
-//  Use, modification and distribution are subject to the                   //
-//  Boost Software License, Version 1.0. (See accompanying file             //
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONVERT_TRAITS_ADD_CONST_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONVERT_TRAITS_ADD_CONST_ER_2010_HPP
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/type_traits/add_const.hpp>
-
-namespace boost{
-namespace assign{ 
-namespace v2{
-namespace ref{
-namespace convert_traits{
-
-    template<typename V, bool or_const>
-    struct add_const : boost::mpl::eval_if_c<
-    	or_const,
-        boost::add_const<V>,
-        boost::mpl::identity<V>
-    >{};
-
-}// convert_traits
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -1,149 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  Boost.Assign v2                                                         //
-//                                                                          //
-//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
-//  Copyright (C) 2010 Erwann Rogard                                        //
-//  Use, modification and distribution are subject to the                   //
-//  Boost Software License, Version 1.0. (See accompanying file             //
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONVERT_TRAITS_CHECKING_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONVERT_TRAITS_CHECKING_ER_2010_HPP
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/config.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/promote.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/assign/v2/ref/detail/convert_traits/result.hpp>
-
-namespace boost{
-namespace assign{ 
-namespace v2{
-namespace ref{
-namespace convert_traits{
-namespace checking{
-
-    template<typename T1,typename T2,typename T3>
-    struct tester{
-    
-        typedef typename convert_traits::result<T1,T2>::type result_;
-                
-        static void test()
-        {
-            typedef boost::is_same<result_,T3> pred_;
-            BOOST_STATIC_ASSERT( pred_::value );
-        }
-
-   };
-
-namespace twin_values{
-
-    template<typename T>
-    void do_check()
-    {
-
-        tester<const T &, const T &, const T &>::test(); 
-        tester<const T &,       T &, const T &>::test(); 
-        tester<      T &, const T &, const T &>::test(); 
-        tester<      T &,       T &,       T &>::test(); 
-
-        tester<const T &, const T  , const T  >::test(); 
-        tester<const T &,       T  , const T  >::test(); 
-        tester<      T &, const T  , const T  >::test(); 
-        tester<      T &,       T  ,       T  >::test(); 
-
-        tester<const T ,  const T &, const T  >::test(); 
-        tester<const T ,        T &, const T  >::test(); 
-        tester<      T ,  const T &, const T  >::test(); 
-        tester<      T ,        T &,       T  >::test(); 
-
-        tester<const T ,  const T  , const T  >::test(); 
-        tester<const T ,        T  , const T  >::test(); 
-        tester<      T ,  const T  , const T  >::test(); 
-        tester<      T ,        T  ,       T  >::test(); 
-
-    };
-
-}// twin_values
-namespace distinct_values{
-namespace arithmetic{
-
-    template<typename T1,typename T2,typename T3>
-    void do_check_impl(const T1&, const T2& ,const T3&) 
-    {
-        
-        // Disable for Ubuntu 9.1 - GCC 4.4 (see workaround below).
-        // typedef typename boost::mpl::not_<
-        //   boost::is_same<T1,T2> 
-        // >::type not_same_;
-        // BOOST_STATIC_ASSERT(not_same_::value);
-        
-        tester<const T1&, const T2&, const T3 >::test(); 
-        tester<const T1&,       T2&, const T3 >::test(); 
-        tester<      T1&, const T2&, const T3 >::test(); 
-        tester<      T1&,       T2&,       T3 >::test(); 
-
-        tester<const T1&, const T2 , const T3 >::test(); 
-        tester<const T1&,       T2 , const T3 >::test(); 
-        tester<      T1&, const T2 , const T3 >::test(); 
-        tester<      T1&,       T2 ,       T3 >::test(); 
-
-        tester<const T1 ,  const T2&, const T3 >::test(); 
-        tester<const T1 ,        T2&, const T3 >::test(); 
-        tester<      T1 ,  const T2&, const T3 >::test(); 
-        tester<      T1 ,        T2&,       T3 >::test(); 
-
-        tester<const T1 ,  const T2 , const T3 >::test(); 
-        tester<const T1 ,        T2 , const T3 >::test(); 
-       	tester<      T1 ,  const T2 , const T3 >::test(); 
-        tester<      T1 ,        T2 ,       T3 >::test(); 
-
-    };
-
-
-#define m(T1, T2, T3)													    \
-    template<typename T>													\
-    void do_check(															\
-    	typename boost::enable_if<											\
-    		boost::is_same<T,T1> 											\
-        >::type* = 0														\
-    ) 																		\
-    {																		\
-        distinct_values::arithmetic::do_check_impl( T1(), T2(), T3() );	    \
-    }																		\
-/**/
-
-// Works for Max OSX 10.6 GCC 4.2 but not Ubuntu 9.1 GCC 4.4
-// 	m(short  , long,	int)
-// 	m(int    , long,	long)
-//	m(float  , double,	double)
-//  typedef long double long_double_;
-//	m(double , long_double_, long double)
-
-namespace workaround{
-	typedef boost::numeric::conversion_traits<short, int>::supertype a_;
-	typedef boost::numeric::conversion_traits<int, long>::supertype b_;
-	typedef boost::numeric::conversion_traits<float, double>::supertype c_;
-	typedef boost::numeric::conversion_traits<
-    	double,long double>::supertype d_;
-}// workaround
-
-m(short  , int, 	workaround::a_)
-m(int    , long,	workaround::b_)
-m(float  , double,	workaround::c_)
-typedef long double long_double_;
-m(double , long_double_, workaround::d_)
-
-#undef m
-}// arithmetic
-}// distinct_values
-}// checking
-}// convert_traits
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/distinct_values.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/distinct_values.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/distinct_values.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -1,70 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  Boost.Assign v2                                                         //
-//                                                                          //
-//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
-//  Copyright (C) 2010 Erwann Rogard                                        //
-//  Use, modification and distribution are subject to the                   //
-//  Boost Software License, Version 1.0. (See accompanying file             //
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONVERT_TRAITS_DISTINCT_VALUES_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONVERT_TRAITS_DISTINCT_VALUES_ER_2010_HPP
-#include <boost/numeric/conversion/conversion_traits.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/type_traits/is_arithmetic.hpp>
-#include <boost/assign/v2/ref/detail/convert_traits/add_const.hpp>
-
-namespace boost{
-namespace assign{ 
-namespace v2{
-namespace ref{
-namespace convert_traits{
-namespace distinct_values{
-
-    template<typename V1,typename V2>
-    struct value{
-        
-        struct arithmetic
-        {
-            typedef typename boost::numeric::conversion_traits<
-                V1,
-                V2
-            >::supertype type;
-            
-        };
-            
-        struct non_arithmetic : boost::mpl::eval_if<
-            boost::is_convertible<V1,V2>,
-            boost::mpl::identity<V2>,
-            boost::mpl::identity<V1>
-        >{};
-
-        typedef boost::is_arithmetic<V1> is_ari1_;
-        typedef boost::is_arithmetic<V2> is_ari2_;
-        typedef boost::mpl::and_<is_ari1_,is_ari2_> is_ari_;
-        typedef typename boost::mpl::eval_if<
-            is_ari_,
-            arithmetic,
-            non_arithmetic
-        >::type type;
-            
-    }; // value
-        
-    // There can be no reference if V1 != V2.
-    template<typename V1,typename V2, bool or_const, bool and_ref>
-    struct reference :  convert_traits::add_const<
-        typename distinct_values::value<V1,V2>::type, 
-        or_const
-    >{};
-
-}// distinct_values
-}// convert_traits
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -1,98 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  Boost.Assign v2                                                         //
-//                                                                          //
-//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
-//  Copyright (C) 2010 Erwann Rogard                                        //
-//  Use, modification and distribution are subject to the                   //
-//  Boost Software License, Version 1.0. (See accompanying file             //
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONVERT_TRAITS_RESULT_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONVERT_TRAITS_RESULT_ER_2010_HPP
-#include <boost/config.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/or.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/is_reference.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/type_traits/remove_reference.hpp>
-#include <boost/type_traits/remove_const.hpp>
-#include <boost/assign/v2/ref/detail/convert_traits/twin_values.hpp>
-#include <boost/assign/v2/ref/detail/convert_traits/distinct_values.hpp>
-
-namespace boost{
-namespace assign{ 
-namespace v2{
-namespace ref{
-namespace convert_traits{
-
-	template<typename T1,typename T2>
-	struct result
-	{
-
-    	template<typename T>
-    	struct traits{
-        
-        	typedef typename boost::is_reference<T>::type is_ref_;
-        	typedef typename boost::remove_reference<T>::type const_;
-        	typedef typename boost::is_const<const_>::type is_const_;
-        	typedef typename boost::remove_const<const_>::type val_;
-
-    	};
-
-    	typedef traits<T1> traits1_;
-	    typedef traits<T2> traits2_;
-      
-    	typedef typename traits1_::val_ val1_;
-	    typedef typename traits2_::val_ val2_;
-      
-	    typedef boost::is_same<val1_,val2_> same_val_;
-
-	    typedef typename boost::mpl::and_<
-    	    typename traits1_::is_ref_,
-        	typename traits2_::is_ref_
-	    >::type and_ref_;
-
-	    typedef typename boost::mpl::or_<
-    	    typename traits1_::is_const_,
-    	    typename traits2_::is_const_
-    	>::type or_const_;
-        
-	    typedef typename boost::mpl::eval_if<
-    	    same_val_,
-    	    twin_values::reference<
-    	        val1_,
-    	        or_const_::value,
-    	        and_ref_::value
-    	    >,
-    	    distinct_values::reference<
-    	        val1_,
-    	        val2_,
-    	        or_const_::value,
-    	        and_ref_::value
-    	    >
-    	>::type type;
-	
-    	typedef boost::mpl::and_<
-        	boost::is_convertible<T1,type>,
-        	boost::is_convertible<T2,type>
-	    > is_valid_type;
-
-	    BOOST_STATIC_CONSTANT(bool, is_valid = is_valid_type::value);
-        
-	    static void test()
-    	{
-	        BOOST_STATIC_ASSERT( is_valid );
-    	}
-        
-	};
-
-}// convert_traits
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/twin_values.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/twin_values.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/twin_values.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -1,43 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  Boost.Assign v2                                                         //
-//                                                                          //
-//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
-//  Copyright (C) 2010 Erwann Rogard                                        //
-//  Use, modification and distribution are subject to the                   //
-//  Boost Software License, Version 1.0. (See accompanying file             //
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_CONVERT_TRAITS_TWIN_VALUES_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_CONVERT_TRAITS_TWIN_VALUES_ER_2010_HPP
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/assign/v2/ref/detail/convert_traits/add_const.hpp>
-
-namespace boost{
-namespace assign{ 
-namespace v2{
-namespace ref{
-namespace convert_traits{
-namespace twin_values{
-
-    template<typename V, bool or_const, bool and_ref>
-    struct reference
-    {
-    	typedef typename convert_traits::add_const<V,or_const>::type c_;
-        typedef typename boost::mpl::eval_if_c<
-            and_ref,
-            boost::add_reference<c_>,
-            boost::mpl::identity<c_>
-        >::type type;
-    };
-
-}// twin_values 
-}// convert_traits
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
-
+// TODO remove file
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -1,124 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  Boost.Assign v2                                                         //
-//                                                                          //
-//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
-//  Copyright (C) 2010 Erwann Rogard                                        //
-//  Use, modification and distribution are subject to the                   //
-//  Boost Software License, Version 1.0. (See accompanying file             //
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_WRAPPER_UNWRAP_ITERATOR_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_WRAPPER_UNWRAP_ITERATOR_ER_2010_HPP
-#include <boost/range/reference.hpp>
-#include <boost/type_traits/remove_reference.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/ref.hpp> // is_reference_wrapper<>
-#include <boost/assign/v2/ref/detail/unwrap/iterator.hpp>
-
-// Calling
-// 	*unwrap_iterator( it );
-// is equivalent to
-//	(*it).unwrap(); 
-//  if *it is a reference wrapper, otherwise
-//  (*it);
-// Note this is necessary for chaining, at least.
-
-#include <boost/type_traits/decay.hpp>
-
-namespace boost{
-	struct use_default;
-namespace assign{ 
-namespace v2{
-namespace ref{
-namespace unwrap_aux{
-
-	template<typename I,
-        typename R = typename boost::iterator_reference<I>::type,
-    	typename V = typename boost::remove_reference<R>::type
-	> struct iterator;
-
-    template<
-    	typename I, typename R, typename V,
-        bool is_rw = boost::is_reference_wrapper<V>::value
-    >
-    struct iterator_traits{
-		
-        typedef R reference;
-        typedef V value_type;
-    
-    	typedef unwrap_aux::iterator<I, R, V> derived_;
-        typedef boost::iterator_adaptor<
-        	derived_		// Derived
-        	,I              // Base
-        	,value_type     // Value
-        	,use_default    // CategoryOrTraversal
-        	,reference		// Reference
-        	,use_default    // Difference
-    	> adaptor_;
-    
-    };
-
-	template<typename I, typename R, typename W>
-    struct iterator_traits<I, R, W, true> : unwrap_aux::iterator_traits<
-    	I,
-		typename boost::add_reference<
-        	typename boost::unwrap_reference<W>::type
-        >::type,
-        //W,
-		typename boost::decay<typename boost::unwrap_reference<W>::type>::type,
-        false
-    >
-    {
-    	typedef typename boost::unwrap_reference<W>::type inner_value_type;
-        // Case inner_value_type == T[] calls for decay<>
-    
-    };
-
-    template<typename I, typename R, typename V>
-    struct iterator : unwrap_aux::iterator_traits<I, R, V>::adaptor_
-    {
- 		typedef typename unwrap_aux::iterator_traits<I, R, V>::adaptor_ super_t;
- 
-        iterator(){}
-        iterator(I base) : super_t(base)
-        {
-            typedef typename boost::iterator_reference<I>::type ref_;
-            typedef typename 
-            	boost::is_convertible<ref_, R>::type is_convertible_;
-            BOOST_MPL_ASSERT(( is_convertible_ ));
-        }
-    };
-              
-    template<typename It>
-    struct is_unwrapped_iterator : boost::mpl::false_{};
-    
-	template<typename I, typename R, typename V>
-    struct is_unwrapped_iterator< unwrap_aux::iterator<I, R, V> >
-        : boost::mpl::true_{};
-
-}// unwrap_aux
-namespace result_of{
-
-    template<typename I>
-    struct unwrap_iterator
-    {
-        typedef  unwrap_aux::iterator<I> type;
-    };
-
-}// result_of
-
-    template<typename I>
-    typename result_of::unwrap_iterator<I>::type
-    unwrap_iterator(const I& base)
-    {
-        typedef typename result_of::unwrap_iterator<I>::type result_;
-        return result_( base );
-    }
-
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
-
+// TODO remove file
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -1,86 +1 @@
-//////////////////////////////////////////////////////////////////////////////
-//  Boost.Assign v2                                                         //
-//                                                                          //
-//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
-//  Copyright (C) 2010 Erwann Rogard                                        //
-//  Use, modification and distribution are subject to the                   //
-//  Boost Software License, Version 1.0. (See accompanying file             //
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
-//////////////////////////////////////////////////////////////////////////////
-#ifndef BOOST_ASSIGN_V2_REF_WRAPPER_UNWRAP_RANGE_ER_2010_HPP
-#define BOOST_ASSIGN_V2_REF_WRAPPER_UNWRAP_RANGE_ER_2010_HPP
-#include <boost/range/begin.hpp>
-#include <boost/range/end.hpp>
-#include <boost/range/iterator.hpp>
-#include <boost/range/iterator_range.hpp>
-#include <boost/assign/v2/ref/detail/unwrap/iterator.hpp>
-
-namespace boost{
-namespace assign{ 
-namespace v2{
-namespace ref{
-namespace unwrap_aux{
-
-	template<typename R>
-    struct is_unwrapped_range : unwrap_aux::is_unwrapped_iterator<
-        typename boost::range_iterator<R>::type
-    >{};
-
-    template<typename R, bool = unwrap_aux::is_unwrapped_range<R>::value>
-    struct caller
-    {
-        typedef typename boost::range_iterator<R>::type base_it_;
-        typedef typename result_of::unwrap_iterator<base_it_>::type it_;
-        typedef boost::iterator_range<it_> type;
-
-        static type call( R& r)
-        {
-            return type(
-                ref::unwrap_iterator( boost::begin( r ) ),
-                ref::unwrap_iterator( boost::end( r ) )
-            );
-        }
-    };
-
-    // No need to unwrap twice
-    template<typename R>
-    struct caller<R, true>
-    {
-        typedef R type; // don't change this to R&
-        static type call( R& r){ return r; }
-    };
-
-}// unwrap_aux
-
-	template<typename R>
-    struct is_unwrapped_range : unwrap_aux::is_unwrapped_range<R>{};
-
-namespace result_of{
-
-	template<typename R>
-    struct unwrap_range : unwrap_aux::caller<R>{};
-
-}// result_of
-
-    template<typename R>
-    typename result_of::unwrap_range<R>::type 
-    unwrap_range( R& r)
-    {    
-        typedef result_of::unwrap_range<R> result_;
-        return result_::call( r );
-    }
-
-    template<typename R>
-    typename result_of::unwrap_range<R const>::type 
-    unwrap_range( R const& r)
-    {    
-        typedef result_of::unwrap_range<R const> result_;
-        return result_::call( r );
-    }
-
-}// ref
-}// v2
-}// assign
-}// boost
-
-#endif
+// TODO remove file
Modified: sandbox/statistics/support/boost/assign/v2/ref/fusion/container.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/fusion/container.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/container.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -136,7 +136,7 @@
         >::type
         static_lookup(boost::mpl::int_<I> same_index)const
         {
-        	return this->head.unwrap(); 
+        	return this->head.get(); 
         }
 
         template<int I>
Modified: sandbox/statistics/support/boost/assign/v2/ref/fusion/head_holder.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/fusion/head_holder.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/head_holder.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -36,7 +36,7 @@
         
             T& back()const
         {
-        	return this->head.unwrap();
+        	return this->head.get();
         }
         
     };
Modified: sandbox/statistics/support/boost/assign/v2/ref/fusion/link_holder.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/fusion/link_holder.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/link_holder.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -39,7 +39,7 @@
         typedef typename wrapper_::unwrap_type link_type;
         link_type link()const
         {
-            return this->value.unwrap();
+            return this->value.get();
         }
 
         protected:
Modified: sandbox/statistics/support/boost/assign/v2/ref/wrapper.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/wrapper.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -12,5 +12,6 @@
 
 #include <boost/assign/v2/ref/wrapper/copy.hpp>
 #include <boost/assign/v2/ref/wrapper/cpp0x.hpp>
+#include <boost/assign/v2/ref/wrapper/get.hpp>
 
 #endif
Modified: sandbox/statistics/support/boost/assign/v2/ref/wrapper/copy.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/wrapper/copy.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper/copy.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -19,65 +19,66 @@
 #include <boost/assign/v2/ref/wrapper/crtp.hpp>
 
 namespace boost{
-namespace assign{ 
+namespace assign{
 namespace v2{
 namespace ref{
 namespace assign_tag{ struct copy{}; }
 namespace assign_copy{ typedef assign_tag::copy assign_tag_; }
 
     template< class T >
-    struct wrapper<ref::assign_tag::copy, T> 
-    : 
+    struct wrapper<ref::assign_tag::copy, T>
+    :
             public ref::wrapper_crtp< wrapper<ref::assign_tag::copy, T>, T>
     {
-        typedef T type; 
-        BOOST_STATIC_CONSTANT( 
-            bool, 
-            is_const = boost::is_const<T>::value 
-        ); 
-        
-        wrapper(){} 
-        
-        explicit wrapper( T& r ) : ref_(&r) 
-        { } 
-
-        void rebind(T& r ) 
-    	{ 
-            this->ref_ = &r; 
-    	} 
-        
+        typedef T type;
+        BOOST_STATIC_CONSTANT(
+            bool,
+            is_const = boost::is_const<T>::value
+        );
+
+        wrapper(){}
+
+        explicit wrapper( T& r ) : ref_(&r)
+        { }
+
+        void rebind(T& r )
+    	{
+            this->ref_ = &r;
+    	}
+
+        // TODO a) crtp b) reference() or get()
         typedef T& unwrap_type;
-        T& unwrap() const 
-        { 
-            return *this->ref_; 
-        } 
+        T& get() const
+        {
+            return *this->ref_;
+        }
 
-        T* get_pointer() const { return this->ref_; } 
+        T* get_pointer() const { return this->ref_; }
 
-        using wrapper_crtp<wrapper,T>::operator=; 
+        using wrapper_crtp<wrapper,T>::operator=;
 
         void assign(typename boost::call_traits<T>::param_type r )
         {
-            this->unwrap() = r;
+            this->get() = r;
         }
 
         protected:
-		friend class wrapper_crtp<wrapper, T>; 
+		friend class wrapper_crtp<wrapper, T>;
 
-        T* ref_; 
+        T* ref_;
 
         typedef ref::assign_tag::copy assign_tag;
 
         void swap( wrapper& r )
         {
-            std::swap( this->unwrap(), r.unwrap() );
+            std::swap( this->get(), r.get() );
         }
 
     };
-    
+
     template<typename T>
     struct copy_wrapper{ typedef ref::wrapper<assign_tag::copy,T> type; };
-        
+
 }// ref
 }// v2
 }// assign
Modified: sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -65,32 +65,32 @@
 
         operator T&() const
         {
-            return this->derived().unwrap();
+            return this->derived().get();
         }
 
         bool operator==( const wrapper_crtp& r )const
         {
-            return this->derived().unwrap() == r.derived().unwrap();
+            return this->derived().get() == r.derived().get();
         }
 
         bool operator<( const wrapper_crtp& r )const
         {
-            return this->derived().unwrap() < r.derived().unwrap();
+            return this->derived().get() < r.derived().get();
         }
 
         bool operator==( typename boost::call_traits<T>::param_type r )const
         {
-            return this->derived().unwrap() == r;
+            return this->derived().get() == r;
         }
 
         bool operator<( typename boost::call_traits<T>::param_type r )const
         {
-            return this->derived().unwrap() < r;
+            return this->derived().get() < r;
         }
 
         bool operator>( typename boost::call_traits<T>::param_type r )const
         {
-            return this->derived().unwrap() > r;
+            return this->derived().get() > r;
         }
         
             template<class CharT, class Traits>
@@ -98,7 +98,7 @@
             operator<<(std::basic_ostream<CharT,Traits>& os,
                        const wrapper_crtp& w)
             {
-        	return (os << w.derived().unwrap() );
+        	return (os << w.derived().get() );
             }
 
     };
Modified: sandbox/statistics/support/boost/assign/v2/utility/chain/adaptor.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/utility/chain/adaptor.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/utility/chain/adaptor.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -21,7 +21,7 @@
 
     // Tag1 controls conversion. Seet traits/type/meta_convert.hpp
 
-    template<typename U,typename Tag1 = use_default,typename Tag2 = void_>
+    template<typename U, typename Tag1 = use_default, typename Tag2 = void_>
     struct adaptor1
     {
         adaptor1( U& r ) : value( r ){}
Modified: sandbox/statistics/support/boost/assign/v2/utility/chain/checking/twin_values.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/utility/chain/checking/twin_values.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/utility/chain/checking/twin_values.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -16,7 +16,7 @@
 #include <boost/mpl/assert.hpp>
 #include <boost/range/algorithm/copy.hpp>
 #include <boost/assign/v2/detail/checking/range.hpp>
-#include <boost/assign/v2/ref/detail/unwrap/range.hpp>
+#include <boost/assign/v2/ref/wrapper/get.hpp>
 #include <boost/assign/v2/ref/wrapper/copy.hpp>
 #include <boost/assign/v2/utility/chain/use_lvalue.hpp>
 #include <boost/assign/v2/utility/chain/pipe.hpp>
@@ -49,36 +49,31 @@
 void verify_mpl()
 {
         namespace as2 = assign::v2;
+    // Value container
     typedef std::vector<T> vec_t_;
     typedef typename add_const_if<qual_v1, vec_t_ >::type vec1_; 
     typedef typename as2::ref::copy_wrapper<
             typename add_const_if<qual_e2, T>::type
     >::type w_; 
+	typedef vec1_											r1_; // alias
+
+    // Ref-wrappers
     typedef std::vector<w_> vec_w_;
     typedef typename add_const_if<qual_v2, vec_w_ >::type vec2_; 
-
-    typedef typename ref::result_of::unwrap_range<vec1_>::type r1_; 
-    typedef typename ref::result_of::unwrap_range<vec2_>::type r2_; 
+	// Transformation through range_get (necessary)
+    typedef typename ref::result_of::range_get<vec2_>::type r2_; 
 
     {  
         typedef r1_       cr1_;
         typedef r2_       cr2_;
         verify_use_lvalue<cr1_, cr2_, the_value>();
+        verify_use_lvalue<cr2_, cr1_, the_value>();
     } 
     {  
         typedef r1_       cr1_;
         typedef r2_ const cr2_;
         verify_use_lvalue<cr1_, cr2_, the_value>();
-    } 
-    {  
-        typedef r1_       cr1_;
-        typedef r2_ const cr2_;
-        verify_use_lvalue<cr1_, cr2_, the_value>();
-    } 
-    {  
-        typedef r1_ const cr1_;
-        typedef r2_ const cr2_;
-        verify_use_lvalue<cr1_, cr2_, the_value>();
+        verify_use_lvalue<cr2_, cr1_, the_value>();
     } 
 }
 
@@ -88,28 +83,25 @@
             // mpl checks
         {
                 typedef std::vector<T> vec_;
-        	typedef v2::result_of::chain<vec_,vec_> caller1_;
+        	typedef v2::result_of::chain<vec_, vec_> caller1_;
                 typedef typename caller1_::type range1_;
                 typedef typename boost::range_reference<range1_>::type ref1_;
-        	typedef boost::is_same<ref1_, T&> is_same1_;
-            BOOST_MPL_ASSERT((is_same1_));
-        	typedef v2::result_of::chain<range1_ const,vec_> caller2_;
+            BOOST_MPL_ASSERT(( boost::is_same<ref1_, T&> ));
+        	typedef v2::result_of::chain<range1_ const, vec_> caller2_;
                 typedef typename caller2_::type range2_;
                 typedef typename boost::range_reference<range2_>::type ref2_;
-        	typedef boost::is_same<ref2_, T&> is_same2_;
-        	BOOST_MPL_ASSERT((is_same2_));
+        	BOOST_MPL_ASSERT(( boost::is_same<ref2_, T&> ));
             }
 
 //      verify_mpl<T, qual_v1, qual_e2 , qual_v2 , the_value>()
                 verify_mpl<T, false  , false   , false   , true     >();
-		//verify_mpl<T, false  , false   , true    , true     >();
-		//verify_mpl<T, false  , true    , false   , false    >();
-		//verify_mpl<T, false  , true    , true    , false    >();
-		//verify_mpl<T, true   , false   , false   , false    >();
-		//verify_mpl<T, true   , false   , true    , false    >();
-		//verify_mpl<T, true   , true    , false   , false    >();
-		//verify_mpl<T, true   , true    , true    , false    >();
-/*
+		verify_mpl<T, false  , false   , true    , true     >();
+		verify_mpl<T, false  , true    , false   , false    >();
+		verify_mpl<T, false  , true    , true    , false    >();
+		verify_mpl<T, true   , false   , false   , false    >();
+		verify_mpl<T, true   , false   , true    , false    >();
+		verify_mpl<T, true   , true    , false   , false    >();
+		verify_mpl<T, true   , true    , true    , false    >();
 
         // runtime checks
             {
@@ -117,24 +109,29 @@
             vt_ vt1( 2 ), vt2( 3 ), vt3( 3 );
             vt_ vt;
                     {
+            	// Value containers
                 namespace ns = v2::checking::constants;
-                vt.push_back( ns::a );
-                vt.push_back( ns::b );
-                vt.push_back( ns::c );
-                vt.push_back( ns::d );
-                vt.push_back( ns::e );
-                vt.push_back( ns::f );
-                vt.push_back( ns::g );
-                vt.push_back( ns::h );
+                vt.push_back( ns::a );	// 1
+                vt.push_back( ns::b );	// 2
+
+                vt.push_back( ns::c );  // 1
+                vt.push_back( ns::d );  // 2
+                vt.push_back( ns::e );	// 3
+
+                vt.push_back( ns::f );  // 1
+                vt.push_back( ns::g );  // 2
+                vt.push_back( ns::h );	// 3
                 {
-                    using namespace adaptor;
+
+                	BOOST_ASSIGN_V2_CHECK( // pre-condition
+                		vt1.size() + vt2.size() + vt3.size() == vt.size()
+                	);
                     boost::copy(
                         vt,
-                        boost::begin( vt1 | _chain( vt2 ) | _chain( vt3 ))
+                        boost::begin( vt1 | _chain( vt2 ) | _chain( vt3 ) )
                     );
                 }
                 {
-                	using namespace adaptor;
                         typedef v2::container_tag::range tag_;
                     v2::checking::do_check(
                             tag_(),
@@ -143,32 +140,40 @@
                 }
             }
             {
-	            T a1 = -1, b1 = -1, c1 = -1, d1 = -1, 
-                  e1 = -1, f1 = -1, g1 = -1, h1 = -1;
+            	// Mix and Value and Ref-wrapper containers
 
                 typedef typename ref::copy_wrapper<T>::type w_;
                     typedef boost::is_reference_wrapper<w_> is_;
 
-                boost::array<int, 3> vw2;
-                std::vector<int> vw1( 2 );
-                std::vector<int> vw3( 3 );
-				using namespace adaptor;
+				// rese to default values
+				vt1.resize( vt1.size() );
+				vt3.resize( vt3.size() );
+
+                T x = -1, y = -1, z = -1;
+                boost::array<w_, 3> vw2;
+                // Wrappers must bind first!
+                vw2[0].rebind( x ); 
+                vw2[1].rebind( y ); 
+                vw2[2].rebind( z ); 
                 boost::copy(
                         vt,
-                    boost::begin( vw1 | _chain( vw2 ) | _chain( vw3 ) )
+                    boost::begin( 
+                    	vt1 | _chain( 
+                            vw2 | ref::_get  // necessary
+                        ) | _chain( vt3 ) )
                 );
                 {
-                	typedef v2::container_tag::range tag_;
-                    v2::checking::do_check(
-                    	tag_(),
-                        vw1 | _chain( vw2 ) | _chain( vw3 )
+                    namespace ns = v2::checking::constants;
+                    ns::do_check(
+                    	vt1[0], vt1[1],
+                        x, y, z,
+                        vt3[0], vt3[1], vt3[2]	
                     );
                 }
                 // suppresses warning unused
-                if(a1 && b1 && c1 && d1 && e1 && f1 && g1 && h1){} 
+                if(x && y && z){} 
                         }
         }// runtime checks
-*/
     }// do_check
 
 }// twin_values
Modified: sandbox/statistics/support/boost/assign/v2/utility/chain/use_lvalue.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/utility/chain/use_lvalue.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/utility/chain/use_lvalue.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -26,37 +26,23 @@
 namespace v2{
 namespace chain_aux{
 
-    template<typename U1,typename U2,typename Tag = use_default> 
-    struct use_lvalue
-    {
-    	
-        typedef typename boost::range_reference<U1>::type r1_;
-        typedef typename boost::range_reference<U2>::type r2_;
-        typedef boost::mpl::and_<
-            boost::is_reference<r1_>,
-            boost::is_reference<r2_>
-        > are_refs_;
-        
-        typedef boost::is_same<r1_,r2_> are_same_;
-        
-        typedef boost::mpl::and_<
-             are_refs_,
-             are_same_
-        > are_same_refs_;
-        
-        typedef boost::is_const<
-            typename boost::remove_reference<r1_>::type
-        > is_const_;
-        
-        typedef typename boost::mpl::eval_if<
-            is_const_,
-            boost::mpl::identity<boost::mpl::false_>,
-            are_same_refs_
-        >::type type;
-        
-        BOOST_STATIC_CONSTANT(bool, value = type::value);
-    };
+	template<typename U1, typename U2, 
+    	bool is_r = boost::is_reference<U1>::value,
+        bool is_c = boost::is_const<
+        	typename boost::remove_reference<U1>::type
+        >::value
+    >
+    struct use_lvalue_impl : boost::mpl::false_{};
+    
+	template<typename U>
+    struct use_lvalue_impl<U, U, true, false> : boost::mpl::true_{};
 
+    template<typename R1, typename R2, typename Tag = use_default> 
+    struct use_lvalue : use_lvalue_impl<
+    	typename boost::range_reference<R1>::type,
+    	typename boost::range_reference<R2>::type
+    >{};
+   
 }// chain_aux
 }// v2
 }// assign
Modified: sandbox/statistics/support/boost/assign/v2/utility/convert/converter.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/utility/convert/converter.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/utility/convert/converter.hpp	2011-01-13 00:37:46 EST (Thu, 13 Jan 2011)
@@ -42,7 +42,7 @@
         T type()const
         {
                 typedef typename convert_aux::deduce_tag<T, U>::type tag_;
-            return convert<T>( this->w.unwrap(), tag_() );
+            return convert<T>( this->w.get(), tag_() );
         }
 
                 private: