$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r70101 - in sandbox/assign_v2/boost/assign/v2/detail/traits: . ptr_container value_container
From: erwann.rogard_at_[hidden]
Date: 2011-03-17 21:56:08
Author: e_r
Date: 2011-03-17 21:56:05 EDT (Thu, 17 Mar 2011)
New Revision: 70101
URL: http://svn.boost.org/trac/boost/changeset/70101
Log:
upd assign_v2
Added:
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container.hpp   (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/fwd.hpp   (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/meta.hpp   (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp   (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container.hpp   (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/category.hpp   (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/fwd.hpp   (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_push.hpp   (contents, props changed)
   sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_value_type.hpp   (contents, props changed)
Added: sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container.hpp	2011-03-17 21:56:05 EDT (Thu, 17 Mar 2011)
@@ -0,0 +1,15 @@
+//////////////////////////////////////////////////////////////////////////////
+//  Boost.Assign v2                                                         //
+//                                                                          //
+//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
+//  Copyright (C) 2010 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TRAITS_PTR_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_PTR_CONTAINER_ER_2010_HPP
+#include <boost/assign/v2/detail/traits/ptr_container/meta.hpp>
+#include <boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp>
+
+#endif // BOOST_ASSIGN_V2_TRAITS_PTR_CONTAINER_ER_2010_HPP
Added: sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/fwd.hpp	2011-03-17 21:56:05 EDT (Thu, 17 Mar 2011)
@@ -0,0 +1,100 @@
+//////////////////////////////////////////////////////////////////////////////
+//  Boost.Assign v2                                                         //
+//                                                                          //
+//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
+//  Copyright (C) 2010 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_FWD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_FWD_ER_2010_HPP
+#include <cstddef>
+
+
+namespace boost{
+
+    template
+    <
+        class T,
+        std::size_t N, 
+        class CloneAllocator
+    >
+    class ptr_array;
+
+    template
+    <
+        class T,
+        class CloneAllocator,
+        class Allocator
+    >
+    class ptr_circular_buffer;
+
+    template
+    <
+        class T,
+        class CloneAllocator,
+        class Allocator
+    >
+    class ptr_deque;
+
+    template
+    <
+        class T,
+        class CloneAllocator,
+        class Allocator
+    >
+    class ptr_list;
+
+    template
+    <
+        class Key,
+        class T,
+        class Compare,
+        class CloneAllocator,
+        class Allocator
+    >
+    class ptr_map;
+
+    template
+    <
+        class Key,
+        class Compare,
+        class CloneAllocator,
+        class Allocator
+    >
+    class ptr_set;
+
+    template
+    <
+        class Key,
+        class T,
+        class Hash,
+        class Pred,
+        class CloneAllocator,
+        class Allocator
+    >
+    class ptr_unordered_map;
+
+    template
+    <
+        class Key,
+        class Hash,
+        class Pred,
+        class CloneAllocator,
+        class Allocator
+    >
+    class ptr_unordered_set;
+
+
+    template
+    <
+        class T,
+        class CloneAllocator,
+        class Allocator
+    >
+    class ptr_vector;
+
+}// boost
+
+#endif // BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_FWD_ER_2010_HPP
Added: sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/meta.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/meta.hpp	2011-03-17 21:56:05 EDT (Thu, 17 Mar 2011)
@@ -0,0 +1,43 @@
+//////////////////////////////////////////////////////////////////////////////
+//  Boost.Assign v2                                                         //
+//                                                                          //
+//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
+//  Copyright (C) 2010 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_META_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_META_ER_2010_HPP
+#include <boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ptr_container_aux{
+
+
+	template<typename PtrC>
+    struct is_ptr_container : ::boost::mpl::not_<
+    	boost::is_same<
+    		PtrC, typename to_value_container<PtrC>::type
+        >
+    >{};
+
+	template<template<typename > class F>
+	struct through_value_container
+	{
+		template<typename PtrC /*or C*/>
+    	struct apply : F<
+    		typename to_value_container<PtrC>::type
+    	>{};
+	};
+
+}// ptr_container_aux
+}// v2
+}// assign
+}// boost
+
+#endif //  BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_META_ER_2010_HPP
\ No newline at end of file
Added: sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/ptr_container/to_value_container.hpp	2011-03-17 21:56:05 EDT (Thu, 17 Mar 2011)
@@ -0,0 +1,215 @@
+//////////////////////////////////////////////////////////////////////////////
+//  Boost.Assign v2                                                         //
+//                                                                          //
+//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
+//  Copyright (C) 2010 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_TRAITS_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_TRAITS_PTR_CONTAINER_TRAITS_ER_2010_HPP
+#include <cstddef>
+#include <memory> // std::allocator
+#include <boost/assign/v2/detail/traits/value_container/fwd.hpp>
+#include <boost/assign/v2/detail/traits/ptr_container/fwd.hpp>
+#include <boost/mpl/size_t.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ptr_container_aux{
+
+    template<typename A, typename T> struct to_value_allocator_helper{};
+
+    template<typename T>
+    struct to_value_allocator_helper<std::allocator<void*>, T>
+    {
+        typedef std::allocator<T> type;
+    };
+
+	template<typename PtrC>
+    struct to_value_value : boost::remove_reference<
+    	typename PtrC::reference
+    >{};
+
+	template<typename PtrC>
+    struct to_value_allocator : to_value_allocator_helper<
+    	typename PtrC::allocator_type,
+        typename to_value_value<PtrC>::type
+    >
+    {};
+
+	template<typename PtrC> struct helper_size{};
+
+    template<typename T, std::size_t N, typename C>
+    struct helper_size< boost::ptr_array<T, N, C> >
+        : ::boost::mpl::size_t<
+            N
+        >{};
+
+	template<typename PtrC>
+    struct to_value_array
+    {
+		typedef boost::array<
+        	typename to_value_value<PtrC>::type,
+        	helper_size<PtrC>::value
+        > type;
+    };
+
+    template<typename PtrC, template<typename, typename> class C>
+    struct to_value_sequence {
+
+        typedef C<
+            typename to_value_value<PtrC>::type,
+            typename to_value_allocator<PtrC>::type
+        > type;
+
+    };
+
+    template<typename PtrC, template<typename, typename, typename, typename> class C>
+    struct to_value_map{
+
+        typedef C<
+            typename PtrC::key_type,
+            typename to_value_value<PtrC>::type,
+            typename PtrC::key_compare,
+            typename to_value_allocator<PtrC>::type
+        > type;
+
+    };
+
+    template<typename PtrC, template<typename, typename, typename> class C>
+    struct to_value_set{
+
+        typedef C<
+            typename PtrC::key_type,
+            typename PtrC::key_compare,
+            typename to_value_allocator<PtrC>::type
+        > type;
+
+    };
+
+    template<typename PtrC,
+        template<typename, typename, typename, typename, typename> class C>
+    class to_value_unordered_map{
+
+        typedef C<
+            typename PtrC::key_type,
+            typename to_value_value<PtrC>::type,
+            typename PtrC::hasher,
+            typename PtrC::key_equal,
+            typename to_value_allocator<PtrC>::type
+        > container_type;
+
+    };
+
+    template<typename PtrC,
+        template<typename, typename, typename, typename> class C>
+    class unordered_set_like{
+
+        typedef C<
+            typename PtrC::key_type,
+            typename PtrC::hasher,
+            typename PtrC::key_equal,
+            typename to_value_allocator<PtrC>::type
+        > container_type;
+
+    };
+
+	// TO_VALUE_CONTAINER
+
+	template<typename PtrC>
+	struct to_value_container
+    {
+    	typedef PtrC type;
+    };
+
+    // Array
+    template<
+        typename T,
+        std::size_t N,
+        typename A
+    >
+    struct to_value_container<
+        boost::ptr_array<T, N, A>
+    > : to_value_array<
+        boost::ptr_array<T, N, A>
+    >{};
+
+    // Sequence
+
+    template<
+        typename T,
+        typename C,
+        typename A
+    >
+    struct to_value_container<
+        boost::ptr_deque<T, C, A>
+    > : to_value_sequence<
+        boost::ptr_deque<T, C, A>,
+        std::deque
+    >{};
+
+    template<
+        typename T,
+        typename C,
+        typename A
+    >
+    struct to_value_container<
+        boost::ptr_list<T, C, A>
+    > : to_value_sequence<
+        boost::ptr_list<T, C, A>,
+        std::list
+    >{};
+
+    template<
+        typename T,
+        typename C,
+        typename A
+    >
+    struct to_value_container<
+        boost::ptr_vector<T, C, A>
+    > : to_value_sequence<
+        boost::ptr_vector<T, C, A>,
+        std::vector
+    >{};
+
+    template
+    <
+        class Key,
+        class T,
+        class Compare,
+        class CloneAllocator,
+        class Allocator
+    >
+    struct to_value_container<
+        boost::ptr_map<Key, T, Compare, CloneAllocator, Allocator>
+    > : to_value_map<
+        boost::ptr_map<Key, T, Compare, CloneAllocator, Allocator>,
+        std::map
+    >{};
+
+    template
+    <
+        class Key,
+        class Compare,
+        class CloneAllocator,
+        class Allocator
+    >
+    struct to_value_container<
+        boost::ptr_set<Key, Compare, CloneAllocator, Allocator>
+    > : to_value_set<
+        boost::ptr_set<Key, Compare, CloneAllocator, Allocator>,
+        std::set
+    >{};
+
+	// TODO unordered
+
+}// ptr_container_aux
+}// v2
+}// assign
+}// boost
+
+#endif // BOOST_ASSIGN_V2_DETAIL_TRAITS_CONTAINER_FWD_PTR_ER_2010_HPP
Added: sandbox/assign_v2/boost/assign/v2/detail/traits/value_container.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/value_container.hpp	2011-03-17 21:56:05 EDT (Thu, 17 Mar 2011)
@@ -0,0 +1,16 @@
+//////////////////////////////////////////////////////////////////////////////
+//  Boost.Assign v2                                                         //
+//                                                                          //
+//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
+//  Copyright (C) 2010 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_ER_2010_HPP
+#include <boost/assign/v2/detail/traits/value_container/category.hpp>
+#include <boost/assign/v2/detail/traits/value_container/has_push.hpp>
+#include <boost/assign/v2/detail/traits/value_container/has_value_type.hpp>
+
+#endif // BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_ER_2010_HPP
Added: sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/category.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/category.hpp	2011-03-17 21:56:05 EDT (Thu, 17 Mar 2011)
@@ -0,0 +1,55 @@
+//////////////////////////////////////////////////////////////////////////////
+//  Boost.Assign v2                                                         //
+//                                                                          //
+//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
+//  Copyright (C) 2010 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_CATEGORY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_CATEGORY_ER_2010_HPP
+#include <boost/mpl/bool.hpp>
+#include <boost/assign/v2/detail/traits/value_container/fwd.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace value_container_aux{
+
+	// FIFO
+    template<typename C> struct is_fifo : ::boost::mpl::false_{};
+
+    template<typename T, typename A>
+    struct is_fifo< std::queue<T, A> > : ::boost::mpl::true_{};
+
+	// LIFO
+    template<typename V>
+    struct is_lifo : ::boost::mpl::false_{};
+
+    template<typename T, typename A>
+    struct is_lifo< std::stack<T,A> > : ::boost::mpl::true_{};
+
+	// IS_SORTED
+    template<typename V>
+    struct is_sorted : ::boost::mpl::false_{};
+
+    template<typename T, typename C, typename A>
+    struct is_sorted< std::set<T, C, A> > : ::boost::mpl::true_{};
+
+    template<typename K, typename T, typename C, typename A>
+    struct is_sorted< std::map<K, T, C, A> > : ::boost::mpl::true_{};
+    
+    // IS_ARRAY
+    template<typename C> struct is_array : ::boost::mpl::false_{};
+    template<typename T, std::size_t sz> struct is_array<
+        boost::array<T, sz>
+    > : ::boost::mpl::true_{};
+
+
+}// value_container_aux
+}// v2
+}// assign
+}// boost
+
+#endif // BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_CATEGORY_ER_2010_HPP
Added: sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/fwd.hpp	2011-03-17 21:56:05 EDT (Thu, 17 Mar 2011)
@@ -0,0 +1,48 @@
+//////////////////////////////////////////////////////////////////////////////
+//  Boost.Assign v2                                                         //
+//                                                                          //
+//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
+//  Copyright (C) 2010 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_DETAIL_TRAITS_VALUE_CONTAINER_FWD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_TRAITS_VALUE_CONTAINER_FWD_ER_2010_HPP
+#include <cstddef>
+
+namespace std{
+
+    // www.sgi.com/tech/stl/Deque.html
+    template<typename T, typename A> class deque;
+
+    // http://www.sgi.com/tech/stl/List.html
+    template<typename T, typename A> class list;
+
+    // http://www.sgi.com/tech/stl/Map.html
+    template<typename K, typename T, typename C, typename A> class map;
+
+    // http://www.sgi.com/tech/stl/queue.html
+    template<typename T, typename S> class queue;
+
+    // http://www.sgi.com/tech/stl/set.html
+    template<typename T, typename C, typename A> class set;
+
+    // http://www.sgi.com/tech/stl/stack.html
+    template<typename T, typename S> class stack;
+
+    // http://www.sgi.com/tech/stl/Vector.html
+    template<typename T, typename A> class vector;
+
+}// std
+namespace boost{
+
+    // http://www.boost.org/doc/libs/release/doc/html/array.html
+    template<typename T, std::size_t size> class array;
+
+    // http://www.boost.org/doc/libs/release/libs/circular_buffer/index.html
+    template<typename T, typename Alloc> class circular_buffer;
+
+}// boost
+
+#endif // BOOST_ASSIGN_V2_DETAIL_TRAITS_VALUE_CONTAINER_FWD_ER_2010_HPP
Added: sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_push.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_push.hpp	2011-03-17 21:56:05 EDT (Thu, 17 Mar 2011)
@@ -0,0 +1,54 @@
+//////////////////////////////////////////////////////////////////////////////
+//  Boost.Assign v2                                                         //
+//                                                                          //
+//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
+//  Copyright (C) 2010 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_PUSH_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_PUSH_ER_2010_HPP
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace value_container_aux{
+
+    template<typename C, typename T = typename C::value_type>
+    struct has_push{
+
+        typedef typename boost::type_traits::yes_type yes_;
+        typedef typename boost::type_traits::no_type no_;
+
+        template<typename U,void (U::*fp)(T const&)>
+        struct helper{
+            // See http://listarchives.boost.org/Archives/boost/2002/03/27233.php
+        };
+
+        template<typename U>
+        static yes_ test(U*, helper<U, &U::push>* p = 0);
+        static no_ test(...);
+
+        BOOST_STATIC_CONSTANT(
+            bool,
+            value = sizeof( test((C*)0) ) == sizeof( yes_ )
+        );
+
+        typedef ::boost::mpl::bool_<value> type;
+
+    };
+
+    template<typename C>
+    struct has_push_deduced_value : has_push<C>{};
+
+}// value_container_aux
+}// v2
+}// assign
+}// boost
+
+#endif // BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_PUSH_ER_2010_HPP
Added: sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_value_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/assign_v2/boost/assign/v2/detail/traits/value_container/has_value_type.hpp	2011-03-17 21:56:05 EDT (Thu, 17 Mar 2011)
@@ -0,0 +1,45 @@
+//////////////////////////////////////////////////////////////////////////////
+//  Boost.Assign v2                                                         //
+//                                                                          //
+//  Copyright (C) 2003-2004 Thorsten Ottosen                                //
+//  Copyright (C) 2010 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_VALUE_TYPE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_VALUE_TYPE_ER_2010_HPP
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace value_container_aux{
+
+    template<typename T>
+    struct has_value_type{
+
+        typedef typename boost::type_traits::yes_type yes_;
+        typedef typename boost::type_traits::no_type no_;
+
+
+        template<typename U>
+        static yes_ test(U*, typename U::value_type* p = 0);
+        static no_ test(...);
+
+        BOOST_STATIC_CONSTANT(
+            bool,
+            value = sizeof( test((T*)0) ) == sizeof( yes_ )
+        );
+        typedef ::boost::mpl::bool_<value> type;
+    };
+
+
+}// value_container_aux
+}// v2
+}// assign
+}// boost
+
+#endif // BOOST_ASSIGN_V2_TRAITS_VALUE_CONTAINER_HAS_VALUE_TYPE_ER_2010_HPP