Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r67946 - in sandbox/statistics/support/boost/assign/v2/detail: . traits traits/container traits/type
From: erwann.rogard_at_[hidden]
Date: 2011-01-10 23:35:15


Author: e_r
Date: 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
New Revision: 67946
URL: http://svn.boost.org/trac/boost/changeset/67946

Log:
upd boost/assign/v2
Added:
   sandbox/statistics/support/boost/assign/v2/detail/traits/
   sandbox/statistics/support/boost/assign/v2/detail/traits.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/
   sandbox/statistics/support/boost/assign/v2/detail/traits/container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/forward_to_value.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/has_push.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/has_static_size.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_array.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_associative.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_fifo.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_lifo.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_map.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_ptr_container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_range.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_set.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_sorted.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_static_array.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/ptr_to_value.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/ptr_to_value_container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/static_size.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/value.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/container/value_container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/switch.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/type/
   sandbox/statistics/support/boost/assign/v2/detail/traits/type.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/type/decay.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/type/has_value_type.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/type/is_stl_pair.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/type/meta_convert.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/type/or_const.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/type/same_remove_cv.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/traits/type/value.hpp (contents, props changed)

Added: sandbox/statistics/support/boost/assign/v2/detail/traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 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_DETAIL_TRAITS_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_TRAITS_ER_2010_HPP
+
+#include <boost/assign/v2/detail/traits/type.hpp>
+#include <boost/assign/v2/detail/traits/container.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,31 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_ER_2010_HPP
+
+#include <boost/assign/v2/detail/traits/container/has_push.hpp>
+#include <boost/assign/v2/detail/traits/container/has_static_size.hpp>
+#include <boost/assign/v2/detail/traits/container/forward_to_value.hpp>
+#include <boost/assign/v2/detail/traits/container/is_associative.hpp>
+#include <boost/assign/v2/detail/traits/container/is_fifo.hpp>
+#include <boost/assign/v2/detail/traits/container/is_lifo.hpp>
+#include <boost/assign/v2/detail/traits/container/is_map.hpp>
+#include <boost/assign/v2/detail/traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/traits/container/is_range.hpp>
+#include <boost/assign/v2/detail/traits/container/is_set.hpp>
+#include <boost/assign/v2/detail/traits/container/is_sorted.hpp>
+#include <boost/assign/v2/detail/traits/container/is_static_array.hpp> // TODO
+#include <boost/assign/v2/detail/traits/container/ptr_to_value.hpp>
+#include <boost/assign/v2/detail/traits/container/ptr_to_value_container.hpp>
+#include <boost/assign/v2/detail/traits/container/static_size.hpp>
+#include <boost/assign/v2/detail/traits/container/value.hpp>
+#include <boost/assign/v2/detail/traits/container/value_container.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/forward_to_value.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/forward_to_value.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,29 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_FWD_TO_VALUE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_FWD_TO_VALUE_ER_2010_HPP
+#include <boost/assign/v2/detail/traits/container/value_container.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_traits{
+
+ template<template<typename T> class F,typename V>
+ struct forward_to_value: F<
+ typename value_container<V>::type
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/has_push.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/has_push.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,57 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_HAS_PUSH_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_HAS_PUSH_ER_2010_HPP
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/config.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/assign/v2/detail/traits/container/value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_traits{
+
+ template<typename V,typename T
+ = typename container_traits::value<V>::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://lists.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((V*)0) ) == sizeof( yes_ )
+ );
+
+ typedef boost::mpl::bool_<value> type;
+
+ };
+
+ template<typename V>
+ struct has_push_deduced_value : v2::container_traits::has_push<V>{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif
+

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/has_static_size.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/has_static_size.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,47 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_HAS_STATIC_SIZE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_HAS_STATIC_SIZE_ER_2010_HPP
+#include <boost/assign/v2/detail/fwd/ptr_container.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_traits{
+
+ template<typename T>
+ struct has_static_size{
+ typedef typename T::size_type size_type;
+ typedef char yes;
+ typedef char (&no)[2];
+ typedef const size_type sig;
+
+ template<typename U,sig> struct sfinae { };
+ template<typename U> static yes test(sfinae<U, U::static_size>*);
+ template<typename U> static no test(...);
+
+ BOOST_STATIC_CONSTANT(
+ bool,
+ value = sizeof( test<T>(0) ) == sizeof( yes )
+ );
+
+ typedef boost::mpl::bool_<value> type;
+ };
+
+ template<typename T,std::size_t N,typename C>
+ struct has_static_size< boost::ptr_array<T, N, C> > : boost::mpl::true_{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_array.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_array.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,51 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_IS_ARRAY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_IS_ARRAY_ER_2010_HPP
+/*
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+//#include <boost/assign/v2/detail/traits/container/has_static_size.hpp>
+#include <boost/assign/v2/detail/traits/container/forward_to_value.hpp>
+
+namespace boost{
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+ template< class T, std::size_t sz >
+ class array;
+#endif
+
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct static_array{};
+}// container_tag
+namespace container_type_aux{
+
+ template<typename V> struct is_array : boost::mpl::false_{};
+ template<typename V> struct is_array<
+ boost::array<T, sz>
+ > : boost::mpl::true_{};
+
+}// containert_type_aux
+namespace container_traits{
+
+ template<typename V>
+ struct is_array : forward_to_value<
+ is_array_impl,
+ typename boost::remove_cv<V>::type
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+*/
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_associative.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_associative.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,35 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_IS_ASSOCIATIVE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_IS_ASSOCIATIVE_ER_2010_HPP
+#include <boost/mpl/or.hpp>
+#include <boost/assign/v2/detail/traits/container/is_map.hpp>
+#include <boost/assign/v2/detail/traits/container/is_set.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct associative{};
+}// container_tag
+namespace container_traits{
+
+ template<typename V>
+ struct is_associative : boost::mpl::or_<
+ container_traits::is_set<V>,
+ container_traits::is_map<V>
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_fifo.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_fifo.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,44 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_IS_FIFO_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_IS_FIFO_ER_2010_HPP
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/assign/v2/detail/fwd/container.hpp>
+#include <boost/assign/v2/detail/traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct fifo{};
+}// container_tag
+namespace container_traits{
+
+ template<typename V>
+ struct is_fifo_impl : boost::mpl::false_{};
+
+ template<typename T,typename A>
+ struct is_fifo_impl< std::queue<T,A> > : boost::mpl::true_{};
+
+ template<typename V>
+ struct is_fifo : forward_to_value<
+ is_fifo_impl,
+ typename boost::remove_cv<V>::type
+ >{};
+
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_lifo.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_lifo.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 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_TRAITS_CONTAINER_IS_LIFO_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_IS_LIFO_ER_2010_HPP
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/assign/v2/detail/fwd/container.hpp>
+#include <boost/assign/v2/detail/traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct lifo{};
+}// container_tag
+namespace container_traits{
+
+ template<typename V>
+ struct is_lifo_impl : boost::mpl::false_{};
+
+ template<typename T,typename A>
+ struct is_lifo_impl< std::stack<T,A> > : boost::mpl::true_{};
+
+ template<typename V>
+ struct is_lifo : forward_to_value<
+ is_lifo_impl,
+ typename boost::remove_cv<V>::type
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_map.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 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_CONTAINER_IS_MAP_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_IS_MAP_ER_2010_HPP
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/assign/v2/detail/fwd/container.hpp>
+#include <boost/assign/v2/detail/traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct map{};
+}// container_tag
+namespace container_traits{
+
+ template<typename V>
+ struct is_map_impl : boost::mpl::false_{};
+
+ template<typename K,typename D,typename C,typename A>
+ struct is_map_impl<
+ std::map<K,D,C,A>
+ > : boost::mpl::true_{};
+
+ template<typename V>
+ struct is_map : forward_to_value<
+ is_map_impl,
+ typename boost::remove_cv<V>::type
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_ptr_container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_ptr_container.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,29 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_IS_PTR_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_IS_PTR_CONTAINER_ER_2010_HPP
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/assign/v2/detail/traits/container/ptr_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_traits{
+
+ template<typename V>
+ struct is_ptr_container : ptr_to_value<V>::is_applicable{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_range.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_range.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,32 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_IS_RANGE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_IS_RANGE_ER_2010_HPP
+#include <boost/mpl/bool.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct range{};
+}// container_tag
+namespace container_traits{
+
+ template<typename V>
+ struct is_range{
+ // purposedly left blank.
+ };
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_set.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 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_CONTAINER_IS_SET_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_IS_SET_ER_2010_HPP
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/assign/v2/detail/fwd/container.hpp>
+#include <boost/assign/v2/detail/traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct set{};
+}// container_tag
+namespace container_traits{
+
+ template<typename V>
+ struct is_set_impl : boost::mpl::false_{};
+
+ template<typename K,typename C,typename A>
+ struct is_set_impl<
+ std::set<K,C,A>
+ > : boost::mpl::true_{};
+
+ template<typename V>
+ struct is_set : forward_to_value<
+ is_set_impl,
+ typename boost::remove_cv<V>::type
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_sorted.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_sorted.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 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_CONTAINER_IS_SORTED_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_IS_SORTED_ER_2010_HPP
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/assign/v2/detail/fwd/container.hpp>
+#include <boost/assign/v2/detail/traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct sorted{};
+}// container_tag
+namespace container_traits{
+
+ template<typename V>
+ struct is_sorted_impl : boost::mpl::false_{};
+
+ template<typename T,typename C,typename A>
+ struct is_sorted_impl< std::set<T,C,A> > : boost::mpl::true_{};
+
+ template<typename K,typename T,typename C,typename A>
+ struct is_sorted_impl< std::map<K,T,C,A> > : boost::mpl::true_{};
+
+ template<typename V>
+ struct is_sorted : forward_to_value<
+ is_sorted_impl,
+ typename boost::remove_cv<V>::type
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_static_array.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/is_static_array.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,47 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_IS_STATIC_ARRAY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_IS_STATIC_ARRAY_ER_2010_HPP
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/assign/v2/detail/traits/container/has_static_size.hpp>
+#include <boost/assign/v2/detail/traits/container/forward_to_value.hpp>
+
+namespace boost{
+
+// this here is necessary to avoid compiler error in <boost/array.hpp>
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+ template< class T, std::size_t sz >
+ class array;
+#endif
+
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct static_array{};
+}// container_tag
+namespace container_traits{
+
+ // TODO also check that operator[] exists
+
+ template<typename T>
+ struct is_static_array_impl : has_static_size<T>{};
+
+ template<typename V>
+ struct is_static_array : forward_to_value<
+ is_static_array_impl,
+ typename boost::remove_cv<V>::type
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/ptr_to_value.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/ptr_to_value.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,196 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_PTR_TO_VALUE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_PTR_TO_VALUE_ER_2010_HPP
+#include <memory> // std::allocator
+#include <boost/preprocessor/cat.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/assign/v2/detail/fwd/ptr_container.hpp>
+#include <boost/assign/v2/detail/fwd/container.hpp>
+#include <boost/assign/v2/detail/traits/container/static_size.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_traits{
+
+ template<typename V>
+ struct ptr_to_value{
+
+ struct is_applicable : boost::mpl::false_{};
+
+ };
+
+namespace ptr_to_value_aux{
+
+ template<typename A,typename T> struct allocator{};
+
+ template<typename T>
+ struct allocator<std::allocator<void*>, T>
+ {
+ typedef std::allocator<T> type;
+ };
+
+ template<typename V>
+ struct common
+ {
+
+ struct is_applicable : boost::mpl::true_{};
+
+ typedef typename boost::remove_reference<
+ typename V::reference
+ >::type value_type;
+
+ typedef typename ptr_to_value_aux::allocator<
+ typename V::allocator_type,
+ value_type
+ >::type allocator_type;
+ };
+
+ template<typename V,template<typename, std::size_t> class F>
+ struct static_array_like{
+
+ // there is no allocator, hence can't derive from common<V>
+
+ struct is_applicable : boost::mpl::true_{};
+
+ typedef typename boost::remove_reference<
+ typename V::reference
+ >::type value_type;
+
+ typedef F<
+ typename static_array_like::value_type,
+ container_traits::static_size<V>::value
+ > container_type;
+
+ };
+
+ template<typename V,template<typename,typename> class F>
+ struct seq_like : ptr_to_value_aux::common<V>{
+
+ typedef F<
+ typename seq_like::value_type,
+ typename seq_like::allocator_type
+ > container_type;
+
+ };
+
+ template<typename V,template<typename,typename,typename,typename> class F>
+ struct map_like : ptr_to_value_aux::common<V>{
+
+ typedef F<
+ typename V::key_type,
+ typename map_like::value_type,
+ typename V::key_compare,
+ typename map_like::allocator_type
+ > container_type;
+
+ };
+
+ template<typename V,template<typename,typename,typename> class F>
+ struct set_like : ptr_to_value_aux::common<V>{
+
+ typedef F<
+ typename V::key_type,
+ typename V::key_compare,
+ typename set_like::allocator_type
+ > container_type;
+
+ };
+
+ template<typename V,
+ template<typename,typename,typename,typename,typename> class F>
+ class unordered_map_like : ptr_to_value_aux::common<V>{
+
+ typedef F<
+ typename V::key_type,
+ typename unordered_map_like::value_type,
+ typename V::hasher,
+ typename V::key_equal,
+ typename unordered_map_like::allocator_type
+ > container_type;
+
+ };
+
+ template<typename V,
+ template<typename,typename,typename,typename> class F>
+ class unordered_set_like : ptr_to_value_aux::common<V>{
+
+ typedef F<
+ typename V::key_type,
+ typename V::hasher,
+ typename V::key_equal,
+ typename unordered_set_like::allocator_type
+ > container_type;
+
+ };
+
+
+}// ptr_to_value_aux
+
+
+ // Array
+ template<
+ typename T,
+ std::size_t N,
+ typename A
+ >
+ struct ptr_to_value<
+ boost::ptr_array<T,N,A>
+ > : ptr_to_value_aux::static_array_like<
+ boost::ptr_array<T,N,A>,
+ boost::array
+ >{};
+
+ // Sequence
+
+ template<
+ typename T,
+ typename C,
+ typename A
+ >
+ struct ptr_to_value<
+ boost::ptr_deque<T,C,A>
+ > : ptr_to_value_aux::seq_like<
+ boost::ptr_deque<T,C,A>,
+ std::deque
+ >{};
+
+ template<
+ typename T,
+ typename C,
+ typename A
+ >
+ struct ptr_to_value<
+ boost::ptr_list<T,C,A>
+ > : ptr_to_value_aux::seq_like<
+ boost::ptr_list<T,C,A>,
+ std::list
+ >{};
+
+ template<
+ typename T,
+ typename C,
+ typename A
+ >
+ struct ptr_to_value<
+ boost::ptr_vector<T,C,A>
+ > : ptr_to_value_aux::seq_like<
+ boost::ptr_vector<T,C,A>,
+ std::vector
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/ptr_to_value_container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/ptr_to_value_container.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,29 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_PTR_TO_VALUE_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_PTR_TO_VALUE_CONTAINER_ER_2010_HPP
+#include <boost/assign/v2/detail/traits/container/is_ptr_container.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_traits{
+
+ template<typename V>
+ struct ptr_to_value_container{
+ typedef typename ptr_to_value<V>::container_type type;
+ };
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/static_size.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/static_size.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,46 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_STATIC_SIZE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_STATIC_SIZE_ER_2010_HPP
+#include <boost/mpl/size_t.hpp>
+#include <boost/assign/v2/detail/fwd/container.hpp>
+#include <boost/assign/v2/detail/fwd/ptr_container.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_traits{
+
+ template<typename V>
+ struct static_size{
+
+ // Needed as a meta-function (indirection) bec. ptr_array
+ // does not expose static_size.
+
+ };
+
+ template<typename T,std::size_t N>
+ struct static_size< boost::array<T,N> >
+ : boost::mpl::size_t<
+ boost::array<T,N>::static_size
+ >{};
+
+ template<typename T,std::size_t N,typename C>
+ struct static_size< boost::ptr_array<T, N, C> >
+ : boost::mpl::size_t<
+ N
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/value.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/value.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,41 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_VALUE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_VALUE_ER_2010_HPP
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/assign/v2/detail/traits/type/value.hpp>
+#include <boost/assign/v2/detail/traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_traits
+{
+
+ // TODO
+ // maybe this should be
+ // remove_reference<V::reference>::type
+ // or
+ // range_value<V>, is available.
+ // Think about ptr_container in making this change.
+ template<typename V>
+ struct value : forward_to_value<
+ type_traits::value,
+ V
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/container/value_container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/container/value_container.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,34 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_VALUE_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_CONTAINER_VALUE_CONTAINER_ER_2010_HPP
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/assign/v2/detail/traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/traits/container/ptr_to_value_container.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_traits{
+
+ template<typename V>
+ struct value_container : boost::mpl::eval_if<
+ is_ptr_container<V>,
+ ptr_to_value_container<V>,
+ boost::mpl::identity<V>
+ >{};
+
+}// container_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/switch.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/switch.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,64 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_SWITCH_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_TRAITS_SWITCH_ER_2010_HPP
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/apply.hpp>
+//#include <boost/mpl/always.hpp>
+#include <boost/mpl/placeholders.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace switch_tag{
+
+ // Each tag in this namespace identifies a switch statement.
+
+}//switch_tag
+namespace switch_aux{
+
+ // Fully specialize by inheriting from wrap<Tag,F>
+ // To terminate the switch, inherit from wrap<Tag>
+ template<typename SwitchTag, int k> struct case_{};
+
+ template<typename T>
+ struct default_f : boost::mpl::true_{};
+
+ template<typename Tag, template<typename> class F = switch_aux::default_f>
+ struct helper
+ {
+ typedef Tag tag;
+ template<typename T> struct apply : F<T>
+ {
+ // Is Tag compatible with T? Answer : F<T>::value.
+ };
+ };
+
+ template<typename H> // helper
+ struct extract_tag
+ {
+ typedef typename H::tag type;
+ };
+
+ template<typename SwitchTag, typename T, int k = 0>
+ struct result : boost::mpl::eval_if<
+ boost::mpl::apply1< switch_aux::case_<SwitchTag, k>, T >,
+ switch_aux::extract_tag< switch_aux::case_<SwitchTag, k> >,
+ switch_aux::result< SwitchTag, T, k + 1>
+ >{};
+
+}// switch_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/type.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/type.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,17 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_TYPE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_TYPE_ER_2010_HPP
+
+#include <boost/assign/v2/detail/traits/type/has_value_type.hpp>
+#include <boost/assign/v2/detail/traits/type/meta_convert.hpp>
+#include <boost/assign/v2/detail/traits/type/value.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/type/decay.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/type/decay.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,35 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_TYPE_DECAY_OF_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_TYPE_DECAY_OF_ER_2010_HPP
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/decay.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace type_traits{
+
+ // To support string literals properly
+ template< class T >
+ struct decay : boost::mpl::eval_if<
+ ::boost::is_array<T>,
+ ::boost::decay<const T>,
+ ::boost::decay<T> >
+ {};
+
+}// type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/type/has_value_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/type/has_value_type.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 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_TYPE_HAS_VALUE_TYPE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_TYPE_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 type_traits{
+
+ 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;
+ };
+
+
+}// type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/type/is_stl_pair.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/type/is_stl_pair.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,36 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_TYPE_IS_STL_PAIR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_TYPE_IS_STL_PAIR_ER_2010_HPP
+#include <utility>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace type_traits{
+
+// template< class T, class U >
+// boost::type_traits::yes_type is_pair( const std::pair<T,U>* );
+// boost::type_traits::no_type is_pair( ... );
+
+ template<typename T>
+ struct is_stl_pair : boost::mpl::false_{};
+
+ template<typename T,typename U>
+ struct is_stl_pair< std::pair<T, U> > : boost::mpl::true_{};
+
+}// type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/type/meta_convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/type/meta_convert.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,35 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_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>
+
+namespace boost{
+// struct boost::use_default;
+namespace assign{
+namespace v2{
+namespace type_traits{
+
+ template<typename Tag = boost::use_default>
+ struct meta_convert{
+
+ template<typename T1,typename T2>
+ struct apply : ref::convert_traits::result<T1,T2>{};
+
+ };
+
+ // Specialize on Tag as needed.
+
+}// type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/type/or_const.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/type/or_const.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,37 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_TYPE_TRAITS_OR_CONST_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_TYPE_TRAITS_OR_CONST_ER_2010_HPP
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace type_traits{
+
+template<typename ...Args> struct or_const : boost::mpl::false_{};
+
+template<typename T, typename ...Args>
+struct or_const<T, Args...> : boost::mpl::or_<
+ boost::is_const<T>,
+ or_const<Args...>
+>{};
+
+template<typename T, typename ...Args>
+struct or_const<T const, Args...> : boost::mpl::true_{};
+
+}// type_traits
+}// v2
+}// assign
+}// boost
+
+#endif // BOOST_ASSIGN_V2_DETAIL_TYPE_TRAITS_OR_CONST_ER_2010_HPP

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/type/same_remove_cv.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/type/same_remove_cv.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,32 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_TYPE_TRAITS_SAME_REMOVE_CV_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_TYPE_TRAITS_SAME_REMOVE_CV_ER_2010_HPP
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace type_traits{
+
+ template<typename T,typename U>
+ struct same_remove_cv : boost::is_same<
+ typename boost::remove_cv<T>::type,
+ typename boost::remove_cv<U>::type
+ >{};
+
+}// type_traits
+}// v2
+}// assign
+}// boost
+
+#endif
+

Added: sandbox/statistics/support/boost/assign/v2/detail/traits/type/value.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/traits/type/value.hpp 2011-01-10 23:35:11 EST (Mon, 10 Jan 2011)
@@ -0,0 +1,35 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_TYPE_VALUE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TRAITS_TYPE_VALUE_ER_2010_HPP
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace type_traits{
+
+ template<typename V>
+ struct value_impl : boost::mpl::identity<
+ typename V::value_type
+ >{};
+
+ template<typename V>
+ struct value : value_impl<
+ typename boost::remove_cv<V>::type
+ >{};
+
+}// type_traits
+}// v2
+}// assign
+}// boost
+
+#endif


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk