Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r66593 - in sandbox/statistics/support/boost/assign/v2: . anon chain chain/aux_ chain/checking chain/traits detail detail/checking detail/config detail/functor detail/fwd detail/keyword detail/mpl detail/pp detail/relational_op detail/type_traits detail/type_traits/container put put/compose put/compose/common put/compose/csv put/compose/functor put/generic put/modifier put/range put/range/modifier put/sub put/wrapper ref ref/anon ref/anon/csv ref/anon/generic ref/anon/unary ref/detail ref/detail/convert_traits ref/detail/fusion_list ref/detail/unwrap ref/fusion ref/fusion_matrix ref/static_array ref/static_array/alloc ref/wrapper
From: erwann.rogard_at_[hidden]
Date: 2010-11-15 16:08:15


Author: e_r
Date: 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
New Revision: 66593
URL: http://svn.boost.org/trac/boost/changeset/66593

Log:
re-adding boost/assign/v2
Added:
   sandbox/statistics/support/boost/assign/v2/
   sandbox/statistics/support/boost/assign/v2/anon/
   sandbox/statistics/support/boost/assign/v2/anon/anon.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/anon/cont.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/anon/csv.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/anon/make.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/
   sandbox/statistics/support/boost/assign/v2/chain/aux_/
   sandbox/statistics/support/boost/assign/v2/chain/aux_/adaptor.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/aux_/bitwise_or.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/aux_/logical_and.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/aux_/sub.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/chain.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/checking/
   sandbox/statistics/support/boost/assign/v2/chain/checking/distinct_values.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/checking/twin_values.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/traits/
   sandbox/statistics/support/boost/assign/v2/chain/traits/iterator.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/traits/range.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/traits/result.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/chain/traits/use_lvalue.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/
   sandbox/statistics/support/boost/assign/v2/detail/checking/
   sandbox/statistics/support/boost/assign/v2/detail/checking/array.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/assert.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/check_convert.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/check_equal.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/checking.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/constants.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/deduce_check.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/fifo.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/iterator.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/lifo.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/map.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/range.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/checking/relational_op.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/config/
   sandbox/statistics/support/boost/assign/v2/detail/config/arity_bound.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/config/borland_workaround.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/config/enable_cpp0x.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/config/limit_arity.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/config/limit_csv_arity.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/config/limit_lvalue_const_arity.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/detail.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/functor/
   sandbox/statistics/support/boost/assign/v2/detail/functor/constructor.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/functor/functor.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/functor/identity.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/functor/new.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/fwd/
   sandbox/statistics/support/boost/assign/v2/detail/fwd/container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/fwd/fwd.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/fwd/ptr_container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/keyword/
   sandbox/statistics/support/boost/assign/v2/detail/keyword/keyword.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/keyword/nil.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/keyword/unwrap.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/mpl/
   sandbox/statistics/support/boost/assign/v2/detail/mpl/always.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/mpl/mpl.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/mpl/switch.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/mpl/uniform_vector.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/pp/
   sandbox/statistics/support/boost/assign/v2/detail/pp/args.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/pp/params.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/pp/seq.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/relational_op/
   sandbox/statistics/support/boost/assign/v2/detail/relational_op/crtp.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/relational_op/relational_op.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/forward_to_value.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/has_push.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/has_static_size.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_associative.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_fifo.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_lifo.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_map.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_ptr_container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_range.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_set.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_sorted.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_static_array.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/ptr_to_value.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/ptr_to_value_container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/static_size.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/value.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/value_container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/decay.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/has_value_type.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/is_stl_pair.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/meta_convert.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/same_remove_cv.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/type_traits.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/detail/type_traits/value.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/
   sandbox/statistics/support/boost/assign/v2/put/compose/
   sandbox/statistics/support/boost/assign/v2/put/compose/common/
   sandbox/statistics/support/boost/assign/v2/put/compose/common/common.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/common/forward_parameter.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/compose.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/csv/
   sandbox/statistics/support/boost/assign/v2/put/compose/csv/composer.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/csv/csv.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/csv/forward_seq_arg.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/csv/held.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/csv/sub.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/functor/
   sandbox/statistics/support/boost/assign/v2/put/compose/functor/composer.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/functor/forward_args.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/functor/forward_seq_args.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/functor/functor.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/functor/sub.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/compose/tag.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/generic/
   sandbox/statistics/support/boost/assign/v2/put/generic/base.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/generic/crtp.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/generic/expose_fun.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/generic/expose_modifier.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/generic/generic.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/generic/new_fun.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/generic/new_modifier.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/generic/result_of_modulo.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/
   sandbox/statistics/support/boost/assign/v2/put/modifier/at_next.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/def.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/incr_lookup.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/insert.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/keyword.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/modifier.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/push.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/push_back.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/push_front.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/repeat.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/modifier/xxx.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/put.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/range/
   sandbox/statistics/support/boost/assign/v2/put/range/adaptor.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/range/modifier/
   sandbox/statistics/support/boost/assign/v2/put/range/modifier/copy.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/range/modifier/deduce.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/range/modifier/modifier.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/range/modifier/put.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/range/modifier/range.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/range/range.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/sub/
   sandbox/statistics/support/boost/assign/v2/put/sub/csv.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/sub/make.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/sub/sub.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/wrapper/
   sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/wrapper/make.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/put/wrapper/wrapper.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/
   sandbox/statistics/support/boost/assign/v2/ref/anon/
   sandbox/statistics/support/boost/assign/v2/ref/anon/anon.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_copy.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_rebind.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_xxx.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/csv.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/make.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/nth_result_of.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/csv/pp.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/cont.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/fwd.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/generic.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/make.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/nth_result_of.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/policy.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/generic/traits.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/unary/
   sandbox/statistics/support/boost/assign/v2/ref/anon/unary/assign_copy.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/unary/assign_rebind.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/unary/assign_xxx.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/unary/make.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/unary/nth_result_of.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/unary/tag2.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/anon/unary/unary.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/add_const.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/distinct_values.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/twin_values.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/assign_array.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fusion_list.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fwd.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/make.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/nth_result_of.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/
   sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_array.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_copy.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_rebind.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_xxx.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/fusion.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/fwd.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/head_holder.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/link_holder.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/make.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/most_const.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/nil_arg.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/nth_result_of.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/policy.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion/root.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/
   sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/container.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/fusion_matrix.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/fwd.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/nth_result_of.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/ref.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/static_array/
   sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/
   sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/alloc.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/fast_alloc.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/fast_alloc_fwd.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/lazy_alloc.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/lazy_alloc_fwd.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/static_array/interface.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/static_array/static_array.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/base.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/copy.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/deduce_assign_tag.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/framework.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/rebind.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/ref/wrapper/wrapper.hpp (contents, props changed)
   sandbox/statistics/support/boost/assign/v2/v2.hpp (contents, props changed)

Added: sandbox/statistics/support/boost/assign/v2/anon/anon.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/anon/anon.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_ANON_ANON_ER_2010_HPP
+#define BOOST_ASSIGN_V2_ANON_ANON_ER_2010_HPP
+
+#include <boost/assign/v2/anon/make.hpp>
+#include <boost/assign/v2/anon/cont.hpp>
+#include <boost/assign/v2/anon/csv.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/anon/cont.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/anon/cont.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,190 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_ANON_CONT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_ANON_CONT_ER_2010_HPP
+#include <deque>
+#include <boost/range/iterator.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/size.hpp>
+#include <boost/range/size_type.hpp>
+#include <boost/range/iterator_range.hpp> //iterator_range_detail::
+#include <boost/assign/v2/put/put.hpp>
+#include <boost/assign/v2/put/range/range.hpp>
+#include <boost/assign/v2/put/generic/result_of_modulo.hpp>
+#include <boost/assign/v2/put/generic/crtp.hpp>
+#include <boost/assign/v2/detail/relational_op/relational_op.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace anon_aux{
+
+ template<typename T,typename F,typename Tag> class cont;
+
+}// anon_aux
+namespace result_of_modulo{
+
+ template<typename T,typename F,typename Tag>
+ struct new_fun<anon_aux::cont<T,F,Tag> >
+ {
+
+ template<typename F1>
+ struct apply{ typedef anon_aux::cont<T, F1, Tag> type; };
+
+ };
+
+ template<typename T,typename F,typename Tag>
+ struct new_modifier<anon_aux::cont<T,F,Tag> >
+ {
+
+ template<typename NewTag>
+ struct apply{ typedef anon_aux::cont<T, F, NewTag> type; };
+
+ };
+
+}//result_of_modulo
+namespace anon_aux{
+
+ template<typename T>
+ struct impl{ typedef std::deque<T> type; };
+
+ template<typename T,typename F,typename Tag>
+ struct cont_modifier_traits
+ { };
+
+
+ template<typename T,typename F,typename Tag>
+ class cont :
+ public relational_op_aux::crtp< cont<T,F,Tag> >,
+ public put_aux::crtp<
+ typename anon_aux::impl<T>::type, F, Tag,
+ cont<T,F,Tag>,
+ cont_modifier_traits<T,F,Tag>
+ >
+ {
+ typedef typename anon_aux::impl<T>::type impl_;
+ typedef cont_modifier_traits<T,F,Tag> modifier_traits_;
+ typedef put_aux::crtp< impl_, F, Tag, cont, modifier_traits_> put_crtp_;
+
+ typedef put_aux::modifier<Tag> modifier_;
+
+ public:
+
+ typedef T value_type;
+ typedef typename boost::range_size<impl_>::type size_type;
+ typedef typename boost::range_iterator<impl_>::type iterator;
+ typedef typename boost::range_iterator<
+ const impl_>::type const_iterator;
+
+ // Construct
+ cont(){}
+ explicit cont(const F& f) : put_crtp_( f ){}
+ explicit cont(impl_ const& v, F const& f): put_crtp_( f ), impl( v )
+ {
+ // Required by crtp when Tag or F is modified.
+ }
+
+ explicit cont( impl_ const& v, F const& f, modifier_ const& m )
+ : put_crtp_( f, m ), impl( v )
+ {
+ // Required by crtp when Tag or F is modified.
+ }
+
+ // Deque interface
+ iterator begin(){
+ return boost::begin( this->impl );
+ }
+ iterator end(){
+ return boost::end( this->impl );
+ }
+ const_iterator begin()const{
+ return boost::begin( this->impl );
+ }
+ const_iterator end()const{
+ return boost::end( this->impl );
+ }
+
+ typedef typename impl_::reference reference;
+ typedef typename impl_::const_reference const_reference;
+ typedef typename impl_::difference_type difference_type;
+
+ size_type size()const{
+ return this->unwrap().size();
+ }
+ size_type max_size()const{
+ return this->unwrap().max_size();
+ }
+ bool empty()const{
+ return this->unwrap().empty();
+ }
+ reference operator[](size_type n){
+ return this->unwrap()[n];
+ }
+ const_reference operator[](size_type n)const{
+ return this->unwrap()[n];
+ }
+ reference front(){
+ return this->unwrap().front();
+ }
+ const_reference front()const{
+ return this->unwrap().front();
+ }
+ reference back(){
+ return this->unwrap().back();
+ }
+ const_reference back()const{
+ return this->unwrap().back();
+ }
+ void pop_front(){
+ this->unwrap().pop_front();
+ }
+ void pop_back(){
+ this->unwrap().pop_back();
+ }
+ void swap(cont& that){
+ this->unwrap().swap( that.unwrap() );
+ }
+
+ // Note : the modifiers such as push_back() are ommitted as they
+ // accessible through the put interface.
+
+ // Convert
+
+ BOOST_ASSIGN_V2_CONVERT_CONVERT_MF
+ BOOST_ASSIGN_V2_CONVERT_OPERATOR_MF
+
+ impl_& unwrap()const{ return this->impl; }
+
+ // 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:
+ mutable impl_ impl;
+
+ };
+
+}// anon_aux
+}// v2
+}// assign
+}// boost
+
+#endif
\ No newline at end of file

Added: sandbox/statistics/support/boost/assign/v2/anon/csv.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/anon/csv.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,49 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_ANON_CSV_ER_2010_HPP
+#define BOOST_ASSIGN_V2_ANON_CSV_ER_2010_HPP
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+
+#include <boost/assign/v2/detail/keyword/nil.hpp>
+#include <boost/assign/v2/detail/config/limit_csv_arity.hpp>
+
+#include <boost/assign/v2/anon/make.hpp>
+#include <boost/assign/v2/anon/cont.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+
+#define MACRO1(z, i, data) ( BOOST_PP_CAT(_, i) )
+#define MACRO2(z, N, data)\
+ template<typename T>\
+ typename result_of::anon<T>::type\
+ csv_anon( BOOST_PP_ENUM_PARAMS(N, T const & _) )\
+ {\
+ return anon<T>( v2::_nil) BOOST_PP_REPEAT(N, MACRO1, ~ );\
+ }\
+/**/
+BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY),
+ MACRO2,
+ ~
+)
+#undef MACRO1
+#undef MACRO2
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/anon/make.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/anon/make.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,49 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_ANON_MAKE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_ANON_MAKE_ER_2010_HPP
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/assign/v2/detail/keyword/nil.hpp>
+#include <boost/assign/v2/anon/cont.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace result_of{
+
+ template<typename T>
+ struct anon
+ {
+ typedef typename boost::remove_cv<T>::type t_;
+ typedef typename anon_aux::impl<t_>::type cont_;
+ typedef result_of::put<cont_> traits_;
+ typedef typename traits_::f_ f_;
+ typedef typename traits_::modifier_tag_ modifier_tag_;
+ typedef anon_aux::cont<t_,f_,modifier_tag_> type;
+ };
+
+}// result_of
+
+ template<typename T>
+ typename result_of::anon<T>::type
+ anon( keyword_aux::nil )
+ {
+ typedef typename result_of::anon<T>::type result_;
+ return result_();
+ }
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/aux_/adaptor.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/aux_/adaptor.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,65 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2009 Neil Groves //
+// 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_RANGE_CHAIN_AUX_ADAPTOR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_RANGE_CHAIN_AUX_ADAPTOR_ER_2010_HPP
+#include <boost/mpl/void.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace chain_aux{
+
+ typedef boost::mpl::void_ void_;
+
+ // Tag1 controls conversion. Seet type_traits/meta_convert.hpp
+
+ template<typename U,typename Tag1 = use_default,typename Tag2 = void_>
+ struct adaptor1
+ {
+ adaptor1( U& r ) : value( r ){}
+ mutable U& value;
+ };
+
+ template<
+ typename Tag1 = use_default,
+ typename Tag2 = void_
+ >
+ struct adaptor2
+ {
+
+ adaptor2(){}
+
+ template<typename U>
+ struct result{
+ typedef chain_aux::adaptor1<U, Tag1, Tag2> type;
+ static type call(U& u){ return type( u ); }
+ };
+
+ template<typename R>
+ typename result<R>::type
+ operator()(R& r)const{
+ return result<R>::call ( r );
+ }
+
+ template<typename R>
+ typename result<R const>::type
+ operator()(R const& r)const{
+ return result<R const>::call( r );
+ }
+
+ };
+
+}// chain_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/aux_/bitwise_or.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/aux_/bitwise_or.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,82 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2009 Neil Groves //
+// Copyright (C) 2010 Manuel Peinado Gallego //
+// 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_RANGE_CHAIN_AUX_BITWISE_OR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_RANGE_CHAIN_AUX_BITWISE_OR_ER_2010_HPP
+#include <boost/mpl/void.hpp>
+#include <boost/assign/v2/chain/traits/result.hpp>
+#include <boost/assign/v2/chain/aux_/adaptor.hpp>
+#include <boost/assign/v2/chain/aux_/sub.hpp>
+
+// Design:
+// - The original design is boost::chain in RangeEx
+// - ER modified as follows:
+// - sets the underlying iterator's Reference to one which both inputs are
+// convertible to.
+// - Constness is determined by that of the elements in each range, not that
+// of the range.
+// - Finally, MPG proposed a way to compose chains http://gist.github.com/287791
+// and a variant of it is used below.
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace adaptor{
+namespace{
+ const chain_aux::adaptor2<> _chain = chain_aux::adaptor2<>();
+}
+}// adaptor
+namespace result_of{
+
+ template<typename R1, typename R2, typename Tag = use_default>
+ struct chain : chain_aux::result<R1, R2, Tag>{};
+
+}// result_of
+namespace chain_aux{
+
+#define BOOST_ASSIGN_V2_FRAMEWORK_CHAIN(U1) \
+ template<typename R1,typename U2,typename Tag> \
+ typename chain_aux::result<U1, U2, Tag>::type \
+ operator|(U1 & r1, chain_aux::adaptor1<U2, Tag> const & h) \
+ { \
+ typedef chain_aux::result<U1, U2, Tag> caller_; \
+ return chain_aux::make_sub( caller_::call( r1, h.value ) ); \
+ } \
+\
+/**/
+
+BOOST_ASSIGN_V2_FRAMEWORK_CHAIN(R1 )
+BOOST_ASSIGN_V2_FRAMEWORK_CHAIN(R1 const)
+#undef BOOST_ASSIGN_V2_FRAMEWORK_CHAIN
+
+}// chain_aux
+
+//#define BOOST_ASSIGN_V2_FRAMEWORK_CHAIN(U1, U2) \
+// template<typename Tag,typename R1,typename R2> \
+// typename chain_aux::result<U1, U2, Tag>::type \
+// chain(U1 & r1, U2 & r2) \
+// { \
+// return r1 | adaptor::_chain( r2 ); \
+// } \
+//\
+///**/
+
+//BOOST_ASSIGN_V2_FRAMEWORK_CHAIN(R1 , R2 )
+//BOOST_ASSIGN_V2_FRAMEWORK_CHAIN(R1 , R2 const )
+//BOOST_ASSIGN_V2_FRAMEWORK_CHAIN(R1 const, R2 )
+//BOOST_ASSIGN_V2_FRAMEWORK_CHAIN(R1 const, R2 const )
+//#undef BOOST_ASSIGN_V2_FRAMEWORK_CHAIN
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/aux_/logical_and.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/aux_/logical_and.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,44 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2009 Neil Groves //
+// 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_CHAIN_FUNCTION_LOGICAL_AND_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHAIN_FUNCTION_LOGICAL_AND_ER_2010_HPP
+#include <boost/assign/v2/chain/aux_/bitwise_or.hpp>
+#include <boost/assign/v2/chain/traits/result.hpp>
+
+// This is an alternative syntax for chaining
+
+namespace boost{
+namespace assign{
+namespace v2{
+
+#define BOOST_ASSIGN_V2_CHAIN_OPERATOR(U1, U2) \
+template<typename R1,typename R2> \
+typename chain_aux::result< \
+ U1, \
+ U2 \
+>::type \
+operator&&(U1& r1, U2 & r2) \
+{ \
+ return r1 | adaptor::_chain( r2 ); \
+} \
+/**/
+
+BOOST_ASSIGN_V2_CHAIN_OPERATOR( R1 , R2 )
+BOOST_ASSIGN_V2_CHAIN_OPERATOR( R1 , R2 const )
+BOOST_ASSIGN_V2_CHAIN_OPERATOR( R1 const, R2 )
+BOOST_ASSIGN_V2_CHAIN_OPERATOR( R1 const, R2 const )
+#undef BOOST_ASSIGN_V2_CHAIN_OPERATOR
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/aux_/sub.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/aux_/sub.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,60 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2009 Neil Groves //
+// 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_RANGE_CHAIN_AUX_SUB_ER_2010_HPP
+#define BOOST_ASSIGN_V2_RANGE_CHAIN_AUX_SUB_ER_2010_HPP
+#include <boost/range/iterator_range.hpp> //iterator_range_detail::
+#include <boost/assign/v2/put/range/convert.hpp>
+#include <boost/assign/v2/detail/relational_op/relational_op.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace chain_aux{
+
+ // Adds a conversion capability to a range
+ //
+ // TODO : for now relational_op is disabled as conflicts with
+ // iterator_range's implem.
+ template<typename R>
+ struct sub : R //, relational_op_aux::crtp< sub<R> >
+ {
+
+ typedef R super_t;
+
+ sub(){}
+ sub(super_t const& s):super_t( s ){}
+
+ BOOST_ASSIGN_V2_CONVERT_CONVERT_MF
+ BOOST_ASSIGN_V2_CONVERT_OPERATOR_MF
+
+ // Relational op
+ //template<typename R1>
+ //bool equal_to(const R1& r)const{
+ // return ::boost::iterator_range_detail::equal(
+ // (*this), r );
+ //}
+ //template<typename R1>
+ //bool less_than(const R& r)const{
+ // return ::boost::iterator_range_detail::less_than(
+ // (*this), r );
+ //}
+
+ };
+
+ template<typename R>
+ sub<R> make_sub(const R& r){ return sub<R>( r ); }
+
+}// chain_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/chain.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/chain.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHAIN_CHAIN_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHAIN_CHAIN_ER_2010_HPP
+#include <boost/assign/v2/chain/traits/result.hpp>
+#include <boost/assign/v2/chain/aux_/bitwise_or.hpp>
+#include <boost/assign/v2/chain/aux_/logical_and.hpp>
+
+// Usage
+// using namespace boost::assign::v2;
+// v = r1 && r2 && r3;
+// using namespace adaptor;
+// w = r1 | chain( r2 ) | chain( r3 );
+// BOOST_ASSERT(v == w);
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/checking/distinct_values.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/checking/distinct_values.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,73 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHAIN_CHECKING_DISTINCT_VALUES_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHAIN_CHECKING_DISTINCT_VALUES_ER_2010_HPP
+#include <vector>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/detail/checking/container.hpp>
+#include <boost/assign/v2/chain/chain.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+namespace chain{
+namespace distinct_values{
+
+// If the value types of the two ranges differ, their references must be
+// converted to value_type. In particular, lvalue cannot be preserved.
+
+#define m(T1,T2) \
+ template<typename T> \
+ void do_check(typename boost::enable_if<boost::is_same<T,T1> >::type* = 0) \
+ { \
+ typedef T1 t1_; \
+ typedef T2 t2_; \
+ typedef std::vector<T1> vec1_; \
+ typedef std::vector<T2> vec2_; \
+ vec1_ vec1, vec3; \
+ vec2_ vec2; \
+ { \
+ namespace ns = v2::checking::constants; \
+ vec1.push_back( ns::a ); \
+ vec1.push_back( ns::b ); \
+ vec2.push_back( ns::c ); \
+ vec2.push_back( ns::d ); \
+ vec2.push_back( ns::e ); \
+ vec3.push_back( ns::f ); \
+ vec3.push_back( ns::g ); \
+ vec3.push_back( ns::h ); \
+ } \
+ namespace chk = checking::container; \
+ { \
+ using namespace adaptor; \
+ chk::do_check( vec1 | _chain( vec2 ) | _chain( vec3 ) ); \
+ } \
+ } \
+/**/
+
+
+m(short , int)
+m(int , long)
+m(float , double)
+m(double , long double)
+
+#undef m
+
+}// distinct_values
+}// chain
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/checking/twin_values.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/checking/twin_values.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,180 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHAIN_CHECKING_TWIN_VALUES_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHAIN_CHECKING_TWIN_VALUES_ER_2010_HPP
+#include <boost/static_assert.hpp>
+#include <vector>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/assign/v2/detail/checking/range.hpp>
+#include <boost/assign/v2/ref/detail/unwrap/range.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <boost/assign/v2/chain/traits/use_lvalue.hpp>
+#include <boost/assign/v2/chain/chain.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+namespace chain{
+namespace twin_values{
+
+#define BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl_inner( the_value )\
+ typedef v2::chain_traits::use_lvalue<cr1_, cr2_ > use_lvalue_; \
+ BOOST_STATIC_ASSERT( use_lvalue_::value == the_value ); \
+ typedef typename boost::mpl::eval_if_c< \
+ the_value, \
+ boost::mpl::identity<boost::mpl::void_>, \
+ v2::result_of::chain<cr1_, cr2_> \
+ >::type result_; \
+/**/
+
+#define BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl(qual_v1, qual_e2, qual_v2, \
+ the_value )\
+ { \
+ typedef std::vector<T> qual_v1 vec1_; \
+ typedef typename assign::v2::ref::type_traits::copy_wrapper< \
+ T qual_e2>::type w_; \
+ typedef std::vector<w_> qual_v2 vec2_; \
+ typedef typename ref::result_of::unwrap_range<vec1_>::type r1_; \
+ typedef typename ref::result_of::unwrap_range<vec2_>::type r2_; \
+ { \
+ typedef r1_ cr1_;\
+ typedef r2_ cr2_;\
+ BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl_inner(the_value) \
+ } \
+ { \
+ typedef r1_ cr1_;\
+ typedef r2_ cr2_;\
+ BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl_inner(the_value) \
+ } \
+ { \
+ typedef r1_ cr1_;\
+ typedef r2_ const cr2_;\
+ BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl_inner(the_value) \
+ } \
+ { \
+ typedef r1_ const cr1_;\
+ typedef r2_ cr2_;\
+ BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl_inner(the_value) \
+ } \
+ { \
+ typedef r1_ const cr1_;\
+ typedef r2_ const cr2_;\
+ BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl_inner(the_value) \
+ } \
+ } \
+ /**/
+
+ template<typename T>
+ void do_check()
+ {
+ // mpl checks
+ {
+ typedef std::vector<T> vec_;
+ 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_STATIC_ASSERT(is_same1_::value);
+ 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_STATIC_ASSERT(is_same2_::value);
+ }
+// (qual_v1, qual_e2 , qual_v2 , the_value)
+BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl( , , , true )
+BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl( , , const , true )
+BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl( , const , , false )
+BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl( , const , const , false )
+BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl( const , , , false )
+BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl( const , , const , false )
+BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl( const , const , , false )
+BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl( const , const , const , false )
+
+ // runtime checks
+ {
+ typedef std::vector<T> vt_;
+ vt_ vt1( 2 ), vt2( 3 ), vt3( 3 );
+ vt_ vt;
+ {
+ 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 );
+ {
+ using namespace adaptor;
+ boost::copy(
+ vt,
+ boost::begin( vt1 | _chain( vt2 ) | _chain( vt3 ))
+ );
+ }
+ {
+ using namespace adaptor;
+ typedef v2::container_tag::range tag_;
+ v2::checking::do_check(
+ tag_(),
+ vt1 | _chain( vt2 ) | _chain( vt3 )
+ );
+ }
+ }
+ {
+ T a1 , b1, c1, d1, e1, f1, g1, h1;
+
+ typedef typename ref::type_traits::copy_wrapper<T>::type w_;
+ typedef boost::is_reference_wrapper<w_> is_;
+
+ // TODO std::vector causes problems.
+ boost::array<int, 2> vw1;
+ boost::array<int, 3> vw2, vw3;
+ {
+ vw1[ 0 ] = a1 ;
+ vw1[ 1 ] = b1 ;
+ vw2[ 0 ] = c1 ;
+ vw2[ 1 ] = d1 ;
+ vw2[ 2 ] = e1 ;
+ vw3[ 0 ] = f1 ;
+ vw3[ 1 ] = g1 ;
+ vw3[ 2 ] = h1 ;
+ }
+ using namespace adaptor;
+ boost::copy(
+ vt,
+ boost::begin( vw1 | _chain( vw2 ) | _chain( vw3 ) )
+ );
+ {
+ typedef v2::container_tag::range tag_;
+ v2::checking::do_check(
+ tag_(),
+ vw1 | _chain( vw2 ) | _chain( vw3 )
+ );
+ }
+ }
+ }// runtime checks
+ }// do_check
+
+}// twin_values
+}// chain
+}// checking
+}// v2
+}// assign
+}// boost
+
+#undef BOOST_ASSIGN_V2_CHAIN_CHECKING_run
+#undef BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl
+#undef BOOST_ASSIGN_V2_CHAIN_CHECKING_mpl_inner
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/traits/iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/traits/iterator.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,61 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_RANGE_CHAIN_TRAITS_ITERATOR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_RANGE_CHAIN_TRAITS_ITERATOR_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/range/detail/chain_iterator.hpp>
+#include <boost/range/detail/demote_iterator_traversal_tag.hpp>
+#include <boost/assign/v2/detail/type_traits/meta_convert.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace chain_traits{
+
+ template<
+ typename It1,
+ typename It2,
+ typename Tag
+ >
+ struct iterator
+ {
+ typedef typename boost::iterator_reference<It1>::type ref1_;
+ typedef typename boost::iterator_reference<It2>::type ref2_;
+
+ typedef assign::v2::type_traits::meta_convert<Tag> convert_;
+ typedef typename boost::mpl::apply2<
+ convert_,
+ ref1_,
+ ref2_
+ >::type reference;
+
+ typedef typename boost::remove_reference<reference>::type value_type;
+
+ typedef boost::range_detail::chain_iterator<
+ It1,
+ It2,
+ value_type,
+ reference,
+ // TODO should be able to use default
+ // problems arise because traits are probably not defined for
+ // complicated ranges
+ boost::single_pass_traversal_tag
+ > type;
+
+ };
+
+}// chain_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/traits/range.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/traits/range.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,59 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHAIN_TRAITS_RANGE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHAIN_TRAITS_RANGE_ER_2010_HPP
+#include <boost/concept/assert.hpp>
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/assign/v2/chain/traits/iterator.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace chain_traits{
+
+ template<typename R1, typename R2, template<typename> class F, typename Tag>
+ struct range{
+
+ typedef typename chain_traits::iterator<
+ typename F<R1>::type,
+ typename F<R2>::type,
+ Tag
+ >::type iterator_t;
+ typedef boost::iterator_range< iterator_t > type;
+
+ static type call(R1& r1, R2& r2)
+ {
+ BOOST_CONCEPT_ASSERT((SinglePassRangeConcept<R1>));
+ BOOST_CONCEPT_ASSERT((SinglePassRangeConcept<R2>));
+ namespace ns = boost::range_detail;
+ typedef ns::chain_iterator_begin_tag begin_tag_;
+ typedef ns::chain_iterator_end_tag end_tag_;
+ return type(
+ iterator_t(r1, r2, begin_tag_()),
+ iterator_t(r1, r2, end_tag_())
+ );
+ }
+ };
+
+ template<typename R1, typename R2, typename Tag>
+ struct range_l
+ : chain_traits::range< R1, R2, boost::range_iterator,Tag>{};
+
+ template<typename R1, typename R2, typename Tag>
+ struct range_r
+ : chain_traits::range<R1, R2, boost::range_const_iterator,Tag>{};
+
+}// chain_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/traits/result.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/traits/result.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_CHAIN_TRAITS_RESULT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHAIN_TRAITS_RESULT_ER_2010_HPP
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/assign/v2/chain/traits/use_lvalue.hpp>
+#include <boost/assign/v2/chain/traits/range.hpp>
+#include <boost/assign/v2/chain/aux_/sub.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace chain_aux{
+
+ template<typename R1,typename R2,typename Tag = use_default>
+ struct result{
+ typedef typename boost::mpl::eval_if<
+ chain_traits::use_lvalue<R1,R2,Tag>,
+ boost::mpl::identity< chain_traits::range_l<R1, R2, Tag> >,
+ boost::mpl::identity< chain_traits::range_r<R1, R2, Tag> >
+ >::type caller_;
+
+ typedef typename caller_::type super_;
+ typedef chain_aux::sub<super_> type;
+
+ static type call(R1& r1, R2& r2)
+ {
+ return type(
+ caller_::call( r1, r2 )
+ );
+ }
+ };
+
+}// chain_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/chain/traits/use_lvalue.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/chain/traits/use_lvalue.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,67 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHAIN_TRAITS_USE_LVALUE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHAIN_TRAITS_USE_LVALUE_ER_2010_HPP
+#include <boost/config.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/range/reference.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace chain_traits{
+
+ // TODO use is_lvalue_iterator or is_read_iterator
+
+ 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);
+ };
+
+}// chain_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/array.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/array.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,38 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHECKING_ARRAY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_ARRAY_ER_2010_HPP
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_static_array.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+
+ template<typename V>
+ void do_check(container_tag::static_array,V const& ar1)
+ {
+ BOOST_ASSIGN_V2_CHECK_EQUAL( ar1.empty() , false );
+ V ar = ar1;
+ namespace ns = checking::constants;
+ ns::do_check(
+ ar[0],ar[1],ar[2],ar[3],
+ ar[4],ar[5],ar[6],ar[7]
+ );
+ }
+
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/assert.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/assert.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_CHECKING_ASSERT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_ASSERT_ER_2010_HPP
+#include <boost/type_traits/is_same.hpp>
+#include <boost/static_assert.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+
+ template<typename P>
+ void do_assert()
+ {
+ BOOST_STATIC_ASSERT( P::value );
+ }
+
+ template<typename A,typename B>
+ void do_assert_is_same(){
+ typedef boost::is_same<A,B> pred_;
+ checking::do_assert<pred_>();
+ }
+
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/check_convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/check_convert.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,19 @@
+#include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
+
+// TODO find out why c++0x won't allow to = from;
+// Usage:
+// using checking::container; // or maybe checking::array
+// BOOST_ASSIGN_V2_check_convert
+
+#ifndef BOOST_ASSIGN_V2_check_convert
+#if BOOST_ASSIGN_V2_ENABLE_CPP0X
+#define BOOST_ASSIGN_V2_check_convert do_check( from.convert<to_>() );
+#else
+#define BOOST_ASSIGN_V2_check_convert \
+ do_check( from.convert<to_>() ); \
+ to_ to; to = from; \
+ do_check( to ); \
+/**/
+#endif
+#endif
+

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/check_equal.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/check_equal.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_CHECK_EQUAL
+#include <boost/assert.hpp>
+#define BOOST_ASSIGN_V2_CHECK_EQUAL( a , b ) BOOST_ASSERT( a == b )
+#endif
+

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/checking.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/checking.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,25 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHECKING_CHECKING_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_CHECKING_CHECKING_ER_2010_HPP
+
+#include <boost/assign/v2/detail/checking/array.hpp>
+#include <boost/assign/v2/detail/checking/assert.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/detail/checking/container.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/detail/checking/deduce_check.hpp>
+#include <boost/assign/v2/detail/checking/fifo.hpp>
+#include <boost/assign/v2/detail/checking/lifo.hpp>
+#include <boost/assign/v2/detail/checking/map.hpp>
+#include <boost/assign/v2/detail/checking/range.hpp>
+#include <boost/assign/v2/detail/checking/relational_op.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/constants.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/constants.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,94 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHECKING_CONSTANTS_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_CONSTANTS_ER_2010_HPP
+#include <boost/next_prior.hpp>
+#include <boost/range.hpp>
+#include <boost/array.hpp>
+#include <boost/numeric/conversion/converter.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+namespace constants{
+
+namespace {
+ // value // rank
+ const int a = 1; // 1
+ const int b = 5; // 5
+ const int c = 3; // 3
+ const int d = 4; // 4
+ const int e = 2; // 2
+ const int f = 9; // 7
+ const int g = 0; // 0
+ const int h = 7; // 6
+}
+ // array
+ template<typename T>
+ boost::array<T,8> make_array()
+ {
+ typedef boost::array<T,8> ar_;
+ ar_ ar;
+ ar[0] = a; ar[1] = b; ar[2] = c;
+ ar[3] = d; ar[4] = e; ar[5] = f;
+ ar[6] = g; ar[7] = h;
+ return ar;
+ }
+
+ namespace{
+ const boost::array<int,8> array = make_array<int>();
+ }
+
+ // values
+ template<typename T>
+ void do_check(
+ const T& a1,const T& b1,const T& c1,const T& d1,
+ const T& e1,const T& f1,const T& g1,const T& h1
+ )
+ {
+ BOOST_ASSIGN_V2_CHECK_EQUAL( a , a1 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( b , b1 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( c , c1 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( d , d1 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( e , e1 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( f , f1 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( g , g1 );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( h , h1 );
+ }
+
+namespace sorted{
+
+ template<typename T>
+ void do_check(
+ const T& a1,const T& b1,const T& c1,const T& d1,
+ const T& e1,const T& f1,const T& g1,const T& h1
+ )
+ {
+ namespace ns = checking::constants;
+ BOOST_ASSIGN_V2_CHECK_EQUAL( a1, ns::g );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( b1, ns::a );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( c1, ns::e );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( d1, ns::c );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( e1, ns::d );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( f1, ns::b );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( g1, ns::h );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( h1, ns::f );
+ }
+
+}// sorted
+}// constants
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/container.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_CHECKING_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_CONTAINER_ER_2010_HPP
+#include <boost/assign/v2/detail/checking/deduce_check.hpp>
+#include <boost/assign/v2/detail/checking/array.hpp>
+#include <boost/assign/v2/detail/checking/fifo.hpp>
+#include <boost/assign/v2/detail/checking/lifo.hpp>
+#include <boost/assign/v2/detail/checking/map.hpp>
+#include <boost/assign/v2/detail/checking/range.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+namespace container{
+
+ template<typename V>
+ void do_check(V const & v)
+ {
+ using namespace checking::constants;
+ typedef typename checking::deduce_check<V>::type tag;
+ checking::do_check( tag(), v );
+ }
+
+ template<typename V>
+ void do_check(V & v) // This is needed for operator[]
+ {
+ using namespace checking::constants;
+ typedef typename checking::deduce_check<V>::type tag;
+ checking::do_check( tag(), v );
+ }
+
+}// container
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/deduce_check.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/deduce_check.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,86 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHECKING_DEDUCE_TAG_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_DEDUCE_TAG_ER_2010_HPP
+#include <boost/assign/v2/detail/type_traits/container/is_fifo.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_lifo.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_map.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_sorted.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_static_array.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_range.hpp>
+#include <boost/assign/v2/detail/mpl/switch.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace switch_tag{
+ struct deduce_check{};
+}// switch_tag
+namespace mpl{
+
+ template<>
+ struct case_<switch_tag::deduce_check,0> :
+ v2::mpl::wrap<
+ v2::container_tag::fifo,
+ v2::container_type_traits::is_fifo
+ >{};
+
+ template<>
+ struct case_<switch_tag::deduce_check,1> :
+ v2::mpl::wrap<
+ v2::container_tag::lifo,
+ v2::container_type_traits::is_lifo
+ >{};
+
+ template<>
+ struct case_<switch_tag::deduce_check,2> :
+ v2::mpl::wrap<
+ v2::container_tag::map,
+ v2::container_type_traits::is_map
+ >{};
+
+ template<>
+ struct case_<switch_tag::deduce_check,3> :
+ v2::mpl::wrap<
+ v2::container_tag::sorted,
+ v2::container_type_traits::is_sorted
+ >{};
+
+ template<>
+ struct case_<switch_tag::deduce_check,4> :
+ v2::mpl::wrap<
+ v2::container_tag::static_array,
+ v2::container_type_traits::is_static_array
+ >{};
+
+
+ template<>
+ struct case_<switch_tag::deduce_check,5> :
+ v2::mpl::wrap<
+ container_tag::range
+ >{};
+
+
+}// mpl
+namespace checking{
+
+ template<typename T>
+ struct deduce_check : v2::mpl::switch_<
+ v2::switch_tag::deduce_check,
+ T
+ >
+ {};
+
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/fifo.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/fifo.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,42 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHECKING_FIFO_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_FIFO_ER_2010_HPP
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_fifo.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+
+ template<typename V>
+ void do_check(container_tag::fifo,V const & v1)
+ {
+ V v = v1;
+ using namespace constants;
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.front() , a ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.front() , b ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.front() , c ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.front() , d ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.front() , e ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.front() , f ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.front() , g ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.front() , h ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.empty() , true);
+ }
+
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/iterator.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,63 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHECKING_ITERATOR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_ITERATOR_ER_2010_HPP
+#include <boost/next_prior.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+namespace iterator{
+
+ template<typename It>
+ void do_check(It it)
+ {
+ namespace ns = checking::constants;
+ ns::do_check(
+ *boost::next( it, 0 ),
+ *boost::next( it, 1 ),
+ *boost::next( it, 2 ),
+ *boost::next( it, 3 ),
+ *boost::next( it, 4 ),
+ *boost::next( it, 5 ),
+ *boost::next( it, 6 ),
+ *boost::next( it, 7 )
+ );
+ }
+
+namespace sorted{
+
+ template<typename It>
+ void do_check(It it)
+ {
+ namespace ns = checking::constants::sorted;
+ ns::do_check(
+ *boost::next( it, 0 ),
+ *boost::next( it, 1 ),
+ *boost::next( it, 2 ),
+ *boost::next( it, 3 ),
+ *boost::next( it, 4 ),
+ *boost::next( it, 5 ),
+ *boost::next( it, 6 ),
+ *boost::next( it, 7 )
+ );
+ }
+
+}// sorted
+}// iterator
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/lifo.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/lifo.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,42 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHECKING_LIFO_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_LIFO_ER_2010_HPP
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_lifo.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+
+ template<typename V>
+ void do_check(container_tag::lifo,V const& v1)
+ {
+ using namespace checking::constants;
+ V v = v1;
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.top() , h ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.top() , g ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.top() , f ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.top() , e ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.top() , d ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.top() , c ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.top() , b ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.top() , a ); v.pop();
+ BOOST_ASSIGN_V2_CHECK_EQUAL( v.empty() , true );
+ }
+
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/map.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/map.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,63 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHECKING_MAP_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_MAP_ER_2010_HPP
+#include <boost/range/begin.hpp>
+#include <boost/utility.hpp>
+
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_map.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+
+ // Assumes
+ // map[ a ] = a; ...; map[ h ] = h;
+ template<typename V>
+ void do_check(container_tag::map, V & map) // non-const due to operator[]
+ {
+ { // Key
+ using namespace checking::constants::sorted;
+ do_check(
+ boost::next( boost::begin( map ), 0 )->first,
+ boost::next( boost::begin( map ), 1 )->first,
+ boost::next( boost::begin( map ), 2 )->first,
+ boost::next( boost::begin( map ), 3 )->first,
+ boost::next( boost::begin( map ), 4 )->first,
+ boost::next( boost::begin( map ), 5 )->first,
+ boost::next( boost::begin( map ), 6 )->first,
+ boost::next( boost::begin( map ), 7 )->first
+ );
+ }
+ { // Data
+ using namespace checking::constants;
+ do_check(
+ map[ a ],
+ map[ b ],
+ map[ c ],
+ map[ d ],
+ map[ e ],
+ map[ f ],
+ map[ g ],
+ map[ h ]
+ );
+
+ }
+ }
+
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/range.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/range.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,52 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CHECKING_RANGE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_RANGE_ER_2010_HPP
+#include <boost/next_prior.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_range.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_sorted.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+#include <boost/assign/v2/detail/checking/iterator.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+
+ template<typename R>
+ void do_check(container_tag::range, R const& r)
+ {
+ namespace ns = checking::iterator;
+ ns::do_check( boost::begin( r ) );
+ BOOST_ASSIGN_V2_CHECK_EQUAL(
+ boost::next( boost::begin( r ), 8 ),
+ boost::end( r )
+ );
+ }
+
+ template<typename R>
+ void do_check(container_tag::sorted, R const& r)
+ {
+ namespace ns = checking::iterator::sorted;
+ ns::do_check( boost::begin( r ) );
+ BOOST_ASSIGN_V2_CHECK_EQUAL(
+ boost::next( boost::begin( r ), 8 ) ,
+ boost::end( r )
+ );
+ }
+
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/checking/relational_op.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/checking/relational_op.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_CHECKING_RELATIONAL_OP_ER_2010_HPP
+#define BOOST_ASSIGN_V2_CHECKING_RELATIONAL_OP_ER_2010_HPP
+#include <boost/array.hpp>
+#include <boost/assign/v2/detail/checking/constants.hpp>
+#include <boost/assign/v2/detail/checking/check_equal.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace checking{
+namespace relational_op{
+
+ // R must derive from relational_op_aux::crtp<> and r contain the checking
+ // constants.
+ template<typename R>
+ void do_check(R const& r)
+ {
+ typedef boost::array<int,8> ar_;
+ ar_ ar;
+ {
+ using namespace constants;
+ ar[0] = a; ar[1] = b; ar[2] = c;
+ ar[3] = d; ar[4] = e; ar[5] = f;
+ ar[6] = g; ar[7] = h;
+ }
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar == r), true );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar != r), false );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar < r), false );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar > r), false );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar <= r), true );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar >= r), true );
+ ++ar[2];
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar == r), false );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar != r), true );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar < r), false );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar > r), true );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar <= r), false );
+ BOOST_ASSIGN_V2_CHECK_EQUAL( (ar >= r), true );
+
+ }
+
+}// relational_op
+}// checking
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/config/arity_bound.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/config/arity_bound.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/mpl/limits/arity.hpp>
+
+// Default upper bound on the arity of function and functors
+//#ifndef BOOST_ASSIGN_V2_ARITY_BOUND
+//#define BOOST_ASSIGN_V2_ARITY_BOUND\
+// BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)\
+/**/
+//#endif
+
+//#if BOOST_ASSIGN_V2_ARITY_BOUND > BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
+//#error
+// This is required, at least, by /ref/fusion_matrix/container.hpp
+//#endif
+

Added: sandbox/statistics/support/boost/assign/v2/detail/config/borland_workaround.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/config/borland_workaround.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,9 @@
+
+// Maybe needed for unit testing
+
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+# pragma warn -8091 // supress warning in Boost.Test
+# pragma warn -8057 // unused argument argc/argv in Boost.Test
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/config/enable_cpp0x.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/config/enable_cpp0x.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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) //
+////////////////////////////////////////////////////////////////////////////
+#include <boost/preprocessor/logical/and.hpp>
+#ifndef BOOST_ASSIGN_V2_ENABLE_CPP0X
+#if __GNUC__ && __GXX_EXPERIMENTAL_CXX0X__
+#define BOOST_ASSIGN_V2_ENABLE_CPP0X 1
+#else
+#define BOOST_ASSIGN_V2_ENABLE_CPP0X 0
+#endif
+#endif
+
+// -- TODO add check for MSVC when support for variadic template becomes
+// available
+//
+// -- In principle this is more portable,
+// #include <boost/preprocessor/logical/bool.hpp>
+// #define BOOST_ASSIGN_V2_ENABLE_CPP0X \
+// BOOST_PP_BOOL(__cplusplus > 199711L) \
+// /**/
+// but GCC is non-conformant.
+//
+// -- Sources:
+// http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html#Common-Predefined-Macros
+// http://www2.research.att.com/~bs/C++0xFAQ.html
+// http://msdn.microsoft.com/en-us/library/dd465215.aspx

Added: sandbox/statistics/support/boost/assign/v2/detail/config/limit_arity.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/config/limit_arity.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,33 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/mpl/limits/arity.hpp>
+
+#ifndef BOOST_ASSIGN_V2_LIMIT_ARITY
+#define BOOST_ASSIGN_V2_LIMIT_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#endif
+
+#if BOOST_ASSIGN_V2_LIMIT_ARITY_BOUND > BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#error
+// This is required for a metafunction class that returns the result type of a
+// functors.
+#endif
+
+// Functors are by default overloaded as follows:
+//
+// n = BOOST_ASSIGN_V2_LIMIT_ARITY
+// Overload | Arity
+// -------------------------------------
+// f() | 0
+// f(x[0]) | 1
+// f(x[0], x[1]) | 2
+// ...
+// f(x[0], ...., x[n-1]) | n
+

Added: sandbox/statistics/support/boost/assign/v2/detail/config/limit_csv_arity.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/config/limit_csv_arity.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,13 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_LIMIT_CSV_ARITY
+#define BOOST_ASSIGN_V2_LIMIT_CSV_ARITY 20
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/config/limit_lvalue_const_arity.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/config/limit_lvalue_const_arity.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,25 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/mpl/limits/arity.hpp>
+
+#ifndef BOOST_ASSIGN_V2_LIMIT_LVALUE_CONST_ARITY
+#define BOOST_ASSIGN_V2_LIMIT_LVALUE_CONST_ARITY 2
+#endif
+
+// This constant defines the maximum arity for which functors are overloaded
+// for any combination of lvalue and const under C++03 (the restriction does
+// not apply to C++0x). Be warned, therefore, that the number of function
+// overloads increases geometrically with this number.
+
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#if BOOST_ASSIGN_V2_LIMIT_LVALUE_CONST_ARITY > BOOST_ASSIGN_V2_LIMIT_ARITY
+#error
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/detail.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/detail.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,25 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_DETAIL_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_DETAIL_ER_2010_HPP
+
+#include <boost/assign/v2/detail/checking/checking.hpp>
+#include <boost/assign/v2/detail/functor/functor.hpp>
+#include <boost/assign/v2/detail/fwd/fwd.hpp>
+#include <boost/assign/v2/detail/keyword/keyword.hpp>
+#include <boost/assign/v2/detail/mpl/mpl.hpp>
+#include <boost/assign/v2/detail/relational_op/relational_op.hpp>
+#include <boost/assign/v2/detail/type_traits/type_traits.hpp>
+
+// Don't include
+// /checking/checking.hpp
+// /config/config
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/functor/constructor.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/functor/constructor.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,93 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUNCTOR_CONSTRUCTOR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_FUNCTOR_CONSTRUCTOR_ER_2010_HPP
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/range/reference.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/mpl/always.hpp>
+#include <boost/assign/v2/detail/type_traits/container/value.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace functor_aux{
+
+ template<typename T>
+ class constructor : public functor_aux::crtp_unary_and_up<
+ functor_aux::constructor<T>,
+ boost::mpl::always<T>
+ >
+ {
+ typedef functor_aux::constructor<T> this_;
+ typedef boost::mpl::always<T> meta_result_;
+ typedef functor_aux::crtp_unary_and_up<this_, meta_result_> super_;
+
+ public:
+
+ constructor(){}
+
+ T operator()()const{ return T(); }
+
+ using super_::operator();
+
+#define MACRO(z,N,data) \
+ template<BOOST_PP_ENUM_PARAMS(N,typename T)> \
+ T impl( BOOST_PP_ENUM_BINARY_PARAMS(N, T, &_) )const{ \
+ return T( BOOST_PP_ENUM_PARAMS(N,_) ); \
+ } \
+/**/
+BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ MACRO,
+ ~
+)
+#undef MACRO
+
+ };
+
+ template<typename V>
+ struct deduce_constructor
+ {
+ typedef typename container_type_traits::value<V>::type value_;
+ typedef functor_aux::constructor<value_> type;
+ static type call(){ return functor_aux::constructor<value_>(); }
+ };
+
+
+}// functor_aux
+namespace result_of{
+
+ template<typename T>
+ struct constructor
+ {
+ typedef functor_aux::constructor<T> type;
+ };
+
+}// result_of
+
+ template<typename T>
+ typename result_of::constructor<T>::type
+ constructor()
+ {
+ typedef typename result_of::constructor<T>::type result_;
+ return result_();
+ }
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/functor/crtp_unary_and_up.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,148 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUNCTOR_CRTP_UNARY_AND_UP_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_FUNCTOR_CRTP_UNARY_AND_UP_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/seq/for_each_product.hpp>
+#include <boost/preprocessor/seq/first_n.hpp>
+
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/detail/config/limit_lvalue_const_arity.hpp>
+#include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
+#include <boost/assign/v2/detail/pp/args.hpp>
+#include <boost/assign/v2/detail/pp/params.hpp>
+#include <boost/assign/v2/detail/pp/seq.hpp>
+
+#ifndef BOOST_ASSIGN_V2_ENABLE_CPP0X
+#error
+#endif
+
+#if BOOST_ASSIGN_V2_ENABLE_CPP0X
+#include <boost/mpl/detail/variadic_vector.hpp>
+#endif
+
+// Notation:
+// m = BOOST_ASSIGN_V2_LIMIT_LVALUE_CONST_ARITY
+// n = BOOST_ASSIGN_V2_LIMIT_ARITY
+//
+// Given a metafunction class, F, and a derived class, D, that defines
+// template<typename T0, ..., typename Tk>
+// typename apply1<F, mpl::vector<T0,...,Tk> >::type
+// impl(T0& , ..., Tk&)const;
+// for k = 0, ..., n-1, crtp<F,D> defines, under C++03, a set of overloaded
+// operator()'s, each forwarding to impl(), for each combination of lvalues and
+// const arguments for k = 0, ..., m-1, and either only lvalues or only const
+// for k = m, ..., n-1. Under C++0x, operator() forwards to impl() for any
+// combination of lvalues and const and k = 0,...,n-1.
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace functor_aux{
+
+ template<typename D,typename F>
+ class crtp_unary_and_up
+ {
+ protected:
+
+ D& derived(){ return static_cast<D&>(*this); }
+ D const& derived()const{ return static_cast<D const&>(*this); }
+
+ public:
+
+#if BOOST_ASSIGN_V2_ENABLE_CPP0X
+ template<typename T0,typename...Args>
+ typename boost::mpl::apply1<
+ F,
+ typename boost::mpl::detail::variadic_vector<T0, Args...>::type
+ >::type
+ operator()(T0&& t0, Args&&...args)const{
+ return this->derived().template impl<T0, Args...>(t0, args...);
+ }
+#else
+
+#define MACRO1(r, SeqU) \
+ template<BOOST_ASSIGN_V2_decl_params(SeqU)> \
+ typename boost::mpl::apply1< \
+ F, \
+ boost::mpl::vector<BOOST_ASSIGN_V2_params(SeqU)> \
+ >::type \
+ operator()( BOOST_ASSIGN_V2_decl_args(SeqU) )const{ \
+ return this->derived().template impl<BOOST_ASSIGN_V2_params(SeqU)>( \
+ BOOST_ASSIGN_V2_args(SeqU) \
+ ); \
+ } \
+/**/
+
+
+#define MACRO2(z, n, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT(\
+ MACRO1, \
+ BOOST_PP_SEQ_FIRST_N(BOOST_PP_INC(n), BOOST_ASSIGN_V2_SEQ)\
+) \
+/**/
+BOOST_PP_REPEAT(
+ BOOST_ASSIGN_V2_LIMIT_LVALUE_CONST_ARITY,
+ MACRO2,
+ ~
+)
+
+#undef MACRO1
+#undef MACRO2
+
+#define MACRO(z, N, data) \
+ template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
+ typename boost::mpl::apply1< \
+ F, \
+ boost::mpl::vector<BOOST_PP_ENUM_PARAMS(N, T)> \
+ >::type \
+ operator()( BOOST_PP_ENUM_BINARY_PARAMS(N, T, &_) )const{ \
+ return this->derived().template impl< \
+ BOOST_PP_ENUM_PARAMS(N, T) \
+ >( BOOST_PP_ENUM_PARAMS(N, _) ); \
+ } \
+ \
+ template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
+ typename boost::mpl::apply1< \
+ F, \
+ boost::mpl::vector<BOOST_PP_ENUM_PARAMS(N, const T)> \
+ >::type \
+ operator()( BOOST_PP_ENUM_BINARY_PARAMS(N, T, const &_) )const{ \
+ return this->derived().template impl< \
+ BOOST_PP_ENUM_PARAMS(N, const T) \
+ >( BOOST_PP_ENUM_PARAMS(N, _) ); \
+ } \
+/**/
+
+BOOST_PP_REPEAT_FROM_TO(
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_LVALUE_CONST_ARITY),
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ MACRO,
+ ~
+)
+#undef MACRO
+
+#endif // #if BOOST_ASSIGN_V2_ENABLE_CPP0X
+
+ };
+
+}// functor_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/functor/functor.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/functor/functor.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,18 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUNCTOR_FUNCTOR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_FUNCTOR_FUNCTOR_ER_2010_HPP
+
+#include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
+#include <boost/assign/v2/detail/functor/constructor.hpp>
+#include <boost/assign/v2/detail/functor/identity.hpp>
+#include <boost/assign/v2/detail/functor/new.hpp>
+
+#endif
\ No newline at end of file

Added: sandbox/statistics/support/boost/assign/v2/detail/functor/identity.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/functor/identity.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,72 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUNCTOR_IDENTITY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_FUNCTOR_IDENTITY_ER_2010_HPP
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace functor_aux{
+
+ struct result_of_identity{
+
+ template<typename V>
+ struct is_ok : boost::mpl::equal_to<
+ boost::mpl::int_<1>,
+ boost::mpl::size<V>
+ >{};
+
+ template<typename V>
+ struct enable
+ {
+ typedef typename boost::mpl::at_c<V,0>::type t_;
+ typedef typename boost::add_reference<t_>::type type;
+ };
+
+ template<typename V>
+ struct disable{};
+
+ template<typename V>
+ struct apply : boost::mpl::eval_if<
+ is_ok<V>,
+ enable<V>,
+ disable<V>
+ >{};
+
+ };
+
+ struct identity : functor_aux::crtp_unary_and_up<
+ functor_aux::identity,
+ functor_aux::result_of_identity
+ >
+ {
+ identity(){}
+
+ template<typename T> T& impl(T& t)const{ return t; }
+ template<typename T> T const& impl(T const& t)const{ return t; }
+
+ };
+
+}// functor_aux
+namespace{
+ functor_aux::identity const _identity = functor_aux::identity();
+}
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/functor/new.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/functor/new.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,129 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUNCTOR_NEW_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_FUNCTOR_NEW_ER_2010_HPP
+#include <memory>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/range/reference.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/mpl/always.hpp>
+#include <boost/assign/v2/detail/type_traits/container/value.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace functor_aux{
+
+ template<typename T>
+ class new_ : public functor_aux::crtp_unary_and_up<
+ functor_aux::new_<T>,
+ boost::mpl::always<T*>
+ >
+ {
+ typedef T* ptr_;
+ typedef functor_aux::new_<T> this_;
+ typedef boost::mpl::always< ptr_ > meta_result_;
+ typedef functor_aux::crtp_unary_and_up<this_, meta_result_> super_;
+
+ public:
+
+ typedef ptr_ result_type;
+
+ new_(){}
+
+ result_type operator()()const{ return new T(); }
+
+ using super_::operator();
+
+#define MACRO(z, N, data) \
+ template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
+ result_type impl( BOOST_PP_ENUM_BINARY_PARAMS(N, T, &_) )const{ \
+ return new T( BOOST_PP_ENUM_PARAMS(N, _) ); \
+ } \
+/**/
+BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ MACRO,
+ ~
+)
+#undef MACRO
+
+ };
+
+ template<typename V>
+ struct deduce_new_
+ {
+ typedef typename container_type_traits::value<V>::type value_;
+ typedef functor_aux::new_<value_> type;
+ static type call(){ return functor_aux::new_<value_>(); }
+ };
+
+// --- For testing only --- // TODO remove foo from this file.
+
+struct foo
+{
+ int i;
+
+ foo() : i(0)
+ { }
+ foo( int i ) : i(i)
+ { }
+ foo( int i, int ) : i(i)
+ { }
+ foo( const char*, int i, int ) : i(i)
+ { }
+
+ virtual ~foo()
+ { }
+};
+
+struct foo_bar : foo
+{
+ foo_bar( int i ) : foo(i)
+ { }
+
+ foo_bar( int i, const char* )
+ { }
+};
+
+inline bool operator<( const foo& l, const foo& r )
+{
+ return l.i < r.i;
+}
+
+}// functor_aux
+namespace result_of{
+
+ template<typename T>
+ struct new_
+ {
+ typedef functor_aux::new_<T> type;
+ };
+
+}// result_of
+
+ template<typename T>
+ typename result_of::new_<T>::type
+ new_()
+ {
+ typedef typename result_of::new_<T>::type result_;
+ return result_();
+ }
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/fwd/container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/fwd/container.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_FWD_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_FWD_CONTAINER_ER_2010_HPP
+
+
+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

Added: sandbox/statistics/support/boost/assign/v2/detail/fwd/fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/fwd/fwd.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_FWD_FWD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_FWD_FWD_ER_2010_HPP
+
+#include <boost/assign/v2/detail/fwd/container.hpp>
+#include <boost/assign/v2/detail/fwd/ptr_container.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/fwd/ptr_container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/fwd/ptr_container.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,98 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FWD_PTR_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_FWD_PTR_CONTAINER_ER_2010_HPP
+
+namespace boost{
+
+ template
+ <
+ class T,
+ 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

Added: sandbox/statistics/support/boost/assign/v2/detail/keyword/keyword.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/keyword/keyword.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_KEYWORD_KEYWORD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_KEYWORD_KEYWORD_ER_2010_HPP
+
+#include <boost/assign/v2/detail/keyword/nil.hpp>
+#include <boost/assign/v2/detail/keyword/unwrap.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/keyword/nil.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/keyword/nil.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_NIL_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_KEYWORD_NIL_ER_2010_HPP
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace keyword_aux{ struct nil{}; }
+namespace{
+ const keyword_aux::nil _nil = keyword_aux::nil();
+}
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/keyword/unwrap.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/keyword/unwrap.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,28 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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

Added: sandbox/statistics/support/boost/assign/v2/detail/mpl/always.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/mpl/always.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,39 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_MPL_ALWAYS_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_MPL_ALWAYS_ER_2010_HPP
+#include <boost/mpl/always.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace mpl{
+
+ // This is a variant of mpl::always that is also nullary.
+
+ template<typename T>
+ struct always : boost::mpl::always<T>{};
+
+}// mpl
+}// v2
+}// assign
+namespace mpl{
+
+ template<typename T>
+ struct apply0<
+ assign::v2::mpl::always<T>
+ > : boost::mpl::identity<T>{};
+
+}// mpl
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/mpl/mpl.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/mpl/mpl.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_MPL_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_MPL_ER_2010_HPP
+
+#include <boost/assign/v2/detail/mpl/always.hpp>
+#include <boost/assign/v2/detail/mpl/switch.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/mpl/switch.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/mpl/switch.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,73 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_MPL_SWITCH_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_MPL_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 mpl{
+
+ // 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 wrap_default_f : boost::mpl::true_{};
+
+ template<typename Tag, template<typename> class F = wrap_default_f>
+ struct wrap
+ {
+ typedef Tag tag;
+ template<typename T> struct apply : F<T>
+ {
+ // Is Tag compatible with T? Answer : F<T>::value.
+ };
+ };
+
+ template<typename W>
+ struct extract_tag
+ {
+ typedef typename W::tag type;
+ };
+
+ template<typename SwitchTag, typename T, int k = 0>
+ struct switch_ : boost::mpl::eval_if<
+ boost::mpl::apply1<
+ v2::mpl::case_<SwitchTag, k>,
+ T
+ >,
+ v2::mpl::extract_tag<
+ v2::mpl::case_<SwitchTag, k>
+ >,
+ v2::mpl::switch_<
+ SwitchTag,
+ T,
+ k + 1
+ >
+ >{};
+
+}// mpl
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/mpl/uniform_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/mpl/uniform_vector.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_DETAIL_MPL_UNIFORM_VECTOR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_MPL_UNIFORM_VECTOR_ER_2010_HPP
+#include <boost/mpl/vector/vector0.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/push_back.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace mpl{
+namespace uniform_vector_aux{
+
+ template<std::size_t N,typename Seq, typename T>
+ struct cont : cont<
+ N-1,
+ typename boost::mpl::push_back<
+ Seq,
+ T
+ >::type,
+ T
+ >{};
+
+ template<typename Seq,typename T>
+ struct cont<0, Seq, T>{
+ typedef Seq type;
+ };
+
+}// uniform_vector_aux
+
+template<std::size_t N, typename T>
+struct uniform_vector : uniform_vector_aux::cont<
+ N,
+ boost::mpl::vector0<>,
+ T
+>{};
+
+}// mpl
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/pp/args.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/pp/args.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,27 @@
+////////////////////////////////////////////////////////////////////////////
+// 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_args
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/comma_if.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/seq/for_each_i.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+#define BOOST_ASSIGN_V2_decl_args_iter(r, data, i, U) \
+ BOOST_PP_COMMA_IF(i) \
+ U & \
+ BOOST_PP_CAT(data, i) \
+/**/
+#define BOOST_ASSIGN_V2_decl_args(SeqU) \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_ASSIGN_V2_decl_args_iter, _, SeqU) \
+/**/
+#define BOOST_ASSIGN_V2_args(SeqU) \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(SeqU), _)
+/**/
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/pp/params.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/pp/params.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_params
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/seq/enum.hpp>
+#define BOOST_ASSIGN_V2_decl_params(SeqU) \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(SeqU), typename T)\
+/**/
+#define BOOST_ASSIGN_V2_params(SeqU) BOOST_PP_SEQ_ENUM(SeqU)
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/pp/seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/pp/seq.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,13 @@
+////////////////////////////////////////////////////////////////////////////
+// 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_SEQ
+#include <boost/preprocessor/tuple/to_seq.hpp>
+#define BOOST_ASSIGN_V2_SEQ BOOST_PP_TUPLE_TO_SEQ(10,((T0 const)(T0),(T1 const)(T1),(T2 const)(T2),(T3 const)(T3),(T4 const)(T4),(T5 const)(T5),(T6 const)(T6),(T7 const)(T7),(T8 const)(T8),(T9 const)(T9)))
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/relational_op/crtp.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/relational_op/crtp.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,105 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_RELATIONAL_OP_CRTP_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_RELATIONAL_OP_CRTP_ER_2010_HPP
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_base_of.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace relational_op_aux{
+
+// A solution with 3 overloads was proposed here.
+// http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/389d8fe278ef0b13#
+// 2 overloads seem to suffice, however, as implemented below.
+
+ struct base{};
+
+ // D must implement:
+ // template<typename T> bool equal_to(const T&)const;
+ // template<typename T> bool less_than(const T&)const;
+ template<typename D>
+ struct crtp{// : base{
+
+ D const& derived()const{ return static_cast<D const&>(*this); }
+
+ };
+
+ template<typename T>
+ struct is_relational : boost::is_base_of<crtp<T>,T>{};
+
+ template< typename A ,typename B>
+ typename boost::disable_if<
+ relational_op_aux::is_relational<A>,
+// boost::is_base_of<base,A>,
+ bool
+ >::type
+ operator==( A const& a, crtp< B > const& b)
+ {
+ return b.derived().equal_to( a );
+ }
+
+ template< typename A ,typename B>
+ bool operator==( crtp< A > const& a, B const& b )
+ {
+ return b == a;
+ }
+
+ template< typename A ,typename B>
+ typename boost::disable_if<
+// boost::is_base_of<base,A>,
+ relational_op_aux::is_relational<A>,
+ bool
+ >::type
+ operator<( A const& a, crtp< B > const& b)
+ {
+ return ! ( (a == b) || (b < a) );
+ }
+
+ template< typename A ,typename B>
+ bool operator<( crtp< A > const& a, B const& b )
+ {
+ return a.derived().less_than( b );
+ }
+
+ // Deduced
+
+#define MACRO(symb,expr)\
+ template< typename A ,typename B> \
+ typename boost::disable_if< \
+ boost::is_base_of<base,A>, \
+ bool \
+ >::type \
+ operator symb ( A const& a, crtp< B > const& b) \
+ { \
+ return expr; \
+ } \
+ \
+ template< typename A ,typename B> \
+ bool operator symb ( crtp< A > const& a, B const& b ) \
+ { \
+ return expr; \
+ } \
+/**/
+
+ MACRO( !=, !(a == b) )
+ MACRO( <=, (a < b) || (a == b) )
+ MACRO( >, !(a <= b) )
+ MACRO( >=, (a > b) || (a == b) )
+
+#undef MACRO
+
+}// relational_op_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/relational_op/relational_op.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/relational_op/relational_op.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_DETAIL_RELATIONAL_OP_RELATIONAL_OP_ER_2010_HPP
+#define BOOST_ASSIGN_V2_DETAIL_RELATIONAL_OP_RELATIONAL_OP_ER_2010_HPP
+
+#include <boost/assign/v2/detail/relational_op/crtp.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/container.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_CONTAINER_CONTAINER_ER_2010_HPP
+
+#include <boost/assign/v2/detail/type_traits/container/has_push.hpp>
+#include <boost/assign/v2/detail/type_traits/container/has_static_size.hpp>
+#include <boost/assign/v2/detail/type_traits/container/forward_to_value.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_associative.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_fifo.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_lifo.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_map.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_range.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_set.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_sorted.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_static_array.hpp>
+#include <boost/assign/v2/detail/type_traits/container/ptr_to_value.hpp>
+#include <boost/assign/v2/detail/type_traits/container/ptr_to_value_container.hpp>
+#include <boost/assign/v2/detail/type_traits/container/static_size.hpp>
+#include <boost/assign/v2/detail/type_traits/container/value.hpp>
+#include <boost/assign/v2/detail/type_traits/container/value_container.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/forward_to_value.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/forward_to_value.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,30 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_TYPE_TRAITS_CONTAINER_FWD_TO_VALUE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_CONTAINER_FWD_TO_VALUE_ER_2010_HPP
+#include <boost/assign/v2/detail/type_traits/container/value_container.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_type_traits{
+
+
+ template<template<typename T> class F,typename V>
+ struct forward_to_value: F<
+ typename value_container<V>::type
+ >{};
+
+}// container_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/has_push.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/has_push.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,58 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_TYPE_TRAITS_CONTAINER_HAS_PUSH_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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/type_traits/container/value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_type_traits{
+
+
+ template<typename V,typename T
+ = typename container_type_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_type_traits::has_push<V>{};
+
+}// container_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif
+

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/has_static_size.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/has_static_size.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_HAS_STATIC_SIZE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_associative.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_associative.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_IS_ASSOCIATIVE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_CONTAINER_IS_ASSOCIATIVE_ER_2010_HPP
+#include <boost/mpl/or.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_map.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_set.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct associative{};
+}// container_tag
+namespace container_type_traits{
+
+ template<typename V>
+ struct is_associative : boost::mpl::or_<
+ container_type_traits::is_set<V>,
+ container_type_traits::is_map<V>
+ >{};
+
+}// container_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_fifo.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_fifo.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_IS_FIFO_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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/type_traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/type_traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct fifo{};
+}// container_tag
+namespace container_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_lifo.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_lifo.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_IS_LIFO_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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/type_traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/type_traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct lifo{};
+}// container_tag
+namespace container_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_map.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_IS_MAP_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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/type_traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/type_traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct map{};
+}// container_tag
+namespace container_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_ptr_container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_ptr_container.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_IS_PTR_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_CONTAINER_IS_PTR_CONTAINER_ER_2010_HPP
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/assign/v2/detail/type_traits/container/ptr_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_type_traits{
+
+ template<typename V>
+ struct is_ptr_container : ptr_to_value<V>::is_applicable{};
+
+}// container_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_range.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_range.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_IS_RANGE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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_type_traits{
+
+ template<typename V>
+ struct is_range{
+ // purposedly left blank.
+ };
+
+}// container_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_set.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_IS_SET_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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/type_traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/type_traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct set{};
+}// container_tag
+namespace container_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_sorted.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_sorted.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_IS_SORTED_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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/type_traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_tag{
+ struct sorted{};
+}// container_tag
+namespace container_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_static_array.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/is_static_array.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_IS_STATIC_ARRAY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_CONTAINER_IS_STATIC_ARRAY_ER_2010_HPP
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/assign/v2/detail/type_traits/container/has_static_size.hpp>
+#include <boost/assign/v2/detail/type_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_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif
\ No newline at end of file

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/ptr_to_value.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/ptr_to_value.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_PTR_TO_VALUE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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/type_traits/container/static_size.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_type_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_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/ptr_to_value_container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/ptr_to_value_container.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_PTR_TO_VALUE_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_CONTAINER_PTR_TO_VALUE_CONTAINER_ER_2010_HPP
+#include <boost/assign/v2/detail/type_traits/container/is_ptr_container.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_type_traits{
+
+ template<typename V>
+ struct ptr_to_value_container{
+ typedef typename ptr_to_value<V>::container_type type;
+ };
+
+}// container_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/static_size.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/static_size.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_STATIC_SIZE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/value.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/value.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_VALUE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_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/type_traits/value.hpp>
+#include <boost/assign/v2/detail/type_traits/container/forward_to_value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/value_container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/container/value_container.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_CONTAINER_VALUE_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_CONTAINER_VALUE_CONTAINER_ER_2010_HPP
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/type_traits/container/ptr_to_value_container.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace container_type_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_type_traits
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/decay.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/decay.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_DECAY_OF_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_DECAY_OF_ER_2010_HPP
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/decay.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace type_traits{
+
+ // Add constness to array parameters
+ // 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/type_traits/has_value_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/has_value_type.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_HAS_VALUE_TYPE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_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/type_traits/is_stl_pair.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/is_stl_pair.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_IS_STL_PAIR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_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/type_traits/meta_convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/meta_convert.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_HAS_VALUE_TYPE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_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/type_traits/same_remove_cv.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/same_remove_cv.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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/type_traits/type_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/type_traits.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,20 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_TYPE_TRAITS_TYPE_TRAITS_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_TYPE_TRAITS_ER_2010_HPP
+
+#include <boost/assign/v2/detail/type_traits/decay.hpp>
+#include <boost/assign/v2/detail/type_traits/has_value_type.hpp>
+#include <boost/assign/v2/detail/type_traits/is_stl_pair.hpp>
+#include <boost/assign/v2/detail/type_traits/meta_convert.hpp>
+#include <boost/assign/v2/detail/type_traits/value.hpp>
+#include <boost/assign/v2/detail/type_traits/container/container.hpp>
+
+#endif
\ No newline at end of file

Added: sandbox/statistics/support/boost/assign/v2/detail/type_traits/value.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/detail/type_traits/value.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_TYPE_TRAITS_VALUE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_TYPE_TRAITS_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

Added: sandbox/statistics/support/boost/assign/v2/put/compose/common/common.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/common/common.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_COMPOSE_COMMON_COMMON_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_COMMON_COMMON_ER_2010_HPP
+
+#include <boost/assign/v2/put/compose/common/common.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/common/forward_parameter.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/common/forward_parameter.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,93 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COMPOSE_FORWARD_PARAMETER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_FORWARD_PARAMETER_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/fold.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/assign/v2/put/generic/result_of_modulo.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_compose_aux{
+
+ template<std::size_t N,typename Pars, typename T,
+ bool exit = (N == boost::mpl::size<Pars>::value)>
+ struct result_of_forward_parameter
+ {
+ typedef typename boost::mpl::at_c<Pars, N>::type at_;
+ typedef result_of_modulo::generic<T> meta_;
+ typedef typename boost::mpl::apply1<
+ meta_,
+ at_
+ >::type new_t_;
+
+ typedef result_of_forward_parameter<N+1, Pars, new_t_> next_;
+
+ typedef typename next_::type type;
+
+ template<typename H>
+ static type call(H const& pars_holder, T const& t)
+ {
+ typedef boost::mpl::int_<N> int_;
+ return next_::call(
+ pars_holder,
+ t % pars_holder.static_lookup( int_() )
+ );
+ }
+
+ };
+
+ template<std::size_t N,typename Pars, typename T>
+ struct result_of_forward_parameter<N, Pars, T, true>
+ {
+
+ typedef T type;
+
+ template<typename H>
+ static type call(H const& pars_holder, T const& t)
+ {
+ return t;
+ }
+
+ };
+
+ template<typename Pars, typename T,typename C>
+ typename result_of_forward_parameter<0, Pars, T>::type
+ forward_parameter(
+ T const& object,
+ C const& c
+ )
+ {
+ typedef result_of_forward_parameter<0, Pars, T> caller_;
+ return caller_::call( c.parameters(), object );
+ }
+
+}// put_compose_aux
+namespace result_of{
+
+ template<typename T,typename Pars>
+ struct forward_parameter : put_compose_aux::result_of_forward_parameter<
+ 0,
+ Pars,
+ T
+ >{};
+
+}// result_of
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/compose.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/compose.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_COMPOSE_COMPOSE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_COMPOSE_ER_2010_HPP
+
+#include <boost/assign/v2/put/compose/common/common.hpp>
+#include <boost/assign/v2/put/compose/functor/functor.hpp>
+#include <boost/assign/v2/put/compose/csv/csv.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/csv/composer.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/csv/composer.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,137 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COMPOSE_CSV_COMPOSER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_CSV_COMPOSER_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/push_back.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/mpl/aux_/na.hpp>
+#include <boost/mpl/vector/vector0.hpp>
+#include <boost/assign/v2/detail/config/limit_csv_arity.hpp>
+#include <boost/assign/v2/ref/anon/csv/assign_copy.hpp>
+#include <boost/assign/v2/ref/fusion/nth_result_of.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <boost/assign/v2/put/compose/csv/held.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace put_compose_csv_aux{
+
+ template<typename Pars = boost::mpl::vector0<> >
+ class composer
+ {
+
+ typedef boost::use_default tag2_;
+ typedef v2::ref::assign_copy::nth_result_of::fusion<tag2_> meta1_;
+
+ public:
+
+ BOOST_STATIC_CONSTANT(
+ std::size_t,
+ static_parameters_size = boost::mpl::size<Pars>::value
+ );
+
+ typedef typename boost::mpl::apply1<meta1_, Pars>::type pars_cont_type;
+
+ composer(){}
+ explicit composer(pars_cont_type const& p) : pars_cont( p ){}
+
+ template<typename T>
+ struct modulo_result
+ {
+ typedef typename boost::mpl::push_back<
+ Pars,
+ T const
+ >::type new_;
+ typedef composer<new_> type;
+ };
+
+ template<typename T>
+ typename modulo_result<T>::type
+ operator%(T const& t)const
+ {
+ typedef typename modulo_result<T>::type result_;
+ return result_( this->pars_cont( t ) );
+ }
+
+ template<std::size_t N, typename U = boost::mpl::na>
+ struct result{
+ typedef put_compose_csv_aux::held<Pars, N, U> type;
+ };
+
+ typename result<0>::type
+ operator()()const
+ {
+ typedef typename result<0>::type result_;
+ namespace ns = ref::assign_copy;
+ return result_(
+ *this,
+ ns::csv_anon( _nil )
+ );
+ }
+
+#define MACRO1(N, U)\
+ namespace ns = ref::assign_copy;\
+ return result_( \
+ this->pars_cont, \
+ ns::csv_anon<U>( BOOST_PP_ENUM_PARAMS(N, _) ) \
+ );\
+/**/
+
+#define MACRO2(z, N, data)\
+ template<typename T>\
+ typename result<N, T>::type\
+ operator()( BOOST_PP_ENUM_PARAMS(N, T &_) )const \
+ { \
+ typedef typename result<N, T>::type result_;\
+ MACRO1( N, T )\
+ } \
+ template<typename T>\
+ typename result<N, T const>::type\
+ operator()( BOOST_PP_ENUM_PARAMS(N, T const &_) )const \
+ { \
+ typedef typename result<N, T const>::type result_;\
+ MACRO1( N, T const )\
+ } \
+/**/
+
+BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY),
+ MACRO2,
+ ~
+)
+#undef MACRO1
+#undef MACRO2
+
+ protected:
+ pars_cont_type pars_cont;
+
+ };
+
+}// put_compose_csv_aux
+namespace adaptor{
+namespace{
+ put_compose_csv_aux::composer<> const _csv_put
+ = put_compose_csv_aux::composer<>();
+}
+}// adaptor
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/csv/csv.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/csv/csv.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,18 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COMPOSE_CSV_CSV_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_CSV_CSV_ER_2010_HPP
+
+#include <boost/assign/v2/put/compose/csv/held.hpp>
+#include <boost/assign/v2/put/compose/csv/composer.hpp>
+#include <boost/assign/v2/put/compose/csv/forward_seq_arg.hpp>
+#include <boost/assign/v2/put/compose/csv/sub.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/csv/forward_seq_arg.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/csv/forward_seq_arg.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,67 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COMPOSE_FORWARD_SEQ_ARG_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_FORWARD_SEQ_ARG_ER_2010_HPP
+#include <algorithm>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/assign/v2/put/compose/csv/held.hpp>
+#include <boost/assign/v2/ref/wrapper/framework.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_compose_csv_aux{
+
+ template<typename O>
+ class arg_forwarder : ref::wrapper<ref::assign_tag::copy, O const>
+ {
+ typedef ref::assign_tag::copy assign_tag_;
+ typedef ref::wrapper<assign_tag_, O const> super_t;
+
+ public:
+
+ arg_forwarder(){}
+ arg_forwarder(O const& object)
+ :super_t( object ){}
+
+ template<typename T>
+ void operator()(T& t)const
+ {
+ this->unwrap()( t );
+ }
+ template<typename T>
+ void operator()(T const& t)const
+ {
+ this->unwrap()( t );
+ }
+
+ };
+
+ template<typename O, typename Pars, std::size_t N, typename U>
+ void forward_seq_arg(O const& object, held<Pars, N, U> const& h)
+ {
+ typedef arg_forwarder<O> forwarder_;
+ forwarder_ f( object );
+ std::for_each(
+ boost::begin( h.sequence_arg() ),
+ boost::end( h.sequence_arg() ),
+ f
+ );
+
+ }
+
+}// put_compose_csv_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/csv/held.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/csv/held.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_COMPOSE_CSV_HELD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_CSV_HELD_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/assign/v2/ref/anon/csv/assign_copy.hpp>
+#include <boost/assign/v2/ref/fusion/assign_copy.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace put_compose_csv_aux{
+
+ template<typename Pars, std::size_t N, typename U>
+ struct held
+ {
+ typedef boost::use_default tag2_;
+ typedef v2::ref::assign_copy::nth_result_of::fusion<tag2_> meta1_;
+ typedef typename boost::mpl::apply1<meta1_, Pars>::type pars_cont_type;
+ typedef typename v2::ref::assign_copy::nth_result_of::csv_anon<
+ N,
+ U
+ >::type seq_arg_cont_type;
+
+ held(){}
+ held(pars_cont_type const& p, seq_arg_cont_type const& s)
+ : pars_cont( p ), seq_arg( s ){}
+
+ pars_cont_type const& parameters()const
+ {
+ return this->pars_cont;
+ }
+
+ seq_arg_cont_type const& sequence_arg()const
+ {
+ return this->seq_arg;
+ }
+ seq_arg_cont_type& sequence_arg()
+ {
+ return this->seq_arg;
+ }
+
+ protected:
+ pars_cont_type pars_cont;
+ seq_arg_cont_type seq_arg;
+
+ };
+
+}// put_compose_csv_aux
+}// v2
+}// assign
+}// boost
+
+#endif
+

Added: sandbox/statistics/support/boost/assign/v2/put/compose/csv/sub.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/csv/sub.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,39 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COMPOSE_CSV_SUB_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_CSV_SUB_ER_2010_HPP
+#include <boost/assign/v2/put/compose/common/forward_parameter.hpp>
+#include <boost/assign/v2/put/compose/csv/forward_seq_arg.hpp>
+#include <boost/assign/v2/put/compose/csv/held.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_compose_csv_aux{
+
+ template<typename V, typename Pars, std::size_t N, typename U>
+ V& operator|(
+ V& v,
+ put_compose_csv_aux::held<Pars, N, U> const& c
+ )
+ {
+ put_compose_csv_aux::forward_seq_arg(
+ put_compose_aux::forward_parameter<Pars>( put( v ), c ),
+ c
+ );
+ return v;
+ }
+
+}// put_compose_csv_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/functor/composer.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/functor/composer.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,209 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COMPOSE_COMPOSER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_COMPOSER_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/seq/for_each_product.hpp>
+#include <boost/preprocessor/seq/first_n.hpp>
+
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/lambda.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/mpl/push_back.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/mpl/vector/vector0.hpp>
+#include <boost/mpl/vector/vector10.hpp>
+#include <boost/mpl/vector.hpp>
+
+#include <boost/config.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/detail/pp/args.hpp>
+#include <boost/assign/v2/detail/pp/params.hpp>
+#include <boost/assign/v2/detail/pp/seq.hpp>
+
+#include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
+#include <boost/assign/v2/ref/fusion/assign_copy.hpp>
+#include <boost/assign/v2/ref/fusion_matrix/container.hpp>
+#include <boost/assign/v2/ref/fusion_matrix/nth_result_of.hpp>
+#include <boost/assign/v2/put/compose/tag.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace put_compose_aux{
+
+ template<
+ typename Pars = boost::mpl::vector0<>,
+ typename SeqArgs = boost::mpl::vector0<>,
+ bool enable_pars = (boost::mpl::size<SeqArgs>::value == 0)
+ >
+ class composer;
+
+ template<typename Pars, typename SeqArgs, bool enable_pars>
+ struct composer_result
+ {
+ template<typename Args>
+ struct apply
+ {
+ typedef typename boost::mpl::push_back<
+ SeqArgs,
+ Args
+ >::type new_;
+ typedef composer<Pars, new_> type;
+ };
+ };
+
+
+ template<typename Pars, typename SeqArgs, bool enable_pars>
+ class composer
+ : public functor_aux::crtp_unary_and_up<
+ composer<Pars, SeqArgs, enable_pars>,
+ composer_result<Pars, SeqArgs, enable_pars>
+ >
+ {
+ typedef boost::use_default tag2_;
+ typedef v2::ref::assign_copy::nth_result_of::fusion<tag2_> meta1_;
+ typedef ref::assign_tag::copy tag1_;
+ typedef ref::nth_result_of::fusion_matrix<
+ tag1_,
+ boost::use_default
+ > meta2_;
+
+ typedef functor_aux::crtp_unary_and_up<
+ composer,
+ composer_result<Pars, SeqArgs, enable_pars>
+ > super_t;
+
+ public:
+
+ BOOST_STATIC_CONSTANT(
+ std::size_t,
+ static_parameters_size = boost::mpl::size<Pars>::value
+ );
+
+ BOOST_STATIC_CONSTANT(
+ std::size_t,
+ static_sequence_args_size = boost::mpl::size<SeqArgs>::value
+ );
+
+ typedef typename boost::mpl::apply1<meta1_, Pars>::type pars_cont_type;
+ typedef typename boost::mpl::apply1<
+ meta2_,
+ SeqArgs
+ >::type seq_args_cont_type;
+
+ composer(){}
+ composer(
+ pars_cont_type const& p,
+ seq_args_cont_type const& s
+ )
+ : pars_cont( p ),
+ seq_args_cont( s ){}
+
+ template<typename T>
+ struct modulo_result
+ {
+ typedef typename boost::mpl::push_back<
+ Pars,
+ T const
+ >::type new_;
+ typedef composer<new_, SeqArgs> type;
+ };
+
+ template<typename T>
+ typename boost::lazy_enable_if_c<
+ enable_pars,
+ modulo_result<T>
+ >::type
+ operator%(T const& t)const
+ {
+ typedef typename modulo_result<T>::type result_;
+ return result_( this->pars_cont( t ), this->seq_args_cont );
+ }
+
+ template<typename Args>
+ struct result : boost::mpl::apply1<
+ composer_result<Pars, SeqArgs, enable_pars>,
+ Args
+ >
+ {};
+
+ using super_t::operator();
+
+ typename result<
+ boost::mpl::vector0<>
+ >::type
+ operator()()const
+ {
+ typedef boost::mpl::vector0<> args_;
+ typedef typename result<args_>::type result_;
+ return result_( this->pars_cont, this->seq_args_cont() );
+ }
+
+#define MACRO1( z, n, data ) \
+ ( BOOST_PP_CAT(_,n) ) \
+/**/
+
+#define MACRO2(z, N1, data) \
+ template<BOOST_PP_ENUM_PARAMS(N1, typename U)> \
+ typename result< \
+ boost::mpl::vector<BOOST_PP_ENUM_PARAMS(N1, U)> \
+ >::type \
+ impl( BOOST_PP_ENUM_BINARY_PARAMS(N1, U, &_) )const{ \
+ typedef boost::mpl::vector<BOOST_PP_ENUM_PARAMS(N1, U)> args_; \
+ typedef typename result<args_>::type result_; \
+ return result_( \
+ this->pars_cont, \
+ this->seq_args_cont( BOOST_PP_ENUM_PARAMS(N1, _) ) \
+ ); \
+ } \
+/**/
+BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ MACRO2,
+ ~
+)
+#undef MACRO1
+#undef MACRO2
+
+ pars_cont_type const& parameters()const{
+ return this->pars_cont;
+ }
+ seq_args_cont_type const& sequence_args()const{
+ return this->seq_args_cont;
+ }
+
+ protected:
+
+ pars_cont_type pars_cont;
+ seq_args_cont_type seq_args_cont;
+
+ };
+
+}// put_compose_aux
+namespace adaptor{
+namespace{
+ put_compose_aux::composer<> const _put = put_compose_aux::composer<>();
+}
+}// adaptor
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/functor/forward_args.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/functor/forward_args.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,125 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COMPOSE_FORWARD_ARGS_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_FORWARD_ARGS_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/control/expr_if.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#include <boost/mpl/aux_/na.hpp>
+#include <boost/mpl/int.hpp>
+
+//#include <boost/assign/v2/detail/keyword/default.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/ref/fusion_matrix/container.hpp>
+#include <boost/assign/v2/ref/wrapper/framework.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_compose_aux{
+
+ template<
+ std::size_t N, typename L,typename Tag1, typename Tag2,
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ typename T,
+ boost::mpl::na
+ )
+ >
+ class args : ref::wrapper<
+ ref::assign_tag::copy,
+ ref::fusion_matrix_aux::container<N, L, Tag1, Tag2,
+ BOOST_PP_ENUM_PARAMS(BOOST_ASSIGN_V2_LIMIT_ARITY, T)
+ > const
+ >
+ {
+ typedef ref::fusion_matrix_aux::container<N, L, Tag1, Tag2,
+ BOOST_PP_ENUM_PARAMS(BOOST_ASSIGN_V2_LIMIT_ARITY, T)
+ > value_;
+ typedef ref::assign_tag::copy assign_tag_;
+ typedef ref::wrapper<assign_tag_, value_ const> super_t;
+
+ public:
+
+ args(){};
+
+ args(value_ const& v) : super_t( v ){}
+
+ value_ const& value()const{ return this->unwrap(); }
+
+ };
+
+ template<
+ std::size_t N, typename L,typename Tag1, typename Tag2,
+ BOOST_PP_ENUM_PARAMS(BOOST_ASSIGN_V2_LIMIT_ARITY, typename T)
+ >
+ args<N, L, Tag1, Tag2,
+ BOOST_PP_ENUM_PARAMS(BOOST_ASSIGN_V2_LIMIT_ARITY, T)
+ >
+ make_args(
+ ref::fusion_matrix_aux::container<N,L,Tag1, Tag2,
+ BOOST_PP_ENUM_PARAMS(BOOST_ASSIGN_V2_LIMIT_ARITY, T)
+ > const& v
+ ){
+ typedef args<N,L,Tag1, Tag2,
+ BOOST_PP_ENUM_PARAMS(BOOST_ASSIGN_V2_LIMIT_ARITY, T)
+ > result_;
+ return result_( v );
+ }
+
+#define MACRO1(z, n, data) \
+ BOOST_PP_COMMA_IF(n)\
+ input.value().static_column(\
+ boost::mpl::int_<n>()\
+ )\
+/**/
+
+#define MACRO2(z, K, data)\
+ template<\
+ typename O,\
+ std::size_t N, typename L,typename Tag1, typename Tag2\
+ BOOST_PP_ENUM_TRAILING_PARAMS(K, typename T)\
+ >\
+ O const&\
+ forward_args(\
+ O const& object,\
+ put_compose_aux::args<N, L, Tag1, Tag2 \
+ BOOST_PP_ENUM_TRAILING_PARAMS(K, T)\
+ > const& input\
+ )\
+ {\
+ return object(\
+ BOOST_PP_REPEAT(K, MACRO1, ~)\
+ );\
+ }\
+/**/
+
+
+BOOST_PP_REPEAT(
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ MACRO2,
+ ~
+)
+
+#undef MACRO1
+#undef MACRO2
+
+}// put_compose_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/functor/forward_seq_args.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/functor/forward_seq_args.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,63 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COMPOSE_FORWARD_SEQ_ARGS_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_FORWARD_SEQ_ARGS_ER_2010_HPP
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/assign/v2/put/compose/functor/forward_args.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_compose_aux{
+
+ template<std::size_t I, std::size_t N, bool exit = (I == N)>
+ struct forward_seq_args_caller
+ {
+
+ template<typename T,typename H>
+ static void call(T const& object, H const& h)
+ {
+ typedef boost::mpl::int_<I> index_;
+ forward_args(
+ object,
+ put_compose_aux::make_args(
+ h.sequence_args().static_row( index_() )
+ )
+ );
+ typedef forward_seq_args_caller<I+1, N> next_;
+ next_::call( object, h );
+ }
+
+ };
+
+ template<std::size_t I, std::size_t N>
+ struct forward_seq_args_caller<I, N, true>
+ {
+ template<typename T, typename H>
+ static void call(T const& object, H const& h){}
+ };
+
+ template<typename T, typename H>
+ void forward_seq_args(T const& object, H const& h)
+ {
+ typedef put_compose_aux::forward_seq_args_caller<
+ 0,
+ H::static_sequence_args_size
+ > caller_;
+ caller_::call( object, h );
+ }
+
+}// put_compose_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/functor/functor.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/functor/functor.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,18 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COMPOSE_FUNCTOR_FUNCTOR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_FUNCTOR_FUNCTOR_ER_2010_HPP
+
+#include <boost/assign/v2/put/compose/functor/composer.hpp>
+#include <boost/assign/v2/put/compose/functor/forward_args.hpp>
+#include <boost/assign/v2/put/compose/functor/forward_seq_args.hpp>
+#include <boost/assign/v2/put/compose/functor/sub.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/functor/sub.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/functor/sub.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_COMPOSE_SUB_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_SUB_ER_2010_HPP
+#include <boost/assign/v2/put/sub/make.hpp>
+#include <boost/assign/v2/put/generic/generic.hpp>
+#include <boost/assign/v2/put/compose/common/forward_parameter.hpp>
+#include <boost/assign/v2/put/compose/functor/composer.hpp>
+#include <boost/assign/v2/put/compose/functor/forward_seq_args.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_compose_aux{
+
+ template<typename V, typename Pars, typename SeqArgs, bool enable_pars>
+ V& operator|(
+ V& v,
+ put_compose_aux::composer<Pars, SeqArgs, enable_pars> const& c
+ )
+ {
+ forward_seq_args(
+ put_compose_aux::forward_parameter<Pars>(
+ put( v ),
+ c
+ ),
+ c
+ );
+ return v;
+ }
+
+}// put_compose_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/compose/tag.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/compose/tag.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,25 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COMPOSE_TAG_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_COMPOSE_TAG_ER_2010_HPP
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_compose_aux{
+
+ struct compose_tag{};
+
+}// put_compose_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/generic/base.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/base.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,25 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_GENERIC_BASE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_GENERIC_BASE_ER_2010_HPP
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ struct put_base{};
+
+}// put_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/generic/crtp.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/crtp.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,187 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_GENERIC_CRTP_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_GENERIC_CRTP_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repeat_from_to.hpp>
+#include <boost/mpl/always.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/range/reference.hpp>
+
+#include <boost/assign/v2/detail/config/limit_csv_arity.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_ptr_container.hpp>
+#include <boost/assign/v2/detail/functor/functor.hpp>
+#include <boost/assign/v2/detail/keyword/keyword.hpp>
+#include <boost/assign/v2/detail/config/enable_cpp0x.hpp>
+
+#include <boost/assign/v2/put/modifier/modifier.hpp>
+#include <boost/assign/v2/put/generic/result_of_modulo.hpp>
+#include <boost/assign/v2/put/generic/expose_modifier.hpp>
+#include <boost/assign/v2/put/generic/expose_fun.hpp>
+#include <boost/assign/v2/put/generic/base.hpp>
+
+// --------------- //
+// Usage //
+// --------------- //
+// Calling
+// put( v )( a )()( c0, c11 );
+//
+// ----- csv syntax ------
+//
+// put( v )( a )( T() )( T(c0, c11) );
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ // T = container_type_traits::value<V>::type
+ template<typename V>
+ struct crtp_traits
+ {
+ typedef typename v2::container_type_traits::value<V>::type value_type;
+ typedef typename boost::mpl::eval_if<
+ container_type_traits::is_ptr_container<V>,
+ functor_aux::deduce_new_<V>,
+ functor_aux::deduce_constructor<V>
+ >::type functor_type;
+ typedef typename put_aux::deduce_modifier<V>::type modifier_tag;
+
+ };
+
+ // Requirements:
+ // d.unwrap() returns a reference to V&
+ // D d(U v, F const& f); Constructs an object, d, of type D.
+ // Usually, f is passed to the crtp. U = V& or V const& depending on need.
+ // Traits are deprecated but a use may be find in the future.
+ template<typename V,typename F, typename Tag, typename D, typename Traits>
+ class crtp :
+ public put_base,
+ public put_aux::expose_fun<F>, // protect + friend?
+ public put_aux::expose_modifier<Tag>, // protect + friend?
+ public functor_aux::crtp_unary_and_up<
+ crtp<V, F, Tag, D, Traits>,
+ boost::mpl::always< D const& >
+ >
+ {
+
+ public:
+ typedef D const& result_type;
+
+ protected:
+
+ typedef functor_aux::crtp_unary_and_up<
+ crtp,
+ boost::mpl::always<result_type>
+ > super_t;
+
+ typedef expose_modifier<Tag> expose_modifier_;
+ typedef typename expose_modifier_::modifier_type modifier_;
+ typedef expose_fun<F> expose_fun_;
+
+ public:
+
+ D & derived(){ return static_cast<D&>(*this); }
+ D const& derived()const{ return static_cast<D const&>(*this); }
+
+ //public:
+
+ crtp(){}
+ explicit crtp( F const& f ) : expose_fun_( f ){}
+ explicit crtp( F const& f, modifier_ const& m )
+ : expose_fun_( f ), expose_modifier_( m ){}
+
+ using super_t::operator();
+ result_type operator()()const
+ {
+ return this->arg_deduct( this->fun() );
+ }
+
+#define BOOST_ASSIGN_V2_impl(z, N, data) \
+ template<BOOST_PP_ENUM_PARAMS(N, typename T)> \
+ result_type \
+ impl( BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _) )const \
+ { \
+ return this->arg_deduct( this->fun(BOOST_PP_ENUM_PARAMS(N,_)) ); \
+ } \
+/**/
+BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ BOOST_ASSIGN_V2_impl,
+ ~
+)
+#undef BOOST_ASSIGN_V2_impl
+
+ V& unwrap()const{ return this->derived().unwrap(); }
+
+ struct result_of_modulo{
+
+ struct deduce
+ {
+ typedef functor_aux::deduce_constructor<V> caller_;
+ typedef typename caller_::type cons_;
+ typedef typename boost::mpl::apply1<
+ v2::result_of_modulo::new_fun<D>,
+ cons_
+ >::type type;
+ };
+
+ };
+
+ typename result_of_modulo::deduce::type
+ modulo_deduce()const
+ {
+ typedef functor_aux::deduce_constructor<V> caller_;
+ typedef typename caller_::type cons_;
+ typedef typename result_of_modulo::deduce::type result_;
+ return result_(
+ this->derived().unwrap(),
+ caller_::call()
+ );
+ }
+
+ protected:
+
+ template<typename T>
+ result_type arg_deduct(T* t)const
+ {
+ this->modifier.impl( this->derived().unwrap(), t );
+ return this->derived();
+ }
+
+ template<typename T>
+ result_type arg_deduct(T& t)const
+ {
+ this->modifier.impl( this->derived().unwrap(), t );
+ return this->derived();
+ }
+
+ template<typename T>
+ result_type arg_deduct(T const& t)const
+ {
+ this->modifier.impl( this->derived().unwrap(), t );
+ return this->derived();
+ }
+ };
+
+}// put_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/generic/expose_fun.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/expose_fun.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_GENERIC_HOLD_FUN_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_GENERIC_HOLD_FUN_ER_2010_HPP
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename F>
+ struct expose_fun{
+
+ typedef F fun_type;
+
+ expose_fun(){}
+ expose_fun(fun_type const& f) : fun( f ){}
+
+ fun_type fun;
+
+ };
+
+
+}// put_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/generic/expose_modifier.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/expose_modifier.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,39 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_GENERIC_HOLD_MODIFIER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_GENERIC_HOLD_MODIFIER_ER_2010_HPP
+#include <boost/assign/v2/put/modifier/def.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename Tag>
+ struct expose_modifier{
+
+ typedef Tag modifier_tag;
+ typedef put_aux::modifier<Tag> modifier_type;
+
+ expose_modifier(){}
+ expose_modifier(modifier_type const& m) : modifier( m ){}
+
+ typedef put_aux::modifier<Tag> modifier_;
+
+ modifier_type modifier;
+
+ };
+
+}// put_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/generic/generic.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/generic.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,20 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_GENERIC_GENERIC_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_GENERIC_GENERIC_ER_2010_HPP
+
+#include <boost/assign/v2/put/generic/crtp.hpp>
+#include <boost/assign/v2/put/generic/expose_fun.hpp>
+#include <boost/assign/v2/put/generic/expose_modifier.hpp>
+#include <boost/assign/v2/put/generic/new_fun.hpp>
+#include <boost/assign/v2/put/generic/new_modifier.hpp>
+#include <boost/assign/v2/put/generic/result_of_modulo.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/generic/new_fun.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/new_fun.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,65 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_GENERIC_NEW_FUN_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_GENERIC_NEW_FUN_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/void.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/assign/v2/put/generic/result_of_modulo.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename F>
+ struct new_fun
+ {
+
+ new_fun(const F& f) : value(f){}
+
+ F value;
+ };
+
+ template<typename T,typename F1>
+ typename boost::mpl::apply1<result_of_modulo::new_fun<T>, F1>::type
+ operator%(
+ T const& t,
+ put_aux::new_fun<F1> const& h
+ )
+ {
+ typedef typename boost::mpl::apply1<
+ result_of_modulo::new_fun<T>,
+ F1
+ >::type result_;
+ return result_( t.unwrap(), h.value, t.modifier );
+ }
+
+ struct kwd_fun{
+
+ template<typename F>
+ put_aux::new_fun<F>
+ operator=(F const& f)const
+ {
+ return put_aux::new_fun<F>( f );
+ }
+
+ };
+
+}// keyword_aux
+namespace{
+ const put_aux::kwd_fun _fun = put_aux::kwd_fun();
+}
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/generic/new_modifier.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/new_modifier.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,69 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_GENERIC_NEW_MODIFIER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_GENERIC_NEW_MODIFIER_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/void.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/assign/v2/put/generic/result_of_modulo.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename Tag> struct set_modifier
+ {
+
+ set_modifier(){}
+ set_modifier(Tag const& t) : modifier_tag( t ){}
+
+ Tag modifier_tag;
+ };
+
+ struct new_modifier
+ {
+
+ template<typename Tag>
+ set_modifier<Tag> operator=( Tag const& t)const
+ {
+ return set_modifier<Tag>( t );
+ }
+
+ };
+
+ template<typename T,typename NewTag>
+ typename boost::mpl::apply1<
+ v2::result_of_modulo::new_modifier<T>,
+ NewTag
+ >::type
+ operator%(
+ T const& t,
+ put_aux::set_modifier<NewTag> const& h
+ )
+ {
+ typedef typename boost::mpl::apply1<
+ v2::result_of_modulo::new_modifier<T>,
+ NewTag
+ >::type result_;
+ typedef put_aux::modifier<NewTag> modifier_;
+ return result_( t.unwrap(), t.fun, modifier_( h.modifier_tag ) );
+ }
+
+}// put_aux
+namespace{
+ put_aux::new_modifier const _modifier = put_aux::new_modifier();
+}
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/generic/result_of_modulo.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/generic/result_of_modulo.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,81 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_GENERIC_RESULT_OF_MODULO_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_GENERIC_RESULT_OF_MODULO_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/typeof/typeof.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace result_of_modulo{
+
+ template<typename T> struct new_fun{
+
+ template<typename F> struct apply{};
+
+ };
+
+ template<typename T> struct new_modifier{
+
+ template<typename Tag> struct apply{};
+
+ };
+ template<typename T> struct new_fun_modifier
+ {
+
+ template<typename F,typename Tag>
+ struct apply
+ {
+ typedef typename boost::mpl::apply1<
+ new_fun<T>,
+ F
+ >::type new_fun_;
+ typedef result_of_modulo::new_modifier<new_fun_> new_modifier_;
+ typedef typename boost::mpl::apply1<
+ new_modifier_,
+ Tag
+ >::type type;
+ };
+
+ };
+
+ template<typename T>
+ struct generic
+ {
+
+ template<typename P>
+ struct apply
+ {
+ static T t;
+ static P p;
+ typedef BOOST_TYPEOF_TPL( t % p ) type; // TODO workaround MSVC
+ };
+
+ };
+
+
+}// result_of_modulo
+
+/*
+ struct deduce
+ {
+ typedef functor_aux::deduce_constructor<V> caller_;
+ typedef typename caller_::type cons_;
+ typedef typename Traits::template new_fun<cons_>::type type;
+ };
+*/
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/at_next.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/at_next.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,52 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_MODIFIER_AT_NEXT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_AT_NEXT_ER_2010_HPP
+#include <boost/accumulators/framework/accumulator_base.hpp>
+#include <boost/assign/v2/put/modifier/def.hpp>
+#include <boost/assign/v2/put/generic/new_modifier.hpp>
+#include <boost/assign/v2/detail/type_traits/value.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace modifier_tag{ struct at_next{}; }
+namespace put_aux{
+
+ template<>
+ struct modifier<v2::modifier_tag::at_next>
+ {
+
+ modifier():i( 0 ){};
+ modifier( boost::accumulators::dont_care ):i( 0 ){}
+
+ template<typename V,typename T>
+ void impl(V& v, T& t)const{
+ v.at( i++ ) = t;
+ }
+
+ // TODO check
+ template<typename V,typename T>
+ void impl(V& v, T* t)const{ v.replace( i++ , t); }
+
+ private:
+ mutable std::size_t i;
+ };
+
+}// assign_aux
+
+ put_aux::set_modifier<modifier_tag::at_next> const
+ _at_next = ( _modifier = modifier_tag::at_next() );
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,99 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_MODIFIER_DEDUCE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_DEDUCE_ER_2010_HPP
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/mpl/identity.hpp>
+
+#include <boost/assign/v2/detail/mpl/switch.hpp>
+
+#include <boost/assign/v2/detail/type_traits/container/is_static_array.hpp>
+#include <boost/assign/v2/detail/type_traits/container/has_push.hpp>
+#include <boost/assign/v2/detail/type_traits/container/is_associative.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace switch_tag{
+ struct deduce_put{};
+}// switch_tag
+namespace modifier_tag{
+ struct at_next;
+ struct insert;
+ struct push;
+ struct push_back;
+}// modifier_tag
+namespace mpl{
+
+ template<>
+ struct case_<switch_tag::deduce_put,0> :
+ v2::mpl::wrap<
+ v2::modifier_tag::insert,
+ v2::container_type_traits::is_associative
+ >{};
+
+ template<>
+ struct case_<switch_tag::deduce_put,1> :
+ v2::mpl::wrap<
+ v2::modifier_tag::at_next,
+ v2::container_type_traits::is_static_array
+ >{};
+
+ template<>
+ struct case_<switch_tag::deduce_put,2> :
+ v2::mpl::wrap<
+ v2::modifier_tag::push,
+ container_type_traits::has_push_deduced_value
+ >{};
+
+ template<>
+ struct case_<switch_tag::deduce_put,3> :
+ v2::mpl::wrap<v2::modifier_tag::push_back>{};
+
+}// mpl
+namespace put_aux{
+
+ template<typename T>
+ struct deduce_modifier : v2::mpl::switch_<
+ v2::switch_tag::deduce_put,
+ T
+ >
+ {};
+
+ struct kwd_deduce{};
+
+ template<typename T>
+ typename T::result_of_modulo::deduce::type
+ operator%(
+ T const& t,
+ kwd_deduce const& kwd
+ )
+ {
+ return t.modulo_deduce();
+ }
+
+ template<typename Option1,typename Option2>
+ struct deduce : boost::mpl::eval_if<
+ boost::is_same<Option1, boost::use_default>,
+ boost::mpl::identity<Option2>,
+ boost::mpl::identity<Option1>
+ >{};
+
+}// put_aux
+namespace{
+ const put_aux::kwd_deduce _deduce = put_aux::kwd_deduce();
+}
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/def.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/def.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,38 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_MODIFIER_DEF_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_DEF_ER_2010_HPP
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace modifier_tag{
+ // add as necessary
+}
+namespace put_aux{
+
+ template<typename Tag>
+ struct modifier{
+
+ // Specialize on Tag:
+ // template<typename V,typename T>
+ // void impl(V& v,T& t)const;
+
+ // Warning: modifiers such as modifier<modifier_tag::at_next> have an
+ // internal state that affects impl()'s working.
+
+ };
+
+}// put_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/incr_lookup.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/incr_lookup.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,107 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_MODIFIER_INCR_LOOKUP_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_INCR_LOOKUP_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/accumulators/framework/accumulator_base.hpp>
+#include <boost/assign/v2/put/modifier/def.hpp>
+#include <boost/assign/v2/detail/type_traits/value.hpp>
+#include <boost/assign/v2/detail/functor/identity.hpp>
+#include <boost/assign/v2/put/generic/new_fun.hpp>
+#include <boost/assign/v2/put/generic/new_modifier.hpp>
+#include <boost/assign/v2/put/generic/result_of_modulo.hpp>
+
+// Warning : Not yet supported.
+// TODO fix compile errors using put adaptor.
+
+namespace boost{
+namespace assign{
+namespace v2{
+
+// lookup_key
+namespace modifier_tag{ struct incr_lookup{}; }
+namespace put_aux{
+
+ template<>
+ struct modifier<v2::modifier_tag::incr_lookup>
+ {
+
+ modifier():n( 0 ){}
+ modifier(std::size_t m):n( m ){};
+
+ template<typename V,typename T>
+ void impl(V& v, T& t)const{
+ v[ t ] += this->n;
+ }
+
+ private:
+ std::size_t n;
+ };
+
+ struct modulo_incr_lookup{
+
+ modulo_incr_lookup() : n( 1 ){}
+ modulo_incr_lookup(std::size_t m) : n( m ){}
+
+ modulo_incr_lookup
+ operator=(std::size_t m)const{
+ typedef modulo_incr_lookup result_;
+ return result_( m );
+ }
+
+ std::size_t n;
+ };
+
+}// put_aux
+namespace result_of_modulo{
+
+ template<typename T>
+ struct incr_lookup
+ {
+ typedef typename boost::mpl::apply2<
+ result_of_modulo::new_fun_modifier<T>,
+ functor_aux::identity,
+ v2::modifier_tag::incr_lookup
+ >::type type;
+
+ typedef v2::modifier_tag::incr_lookup new_tag_;
+ typedef put_aux::modifier<new_tag_> modifier_;
+
+ static type call(const T& t, put_aux::modulo_incr_lookup const& kwd)
+ {
+ return type( t.unwrap(), _identity, kwd.n );
+ }
+
+ };
+
+}// result_of_modulo
+namespace put_aux{
+
+ template<typename T>
+ typename result_of_modulo::incr_lookup<T>::type
+ operator%(
+ T const& t,
+ put_aux::modulo_incr_lookup const& kwd
+ )
+ {
+ typedef result_of_modulo::incr_lookup<T> caller_;
+ return caller_::call( t, kwd );
+ }
+
+}// put_aux
+namespace{
+ put_aux::modulo_incr_lookup const _incr_lookup
+ = put_aux::modulo_incr_lookup();
+}
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/insert.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/insert.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_MODIFIER_INSERT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_INSERT_ER_2010_HPP
+#include <boost/assign/v2/put/modifier/xxx.hpp>
+
+BOOST_ASSIGN_V2_PUT_MODIFIER_XXX(insert)
+
+#endif
\ No newline at end of file

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/keyword.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/keyword.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,11 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+
+// TODO delete file
\ No newline at end of file

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/modifier.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/modifier.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,22 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_MODIFIER_MODIFIER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_MODIFIER_ER_2010_HPP
+
+#include <boost/assign/v2/put/modifier/at_next.hpp>
+#include <boost/assign/v2/put/modifier/deduce.hpp>
+#include <boost/assign/v2/put/modifier/incr_lookup.hpp>
+#include <boost/assign/v2/put/modifier/insert.hpp>
+#include <boost/assign/v2/put/modifier/push.hpp>
+#include <boost/assign/v2/put/modifier/push_back.hpp>
+#include <boost/assign/v2/put/modifier/push_front.hpp>
+#include <boost/assign/v2/put/modifier/repeat.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/push.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/push.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_MODIFIER_PUSH_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_PUSH_ER_2010_HPP
+#include <boost/assign/v2/put/modifier/xxx.hpp>
+
+BOOST_ASSIGN_V2_PUT_MODIFIER_XXX(push)
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/push_back.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/push_back.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_MODIFIER_PUSH_BACK_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_PUSH_BACK_ER_2010_HPP
+#include <boost/assign/v2/put/modifier/xxx.hpp>
+
+BOOST_ASSIGN_V2_PUT_MODIFIER_XXX(push_back)
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/push_front.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/push_front.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_MODIFIER_PUSH_FRONT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_PUSH_FRONT_ER_2010_HPP
+#include <boost/assign/v2/put/modifier/xxx.hpp>
+
+BOOST_ASSIGN_V2_PUT_MODIFIER_XXX(push_front)
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/repeat.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/repeat.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,134 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_MODIFIER_REPEAT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_REPEAT_ER_2010_HPP
+#include <boost/type_traits/is_base_of.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/accumulators/framework/accumulator_base.hpp>
+#include <boost/assign/v2/put/modifier/def.hpp>
+#include <boost/assign/v2/put/generic/base.hpp>
+#include <boost/assign/v2/put/generic/new_modifier.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace modifier_tag{
+ template<typename Tag> struct repeat{};
+}// modifier_tag
+namespace put_aux{
+
+ template<typename Tag>
+ class modifier<v2::modifier_tag::repeat<Tag> > : v2::ref::wrapper<
+ v2::ref::assign_tag::copy,
+ std::size_t const
+ >
+ {
+ typedef modifier<Tag> inner_;
+ typedef v2::ref::wrapper<
+ v2::ref::assign_tag::copy,
+ std::size_t const
+ > super_t;
+
+ public:
+
+ typedef std::size_t size_type;
+
+ modifier(){}
+ explicit modifier( size_type const& n ):super_t( n ){};
+
+ template<typename V,typename T>
+ void impl(V& v, T& t)const{
+ size_type m = static_cast<super_t const&>(*this).unwrap();
+ while(m--) this->inner.impl( v, t );
+ }
+
+ private:
+ inner_ inner;
+ };
+
+ class modulo_repeat : v2::ref::wrapper<
+ v2::ref::assign_tag::copy,
+ std::size_t const
+ >
+ {
+ typedef v2::ref::wrapper<
+ v2::ref::assign_tag::copy,
+ std::size_t const
+ > super_t;
+
+ public:
+
+ typedef std::size_t size_type;
+
+ modulo_repeat(){}
+ modulo_repeat( size_type const& n) : super_t( n ){}
+
+ modulo_repeat operator=( size_type const& n)const
+ {
+ modulo_repeat result( n );
+ return result;
+ }
+
+ size_type const& unwrap()const
+ {
+ return static_cast<super_t const&>(*this).unwrap();
+ }
+
+ };
+
+}// put_aux
+namespace result_of_modulo{
+
+ template<typename T>
+ struct repeat
+ {
+ typedef typename T::modifier_tag old_tag_;
+ typedef v2::modifier_tag::repeat<old_tag_> new_tag_;
+ typedef put_aux::modifier<new_tag_> modifier_;
+ typedef typename boost::mpl::apply1<
+ result_of_modulo::new_modifier<T>,
+ new_tag_
+ >::type type;
+
+ static type call(const T& t, put_aux::modulo_repeat const& h)
+ {
+ modifier_ m( h.unwrap() );
+ return type( t.unwrap(), t.fun, m );
+ }
+
+ };
+
+}// result_of_modulo
+namespace put_aux{
+
+ template<typename T>
+ typename boost::lazy_enable_if<
+ boost::is_base_of<put_aux::put_base, T>,
+ result_of_modulo::repeat<T>
+ >::type
+ operator%(
+ T const& t,
+ put_aux::modulo_repeat const& h
+ )
+ {
+ typedef result_of_modulo::repeat<T> caller_;
+ return caller_::call( t, h );
+ }
+
+}// put_aux
+namespace{
+ put_aux::modulo_repeat const _repeat = put_aux::modulo_repeat();
+}
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/modifier/xxx.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/xxx.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,58 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_MODIFIER_XXX
+#include <boost/preprocessor/cat.hpp>
+#include <boost/accumulators/framework/accumulator_base.hpp>
+#include <boost/assign/v2/put/modifier/def.hpp>
+#include <boost/assign/v2/put/generic/new_modifier.hpp>
+
+#define BOOST_ASSIGN_V2_PUT_MODIFIER_XXX(FUN)\
+namespace boost{\
+namespace assign{\
+namespace v2{\
+namespace modifier_tag{ struct FUN{}; }\
+namespace put_aux{\
+\
+ template<>\
+ struct modifier<v2::modifier_tag::FUN>\
+ {\
+\
+ modifier(){}\
+ modifier( boost::accumulators::dont_care ){}\
+\
+ template<typename V, typename T>\
+ void impl(V& v, T& t)const{ v.FUN( t ); }\
+\
+ template<typename V, typename T>\
+ void impl(V& v, T* t)const{ v.FUN( t ); }\
+\
+ };\
+\
+}\
+namespace{\
+\
+ put_aux::set_modifier<v2::modifier_tag::FUN> const\
+ BOOST_PP_CAT(_,FUN) = ( \
+ _modifier = v2::modifier_tag::FUN() \
+ );\
+\
+}\
+}\
+}\
+}\
+/**/
+
+#endif
+
+/*
+
+*/
+
+

Added: sandbox/statistics/support/boost/assign/v2/put/put.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/put.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,19 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_PUT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_PUT_ER_2010_HPP
+
+#include <boost/assign/v2/put/compose/compose.hpp>
+#include <boost/assign/v2/put/generic/generic.hpp>
+#include <boost/assign/v2/put/modifier/modifier.hpp>
+#include <boost/assign/v2/put/range/range.hpp>
+#include <boost/assign/v2/put/sub/sub.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/range/adaptor.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/range/adaptor.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,58 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_RANGE_ADAPTOR_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_RANGE_ADAPTOR_ER_2010_HPP
+#include <boost/assign/v2/put/range/modifier/modifier.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_range_aux
+{
+ template<typename From>
+ struct adaptor1
+ {
+ adaptor1(From const& from):value(from){}
+ mutable From const& value;
+ private:
+ adaptor1();
+ };
+
+ struct adaptor2
+ {
+ adaptor2(){}
+ template<typename From>
+ adaptor1<From> operator()(const From& from)const
+ {
+ typedef adaptor1<From> result_;
+ return result_( from );
+ }
+ };
+
+ template<typename To,typename From>
+ To& operator|(To& to, put_range_aux::adaptor1<From> const& from)
+ {
+ typedef typename put_range_aux::deduce_operation<To>::type tag_;
+ put_range_aux::put_range( tag_(), from.value, to );
+ return to;
+ }
+
+}// put_range_aux
+namespace adaptor
+{
+ put_range_aux::adaptor2 const _put_range
+ = put_range_aux::adaptor2();
+
+}// adaptor
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,74 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_RANGE_CONVERT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_RANGE_CONVERT_ER_2010_HPP
+#include <boost/assign/v2/put/range/adaptor.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace convert_aux
+{
+ template<typename To>
+ struct adaptor
+ {
+ adaptor(){}
+ };
+
+ template<typename From,typename To>
+ To operator|(From& from, convert_aux::adaptor<To> const& dummy)
+ {
+ To to;
+ return to | v2::adaptor::_put_range( from );
+ }
+
+}// convert_aux
+namespace adaptor{
+
+ template<typename To>
+ convert_aux::adaptor<To> convert(){ return convert_aux::adaptor<To>(); }
+
+}// adaptor
+
+ template<typename To,typename From>
+ To convert(From const& from){
+ return from | adaptor::convert<To>();
+ }
+
+}// v2
+}// assign
+}// boost
+
+#endif
+
+// ------ CLASS MEMBER ---- //
+
+#ifndef BOOST_ASSIGN_V2_CONVERT_CONVERT_MF
+#define BOOST_ASSIGN_V2_CONVERT_CONVERT_MF \
+ template<typename To> \
+ To convert()const \
+ { \
+ namespace ns = boost::assign::v2; \
+ return (*this) | adaptor::convert<To>(); \
+ } \
+/**/
+#endif
+
+#ifndef BOOST_ASSIGN_V2_CONVERT_OPERATOR_MF
+#define BOOST_ASSIGN_V2_CONVERT_OPERATOR_MF \
+ template<typename To> \
+ operator To ()const \
+ { \
+ namespace ns = boost::assign::v2; \
+ return (*this) | adaptor::convert<To>(); \
+ } \
+/**/
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/range/modifier/copy.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/range/modifier/copy.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_RANGE_MODIFIER_COPY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_RANGE_MODIFIER_COPY_ER_2010_HPP
+#include <string>
+#include <stdexcept>
+#include <boost/throw_exception.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/size.hpp>
+#include <boost/range/algorithm/copy.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_range_tag
+{
+ struct copy{};
+}// convert_tag
+namespace put_range_aux{
+
+ template<typename From,typename To>
+ void put_range (put_range_tag::copy, From const& from, To& to)
+ {
+ if(boost::size( to ) < boost::size( from ) ){
+ typedef std::string str_;
+ const str_ str =
+ str_("convert<to>(")
+ + "convert_tag::copy, from)"
+ + "To::size() < boost::size( from )";
+ std::out_of_range e( str );
+ boost::throw_exception(e);
+ }
+ boost::copy( from, boost::begin( to ) );
+ }
+
+}// put_range_aux{
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/range/modifier/deduce.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/range/modifier/deduce.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,62 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_RANGE_MODIFIER_DEDUCE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_RANGE_MODIFIER_DEDUCE_ER_2010_HPP
+#include <boost/assign/v2/detail/type_traits/container/has_static_size.hpp>
+#include <boost/assign/v2/detail/type_traits/container/has_push.hpp>
+#include <boost/assign/v2/detail/mpl/switch.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace switch_tag{
+ struct put_range{};
+}// switch_tag
+namespace put_range_tag{
+ struct copy;
+ struct put;
+ struct range;
+}// put_range_tag
+namespace mpl{
+
+ template<>
+ struct case_<switch_tag::put_range,0> :
+ v2::mpl::wrap<
+ put_range_tag::put,
+ container_type_traits::has_push_deduced_value
+ >{};
+
+ template<>
+ struct case_<switch_tag::put_range,1> :
+ v2::mpl::wrap<
+ v2::put_range_tag::copy,
+ v2::container_type_traits::has_static_size
+ >{};
+
+ template<>
+ struct case_<switch_tag::put_range,2> :
+ v2::mpl::wrap<put_range_tag::range>{};
+
+}// mpl
+namespace put_range_aux
+{
+
+ template<typename T>
+ struct deduce_operation : v2::mpl::switch_<
+ v2::switch_tag::put_range,
+ T
+ >{};
+
+}// convert_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/range/modifier/modifier.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/range/modifier/modifier.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,18 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_RANGE_MODIFIER_MODIFIER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_RANGE_MODIFIER_MODIFIER_ER_2010_HPP
+
+#include <boost/assign/v2/put/range/modifier/put.hpp>
+#include <boost/assign/v2/put/range/modifier/copy.hpp>
+#include <boost/assign/v2/put/range/modifier/range.hpp>
+#include <boost/assign/v2/put/range/modifier/deduce.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/range/modifier/put.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/range/modifier/put.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,40 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_RANGE_MODIFIER_PUT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_RANGE_MODIFIER_PUT_ER_2010_HPP
+#include <boost/range/algorithm/for_each.hpp>
+//#include <boost/assign/v2/put/wrapper/make.hpp>
+#include <boost/assign/v2/put/sub/make.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_range_tag
+{
+ struct put{};
+}// convert_tag
+namespace put_range_aux{
+
+ template<typename From,typename To>
+ void put_range(
+ put_range_tag::put,
+ From const& from,
+ To& to
+ )
+ {
+ ::boost::for_each( from, put( to ) );
+ }
+
+}// put_range_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/range/modifier/range.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/range/modifier/range.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,39 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_RANGE_MODIFIER_RANGE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_RANGE_MODIFIER_RANGE_ER_2010_HPP
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_range_tag
+{
+ struct range{};
+}// convert_tag
+namespace put_range_aux{
+
+ template<typename From,typename To>
+ void put_range(
+ put_range_tag::range,
+ From const& from,
+ To& to
+ )
+ {
+ to = To( boost::begin( from ), boost::end( from ) );
+ }
+
+}// put_range_aux
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/range/range.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/range/range.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_PUT_RANGE_RANGE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_RANGE_RANGE_ER_2010_HPP
+#include <boost/assign/v2/put/range/adaptor.hpp>
+#include <boost/assign/v2/put/range/convert.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+
+ template<typename From,typename To>
+ To& put_range(From const& from, To& to)
+ {
+ return to | adaptor::_put_range( from );
+ }
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/sub/csv.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/sub/csv.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,88 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_SUB_CSV_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_SUB_CSV_ER_2010_HPP
+#include <boost/assign/v2/ref/wrapper/framework.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <boost/assign/v2/detail/type_traits/container/value.hpp>
+#include <boost/assign/v2/put/sub/make.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace csv_put_aux{
+
+ template<typename V>
+ class sub
+ : protected ref::wrapper<
+ ref::assign_tag::copy,
+ V
+ >
+ {
+
+ protected:
+
+ typedef ref::assign_tag::copy assign_tag_;
+ typedef ref::wrapper<assign_tag_,V> super1_t;
+
+ typedef typename v2::container_type_traits::value<V>::type value_type;
+
+ public:
+
+ sub(){}
+ explicit sub( V& v ) : super1_t( v ) {}
+
+#define MACRO1(z, i, data) ( BOOST_PP_CAT(_, i) )
+#define MACRO2(z, N, data)\
+ typename result_of::put<V>::type\
+ operator()( BOOST_PP_ENUM_PARAMS(N, value_type const & _) )\
+ {\
+ return put( this->unwrap() ) BOOST_PP_REPEAT(N, MACRO1, ~ );\
+ }\
+/**/
+BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY),
+ MACRO2,
+ ~
+)
+#undef MACRO1
+#undef MACRO2
+
+ V& unwrap()const{
+ return static_cast<super1_t const&>(*this).unwrap();
+ }
+
+ };
+
+}// csv_put_aux
+namespace result_of{
+
+ template<typename V>
+ struct csv_put
+ {
+ typedef csv_put_aux::sub<V> type;
+ };
+
+}// result_of
+
+ template<typename V>
+ typename result_of::csv_put<V>::type
+ csv_put( V& v )
+ {
+ typedef typename result_of::csv_put<V>::type result_;
+ return result_( v );
+ }
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/sub/make.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/sub/make.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,142 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_SUB_MAKE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_SUB_MAKE_ER_2010_HPP
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <boost/assign/v2/put/generic/crtp.hpp>
+#include <boost/assign/v2/put/generic/result_of_modulo.hpp>
+
+// Usage:
+// put( v ) % ( _modifier = Tag() );
+// put( v ) % ( _fun = F() );
+// put( v ) % ( _incr_lookup );
+// put( v ) % ( _repeat = n );
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace put_aux{
+
+ template<typename V,typename F, typename Tag> class sub;
+
+}// put_aux
+namespace result_of_modulo{
+
+ template<typename V,typename F,typename Tag>
+ struct new_fun<put_aux::sub<V,F,Tag> >
+ {
+
+ template<typename F1>
+ struct apply{ typedef put_aux::sub<V,F1,Tag> type; };
+
+ };
+
+ template<typename V,typename F,typename Tag>
+ struct new_modifier<put_aux::sub<V,F,Tag> >
+ {
+
+ template<typename NewTag>
+ struct apply{ typedef put_aux::sub<V,F,NewTag> type; };
+
+ };
+
+}//result_of_modulo
+namespace put_aux{
+
+ template<typename V,typename F, typename Tag> class sub;
+
+ template<typename V,typename F,typename Tag>
+ struct sub_modifier_traits
+ {};
+
+ template<typename V,typename F, typename Tag>
+ class sub
+ : protected ref::wrapper< // must be the first base.
+ ref::assign_tag::copy,
+ V
+ >,
+ public put_aux::crtp<
+ V,
+ F,
+ Tag,
+ sub<V,F,Tag>,
+ sub_modifier_traits<V,F,Tag>
+ >
+ {
+
+ typedef put_aux::crtp<
+ V,
+ F,
+ Tag,
+ sub<V,F,Tag>,
+ sub_modifier_traits<V,F,Tag>
+ > super2_t;
+
+ public:
+
+ typedef typename super2_t::result_type result_type;
+
+ protected:
+
+ typedef put_aux::modifier<Tag> modifier_;
+ typedef ref::assign_tag::copy assign_tag_;
+ typedef ref::wrapper<assign_tag_,V> super1_t;
+
+ public:
+
+ sub(){}
+ explicit sub( V& v ) : super1_t( v ) {}
+ explicit sub( V& v, F const& f )
+ : super1_t( v ), super2_t( f )
+ {
+ // This constructor is required by crtp
+ // when Tag or F is modified.
+ }
+
+ explicit sub( V& v, F const& f, modifier_ const& m )
+ : super1_t( v ), super2_t( f, m )
+ {
+ // This constructor is required by crtp
+ // when Tag or F is modified.
+ }
+
+ V& unwrap()const{
+ return static_cast<super1_t const&>(*this).unwrap();
+ }
+
+ };
+
+}// put_aux
+namespace result_of{
+
+ template<typename V>
+ struct put
+ {
+ typedef put_aux::crtp_traits<V> traits_;
+ typedef typename traits_::functor_type f_;
+ typedef typename traits_::modifier_tag modifier_tag_;
+ typedef put_aux::sub<V,f_,modifier_tag_> type;
+ };
+
+}// result_of
+
+ template<typename V>
+ typename result_of::put<V>::type
+ put( V& v )
+ {
+ typedef typename result_of::put<V>::type result_;
+ return result_( v );
+ }
+
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/put/sub/sub.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/sub/sub.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,8 @@
+#ifndef BOOST_ASSIGN_V2_PUT_SUB_SUB_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_SUB_SUB_ER_2010_HPP
+
+#include <boost/assign/v2/put/sub/make.hpp>
+#include <boost/assign/v2/put/sub/csv.hpp>
+
+#endif
+

Added: sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,3 @@
+
+
+// TODO delete file
\ No newline at end of file

Added: sandbox/statistics/support/boost/assign/v2/put/wrapper/make.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/wrapper/make.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,3 @@
+
+
+// TODO delete file
\ No newline at end of file

Added: sandbox/statistics/support/boost/assign/v2/put/wrapper/wrapper.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/put/wrapper/wrapper.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,18 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_WRAPPER_WRAPPER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_PUT_WRAPPER_WRAPPER_ER_2010_HPP
+
+// TODO delete file
+
+//#include <boost/assign/v2/put/wrapper/crtp.hpp>
+//#include <boost/assign/v2/put/wrapper/make.hpp>
+
+#endif
\ No newline at end of file

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/anon.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/anon.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_ANON_ANON_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_ANON_ANON_ER_2010_HPP
+
+#include <boost/assign/v2/ref/anon/unary/unary.hpp>
+#include <boost/assign/v2/ref/anon/csv/csv.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_copy.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_copy.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,19 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_ANON_CSV_ASSIGN_COPY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_ASSIGN_COPY_ER_2010_HPP
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <boost/assign/v2/ref/anon/csv/assign_xxx.hpp>
+
+#define xxx_Tag1 assign_tag::copy
+BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX( assign_copy )
+#undef xxx_Tag1
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_rebind.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_rebind.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,19 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_ANON_CSV_ASSIGN_REBIND_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_ASSIGN_REBIND_ER_2010_HPP
+#include <boost/assign/v2/ref/wrapper/rebind.hpp>
+#include <boost/assign/v2/ref/anon/csv/assign_xxx.hpp>
+
+#define xxx_Tag1 assign_tag::rebind
+BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX( assign_rebind )
+#undef xxx_Tag1
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_xxx.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/assign_xxx.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,63 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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) //
+//////////////////////////////////////////////////////////////////////////////
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/assign/v2/detail/config/limit_csv_arity.hpp>
+#include <boost/assign/v2/ref/anon/csv/nth_result_of.hpp>
+#include <boost/assign/v2/ref/anon/csv/make.hpp>
+#include <boost/assign/v2/ref/anon/csv/pp.hpp>
+
+
+// Usage:
+// #define xxx_Tag1 name
+// BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX( ns )
+// #undef xxx_Tag1
+
+#ifndef BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter
+#define BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter( z, n, data ) \
+ BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl( T , n, 0, xxx_Tag1 ) \
+ BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl( T const, n, 0, xxx_Tag1 ) \
+/**/
+#endif
+#ifndef BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX
+#define BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX( NS ) \
+namespace boost{ \
+namespace assign{ \
+namespace v2{ \
+namespace ref{ \
+namespace NS{ \
+namespace nth_result_of{ \
+ template<std::size_t N,typename T> \
+ struct csv_anon : ref::nth_result_of::csv_anon<N, xxx_Tag1, T>{};\
+} \
+ template<typename T>\
+ typename ref::result_of::empty_csv_anon<xxx_Tag1, T>::type\
+ csv_anon( keyword_aux::nil )\
+ {\
+ typedef typename ref::result_of::empty_csv_anon<\
+ xxx_Tag1,\
+ T\
+ >::type result_;\
+ return result_();\
+ }\
+BOOST_PP_REPEAT_FROM_TO( \
+ 1, \
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY), \
+ BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter, \
+ ~ \
+) \
+} \
+} \
+} \
+} \
+} \
+/**/
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/csv.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/csv.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,23 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_ANON_CSV_CSV_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_CSV_ER_2010_HPP
+#include <boost/assign/v2/ref/anon/csv/nth_result_of.hpp>
+#include <boost/assign/v2/ref/anon/csv/make.hpp>
+#include <boost/assign/v2/ref/anon/csv/assign_copy.hpp>
+#include <boost/assign/v2/ref/anon/csv/assign_rebind.hpp>
+
+#undef BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke
+#undef BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl
+#undef xxx_Tag1
+#undef BOOST_ASSIGN_V2_REF_CSV_ARRAY_iter
+#undef BOOST_ASSIGN_V2_REF_CSV_ARRAY_ASSIGN_XXX
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/make.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/make.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,63 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_ANON_CSV_MAKE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_MAKE_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repeat_from_to.hpp>
+#include <boost/assign/v2/detail/keyword/nil.hpp>
+#include <boost/assign/v2/detail/config/limit_csv_arity.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/ref/anon/csv/nth_result_of.hpp>
+#include <boost/assign/v2/ref/anon/csv/pp.hpp>
+
+// Usage
+// using namespace boost::assign::v2::ref::csv;
+// csv_anon<assign_tag::name>( a, b, c );
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace result_of{
+
+ template<typename Tag1,typename T>
+ struct empty_csv_anon
+ : nth_result_of::csv_anon<0, Tag1, T>{};
+
+}// result_of
+
+ template<typename Tag1, typename T>
+ typename result_of::empty_csv_anon<Tag1, T>::type
+ csv_anon( keyword_aux::nil )
+ {
+ typedef typename result_of::empty_csv_anon<Tag1, T>::type result_;
+ return result_();
+ }
+
+#define MACRO( z, n, data )\
+ BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl(T , n, 1, Tag1 ) \
+ BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl(T const, n, 1, Tag1 ) \
+/**/
+
+BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_CSV_ARITY),
+ MACRO,
+ ~
+)
+
+#undef MACRO
+
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/nth_result_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/nth_result_of.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_CONTAINER_ANON_CSV_NTH_RESULT_OF_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_NTH_RESULT_OF_ER_2010_HPP
+#include <boost/mpl/empty_base.hpp>
+#include <boost/assign/v2/ref/static_array/alloc/fast_alloc_fwd.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace ref{
+namespace anon_aux{
+ typedef boost::use_default csv_tag2_;
+}// anon_aux
+namespace nth_result_of{
+
+ template<std::size_t N, typename Tag1, typename T>
+ struct csv_anon{
+ typedef static_array_aux::fast_alloc<N, Tag1, T> type;
+ };
+
+}// nth_result_of
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/csv/pp.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/csv/pp.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,62 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_CONTAINER_ANON_CSV_PP_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_CONTAINER_ANON_CSV_PP_ER_2010_HPP
+#include <boost/preprocessor/repeat.hpp>
+#include <boost/preprocessor/enum_params.hpp>
+#include <boost/preprocessor/expr_if.hpp>
+#include <boost/preprocessor/comma_if.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/detail/keyword/nil.hpp>
+#include <boost/assign/v2/ref/fusion/make.hpp>
+#include <boost/assign/v2/ref/static_array/alloc/fast_alloc.hpp>
+#include <boost/assign/v2/ref/anon/csv/nth_result_of.hpp>
+
+//#define BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke(z,n,data) \
+// ( BOOST_PP_CAT(_,n) ) \
+///**/
+
+#define BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke(z, n, data) \
+ result.get_wrapper( n ) = wrapper_( BOOST_PP_CAT(_,n) ); \
+/**/
+
+#define BOOST_ASSIGN_V2_REF_CSV_ARRAY_tpl(U, N, param, Tag1) \
+ template<BOOST_PP_EXPR_IF(param, typename Tag1) \
+ BOOST_PP_COMMA_IF(param) typename T> \
+ typename nth_result_of::csv_anon< \
+ N, \
+ BOOST_PP_EXPR_IF(param, Tag1) BOOST_PP_COMMA_IF(param) \
+ U \
+ >::type \
+ csv_anon( BOOST_PP_ENUM_PARAMS(N, U& _) ) \
+ { \
+ typedef typename nth_result_of::csv_anon< \
+ N, \
+ BOOST_PP_EXPR_IF(param, Tag1) BOOST_PP_COMMA_IF(param) \
+ U \
+ >::type result_; typedef typename result_::wrapper_type wrapper_;\
+ result_ result;\
+ BOOST_PP_REPEAT( N, BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke, ~ )\
+ return result;\
+ } \
+/**/
+
+// Old impelementation:
+// typedef anon_aux::csv_tag2_ tag2_; \
+// return ref::fusion< \
+// Tag1, \
+// tag2_, \
+// U \
+// >( v2::_nil ) \
+// BOOST_PP_REPEAT( N, BOOST_ASSIGN_V2_REF_CSV_ARRAY_invoke, ~ ) ; \
+
+#endif
+

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/cont.hpp
==============================================================================

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/fwd.hpp
==============================================================================

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/generic.hpp
==============================================================================

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/make.hpp
==============================================================================

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/nth_result_of.hpp
==============================================================================

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/policy.hpp
==============================================================================

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/generic/traits.hpp
==============================================================================

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/unary/assign_copy.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/unary/assign_copy.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_ANON_UNARY_ASSIGN_COPY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_ANON_UNARY_ASSIGN_COPY_ER_2010_HPP
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <boost/assign/v2/ref/anon/unary/assign_xxx.hpp>
+
+BOOST_ASSIGN_V2_REF_ANON_UNARY_XXX( assign_copy, assign_tag::copy )
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/unary/assign_rebind.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/unary/assign_rebind.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_ANON_UNARY_ASSIGN_REBIND_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_ANON_UNARY_ASSIGN_REBIND_ER_2010_HPP
+#include <boost/assign/v2/ref/wrapper/rebind.hpp>
+#include <boost/assign/v2/ref/anon/unary/assign_xxx.hpp>
+
+BOOST_ASSIGN_V2_REF_ANON_UNARY_XXX( assign_rebind, assign_tag::rebind )
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/unary/assign_xxx.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/unary/assign_xxx.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_ANON_UNARY_XXX
+#include <boost/assign/v2/detail/keyword/nil.hpp>
+#include <boost/assign/v2/ref/anon/unary/make.hpp>
+#define BOOST_ASSIGN_V2_REF_ANON_UNARY_XXX(NS, Tag1) \
+ \
+namespace boost{ \
+namespace assign{ \
+namespace v2{ \
+namespace ref{ \
+namespace NS{ \
+namespace nth_result_of{ \
+ template<std::size_t N,typename T> \
+ struct anon : ref::nth_result_of::anon<N,Tag1,T>{}; \
+}\
+namespace result_of{ \
+ \
+ template<typename T> \
+ struct empty_anon : ref::result_of::empty_anon< \
+ Tag1, T \
+ >{}; \
+ \
+ template<typename T> \
+ struct anon : ref::result_of::anon< \
+ Tag1, T \
+ >{}; \
+ \
+} \
+ template<typename T> \
+ typename NS::result_of::empty_anon<T>::type \
+ anon( keyword_aux::nil const& ) \
+ { \
+ return ref::anon<Tag1,T>( v2::_nil ); \
+ } \
+ template<typename T> \
+ typename NS::result_of::anon<T>::type \
+ anon(T& t) \
+ { \
+ return ref::anon<Tag1>( t ); \
+ } \
+ template<typename T> \
+ typename NS::result_of::anon<T const>::type \
+ anon(T const& t) \
+ { \
+ return ref::anon<Tag1>( t ); \
+ } \
+\
+} \
+} \
+} \
+} \
+} \
+/**/
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/unary/make.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/unary/make.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,61 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_ANON_UNARY_MAKE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_ANON_UNARY_MAKE_ER_2010_HPP
+#include <boost/assign/v2/ref/fusion/make.hpp>
+#include <boost/assign/v2/ref/static_array/alloc/lazy_alloc.hpp>
+#include <boost/assign/v2/ref/fusion/assign_array.hpp>
+#include <boost/assign/v2/ref/anon/unary/nth_result_of.hpp>
+#include <boost/assign/v2/ref/anon/unary/tag2.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace result_of{
+
+ template<typename Tag1,typename T>
+ struct empty_anon
+ : nth_result_of::anon<0, Tag1, T>{};
+
+ template<typename Tag1, typename T>
+ struct anon
+ : nth_result_of::anon<1, Tag1, T>{};
+
+}// result_of
+
+ template<typename Tag1, typename T>
+ typename result_of::empty_anon<Tag1, T>::type
+ anon( keyword_aux::nil const& )
+ {
+ typedef anon_aux::unary_tag2_ tag2_;
+ return ref::fusion<Tag1, tag2_,T>( v2::_nil );
+ }
+
+ template<typename Tag1,typename T>
+ typename result_of::anon<Tag1, T>::type
+ anon(T& t)
+ {
+ return anon<Tag1, T>( v2::_nil )( t );
+ }
+
+ template<typename Tag1,typename T>
+ typename result_of::anon<Tag1, T const>::type
+ anon(T const & t)
+ {
+ return anon<Tag1, T const>( v2::_nil )( t );
+ }
+
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/unary/nth_result_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/unary/nth_result_of.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_ANON_UNARY_NTH_RESULT_OF2_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_ANON_UNARY_NTH_RESULT_OF2_ER_2010_HPP
+#include <boost/assign/v2/ref/anon/unary/tag2.hpp>
+#include <boost/assign/v2/ref/fusion/nth_result_of.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace anon_aux{
+
+ template<typename Tag1, typename T>
+ struct empty_anon : fusion_aux::empty<
+ Tag1,
+ anon_aux::unary_tag2_,
+ T
+ >{};
+
+ template<std::size_t N,typename Tag1,typename T>
+ struct recursive_result
+ {
+ typedef typename recursive_result<
+ N-1, Tag1, T
+ >::type previous_;
+ typedef typename previous_::template result<T>::type type;
+ };
+
+ template<typename Tag1, typename T>
+ struct recursive_result<0, Tag1, T>
+ : empty_anon<Tag1, T>{};
+
+}// anon_aux
+namespace nth_result_of{
+
+ template<std::size_t N,typename Tag1, typename T>
+ struct anon
+ : anon_aux::recursive_result<N, Tag1, T>
+ {};
+
+}// nth_result_of
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/unary/tag2.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/unary/tag2.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,26 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_ANON_UNARY_TAG2_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_ANON_UNARY_TAG2_ER_2010_HPP
+#include <boost/assign/v2/ref/static_array/alloc/lazy_alloc_fwd.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace anon_aux{
+ typedef ref::alloc_tag::lazy_alloc unary_tag2_;
+}// anon_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/anon/unary/unary.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/anon/unary/unary.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,20 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_ANON_UNARY_UNARY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_ANON_UNARY_UNARY_ER_2010_HPP
+
+#include <boost/assign/v2/ref/anon/unary/assign_copy.hpp>
+#include <boost/assign/v2/ref/anon/unary/assign_rebind.hpp>
+#include <boost/assign/v2/ref/anon/unary/make.hpp>
+#include <boost/assign/v2/ref/anon/unary/nth_result_of.hpp>
+#include <boost/assign/v2/ref/anon/unary/tag2.hpp>
+
+#endif
+

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/add_const.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/add_const.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_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
\ No newline at end of file

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,149 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/distinct_values.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/distinct_values.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,70 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,98 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/twin_values.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/twin_values.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_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
+

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/assign_array.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/assign_array.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1 @@
+// TODO remove file

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/container.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1 @@
+// TODO remove file

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fusion_list.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fusion_list.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1 @@
+// TODO remove file

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/fwd.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1 @@
+// TODO remove file

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/make.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/make.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1 @@
+// TODO remove file

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/nth_result_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/fusion_list/nth_result_of.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1 @@
+// TODO remove file

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,113 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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/mpl/assert.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/assign/v2/ref/detail/unwrap/reference.hpp>
+
+// Note : In Boost.Assign.v2, this is deprecated but it could be used
+// elsewhere.
+
+// Calling
+// *unwrap_iterator( it );
+// is equivalent to
+// (*it).unwrap();
+// if *it is a reference wrapper, otherwise
+// (*it);
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace unwrap_aux{
+
+ template<typename I>
+ struct reference_of_iterator : unwrap_aux::reference<
+ typename boost::iterator_reference<I>::type
+ >{};
+
+ template<
+ typename I,
+ typename R = typename unwrap_aux::reference_of_iterator<I>::type,
+ typename V = typename boost::remove_reference<R>::type
+ >
+ struct iterator : boost::iterator_adaptor<
+ iterator<I,R,V> // Derived
+ ,I // Base
+ ,V // Value
+ ,use_default // CategoryOrTraversal
+ ,R // Reference
+ ,use_default // Difference
+ >{
+ typedef boost::iterator_adaptor<
+ iterator<I,R,V>,
+ I,
+ V,
+ use_default,
+ R,
+ use_default
+ > super_;
+
+ iterator(){}
+ iterator(I base):super_(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_iterator : boost::mpl::false_{};
+
+ template<typename I, typename R, typename V>
+ struct is_iterator< unwrap_aux::iterator<I,R,V> >
+ : boost::mpl::true_{};
+
+}// unwrap_aux
+
+ template<typename It>
+ struct is_unwrapped_iterator : unwrap_aux::is_iterator<
+ typename boost::remove_cv<It>::type
+ >{};
+
+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
+

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/range.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_WRAPPER_UNWRAP_RANGE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_WRAPPER_UNWRAP_RANGE_ER_2010_HPP
+#include <boost/type_traits/add_reference.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>
+
+// Note : In Boost.Assign.v2, this is deprecated but it could be used
+// elsewhere.
+
+
+// See iterator.hpp
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace unwrap_aux{
+
+ template<typename R>
+ struct is_range : is_unwrapped_iterator<
+ typename boost::range_iterator<R>::type
+ >{};
+
+// TODO remove
+// I guess this is subsumed by range_reference
+// template<typename R>
+// struct reference_of_unwrapped_range
+// : unwrap::reference_of_iterator<
+// typename boost::range_iterator<R>::type
+// >{};
+
+ template<typename R, bool = unwrap_aux::is_range<R>::value>
+ struct result_of_unwrap_range
+ {
+ 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 result_of_unwrap_range<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_range<R>{};
+
+namespace result_of{
+
+ template<typename R>
+ struct unwrap_range : unwrap_aux::result_of_unwrap_range<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

Added: sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_UNWRAP_REFERENCE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_UNWRAP_REFERENCE_ER_2010_HPP
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/range/reference.hpp>
+#include <boost/assign/v2/ref/wrapper/framework.hpp>
+
+// Note : In Boost.Assign.v2, this is deprecated but it could be used
+// elsewhere.
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace unwrap_aux{
+
+ // U Result
+ // ref::wrapper<Tag,T> T&
+ // ref::wrapper<Tag,T>& T&
+ // T& T&
+ template<typename U,typename T = typename boost::remove_reference<U>::type>
+ struct reference : boost::mpl::eval_if<
+ boost::is_reference_wrapper<T>,
+ boost::add_reference<
+ typename boost::unwrap_reference<T>::type
+ >,
+ boost::mpl::identity<U>
+ >{
+ static void test()
+ {
+ BOOST_MPL_ASSERT_NOT(( boost::is_reference<T> ));
+ };
+ };
+
+}// unwrap_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_array.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_array.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,80 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_ASSIGN_ARRAY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_ASSIGN_ARRAY_ER_2010_HPP
+#include <boost/static_assert.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/assign/v2/ref/fusion/fwd.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_aux{
+
+ // ---- assign_array ---- //
+
+ template<
+ std::size_t K,typename A,
+ std::size_t N, typename L, typename Tag1, typename Tag2, typename T
+ >
+ void assign_array(
+ boost::mpl::true_ /*exit*/,
+ A& a,
+ const fusion_aux::container<N, L, Tag1, Tag2, T>& f
+ )
+ {
+ /*exit*/
+ }
+
+ template<
+ std::size_t K,typename A,
+ std::size_t N, typename L, typename Tag1, typename Tag2,typename T
+ >
+ void assign_array(
+ boost::mpl::false_ /*exit*/,
+ A& a,
+ const fusion_aux::container<N, L, Tag1, Tag2, T>& f
+ )
+ {
+ typedef boost::mpl::int_<K-1> index_;
+ a[ K - 1 ].rebind( f.static_lookup( index_() ) ) ;
+ typedef index_ next_size_;
+ typedef boost::mpl::int_<0> zero_;
+ typedef typename boost::mpl::equal_to<next_size_,zero_>::type exit_;
+ assign_array<K-1>( exit_(), a, f );
+ }
+
+ // A must be a static array of reference wrappers
+ template<typename A,std::size_t N, typename L,
+ typename Tag1, typename Tag2, typename T>
+ void assign_array(
+ A& a,
+ fusion_aux::container<N, L, Tag1, Tag2, T> const & f
+ )
+ {
+ // don't replace by size_::value <= N (causes warning)
+ BOOST_STATIC_ASSERT( A::static_size <= N );
+ typedef boost::mpl::int_<0> zero_;
+ typedef boost::mpl::int_<A::static_size> size_;
+ typedef typename boost::mpl::equal_to<size_, zero_>::type exit_;
+ fusion_aux::assign_array<size_::value>( exit_(), a, f );
+ }
+
+}// fusion_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_copy.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_copy.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_FUSION_ASSIGN_COPY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_ASSIGN_COPY_ER_2010_HPP
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <boost/assign/v2/ref/fusion/assign_xxx.hpp>
+
+BOOST_ASSIGN_V2_REF_FUSION_ASSIGN_XXX(assign_copy, assign_tag::copy)
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_rebind.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_rebind.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_FUSION_ASSIGN_REBIND_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_ASSIGN_REBIND_ER_2010_HPP
+#include <boost/assign/v2/ref/wrapper/rebind.hpp>
+#include <boost/assign/v2/ref/fusion/assign_xxx.hpp>
+
+BOOST_ASSIGN_V2_REF_FUSION_ASSIGN_XXX(assign_rebind, assign_tag::rebind)
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_xxx.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/assign_xxx.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_FUSION_ASSIGN_XXX
+#include <boost/assign/v2/detail/keyword/nil.hpp>
+#include <boost/assign/v2/ref/fusion/make.hpp>
+#include <boost/assign/v2/ref/fusion/nth_result_of.hpp>
+#define BOOST_ASSIGN_V2_REF_FUSION_ASSIGN_XXX(NS, Tag1) \
+ \
+namespace boost{ \
+namespace assign{ \
+namespace v2{ \
+namespace ref{ \
+namespace NS{ \
+namespace nth_result_of{ \
+ template<typename Tag2, typename Tnil = fusion_aux::nil_arg_type> \
+ struct fusion : ref::nth_result_of::fusion<Tag1, Tag2, Tnil>{}; \
+} \
+ template<typename Tag2> \
+ typename ref::result_of::fusion_nil< \
+ Tag1, \
+ Tag2, \
+ fusion_aux::nil_arg_type \
+ >::type \
+ fusion( keyword_aux::nil const& ) \
+ { \
+ return ref::fusion<Tag1, Tag2>( v2::_nil ); \
+ } \
+\
+} \
+} \
+} \
+} \
+} \
+/**/
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/container.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,160 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_CONTAINER_ER_2010_HPP
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/mpl/void.hpp>
+#include <boost/config.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/assign/v2/ref/wrapper/framework.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <boost/assign/v2/ref/fusion/policy.hpp>
+#include <boost/assign/v2/ref/fusion/link_holder.hpp>
+#include <boost/assign/v2/ref/fusion/head_holder.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_aux{
+
+ template<std::size_t N, typename L,typename Tag1, typename Tag2, typename T>
+ struct interface : boost::mpl::apply4<
+ fusion_aux::policy<Tag2>,
+ boost::mpl::int_<N>, L, Tag1, T
+ >{};
+
+ template<
+ std::size_t N, typename L, typename Tag1, typename Tag2, typename T>
+ class container
+ : public fusion_aux::link_holder<L, N == 0>,
+ public fusion_aux::head_holder<Tag1, T, N == 0>,
+ public fusion_aux::interface<N, L, Tag1, Tag2, T>::type
+ {
+
+ typedef boost::mpl::int_<0> int0_;
+ typedef boost::mpl::int_<1> int1_;
+ typedef boost::mpl::int_<N> size_;
+ typedef typename boost::mpl::minus<size_,int1_>::type index_;
+ typedef Tag1 assign_tag_;
+
+ typedef typename fusion_aux::interface<
+ N,
+ L,
+ Tag1,
+ Tag2,
+ T
+ >::type super_t;
+
+ typedef fusion_aux::link_holder<L, size_::value == 0> link_;
+ typedef fusion_aux::head_holder<Tag1, T, size_::value == 0> head_;
+
+ public:
+
+ // -- used by most_const -- //
+ typedef T head_value_type;
+ typedef L link_value_type;
+
+ typedef std::size_t size_type;
+ BOOST_STATIC_CONSTANT(std::size_t, static_size = N);
+ typedef typename boost::mpl::equal_to<size_,int0_>::type is_empty_;
+
+ explicit container(){}
+ explicit container(const L& l, T& h)
+ : link_( l ),
+ head_( h )
+ {}
+
+ template<typename NewL, typename NewTag2, typename U>
+ explicit container(const container<N, NewL, Tag1, NewTag2, U>& that)
+ :link_( that ),
+ head_( that ),
+ super_t( that ){}
+
+ // ------ operator() ----- //
+ // adds an element //
+ // ----------------------- //
+
+ template<typename T1>
+ struct result{
+ typedef container this_;
+ typedef container<N+1, this_, Tag1, Tag2, T1> type;
+ };
+
+ template<typename T1>
+ typename result<T1>::type
+ operator()(T1& t)const{
+ typedef typename result<T1>::type result_;
+ return result_( *this, t );
+ }
+
+ template<typename T1>
+ typename result<T1 const>::type
+ operator()(T1 const& t)const{
+ typedef typename result<T1 const>::type result_;
+ return result_( *this, t );
+ }
+
+ // ---- static_lookup ---- //
+
+ template<int I>
+ struct is_head : boost::mpl::bool_< I + 1 == N >{};
+
+ template<int I>
+ struct link_result_static_lookup : L::template
+ result_static_lookup<I>{};
+
+ template<int I>
+ struct result_static_lookup : boost::mpl::eval_if<
+ is_head<I>,
+ boost::mpl::identity<T&>,
+ link_result_static_lookup<I>
+ >{};
+
+ // A template is needed even as the argument is known, to prevent
+ // compiler errors for N = 0.
+ template<int I>
+ typename boost::lazy_enable_if<
+ is_head<I>,
+ result_static_lookup<I>
+ >::type
+ static_lookup(boost::mpl::int_<I> same_index)const
+ {
+ return this->head.unwrap();
+ }
+
+ template<int I>
+ typename boost::lazy_disable_if<
+ is_head<I>,
+ result_static_lookup<I>
+ >::type
+ static_lookup(boost::mpl::int_<I> smaller_index)const
+ {
+ return this->link().static_lookup( smaller_index );
+ }
+
+ };
+
+}// fusion_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/fusion.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/fusion.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,24 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_FUSION_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_FUSION_ER_2010_HPP
+
+#include <boost/assign/v2/ref/fusion/assign_array.hpp>
+#include <boost/assign/v2/ref/fusion/assign_copy.hpp>
+#include <boost/assign/v2/ref/fusion/assign_rebind.hpp>
+#include <boost/assign/v2/ref/fusion/container.hpp>
+#include <boost/assign/v2/ref/fusion/make.hpp>
+#include <boost/assign/v2/ref/fusion/most_const.hpp>
+#include <boost/assign/v2/ref/fusion/nil_arg.hpp>
+#include <boost/assign/v2/ref/fusion/nth_result_of.hpp>
+#include <boost/assign/v2/ref/fusion/policy.hpp>
+#include <boost/assign/v2/ref/fusion/root.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/fwd.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_FUSION_FWD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_FWD_ER_2010_HPP
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_aux{
+
+ template<std::size_t N, typename L,
+ typename Tag1,typename Tag2, typename T>
+ class container;
+
+ template<typename A, std::size_t N, typename L,
+ typename Tag1, typename Tag2, typename T>
+ void assign_array(
+ A& a,
+ fusion_aux::container<N, L, Tag1, Tag2, T> const & f
+ );
+
+}// fusion_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/head_holder.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/head_holder.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,66 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_HEAD_HOLDER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_HEAD_HOLDER_ER_2010_HPP
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/void.hpp>
+#include <boost/assign/v2/ref/wrapper/framework.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_aux{
+
+ template<typename Tag,typename T, bool is_empty = false>
+ class head_holder{
+
+ typedef ref::wrapper<Tag, T> wrapper_;
+
+ public:
+
+ typedef T head_value_type;
+
+ head_holder(){}
+ head_holder( T& h ) : head( h ){}
+
+ mutable wrapper_ head;
+
+ T& back()const
+ {
+ return this->head.unwrap();
+ }
+
+ };
+
+ template<typename Tag, typename T>
+ class head_holder<Tag, T, true>{
+
+ //head_holder(){}
+
+ public:
+
+ typedef boost::mpl::void_ head_value_type;
+
+ head_value_type back()const
+ {
+ return head_value_type();
+ }
+
+ };
+
+}// fusion_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/link_holder.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/link_holder.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,61 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_LINK_HOLDER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_LINK_HOLDER_ER_2010_HPP
+#include <boost/mpl/int.hpp>
+#include <boost/assign/v2/ref/wrapper/framework.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_aux{
+
+ template<typename L, bool is_empty = false>
+ class link_holder{
+
+ typedef ref::assign_tag::copy tag_;
+ typedef ref::wrapper<tag_, const L> wrapper_;
+
+ public:
+
+ link_holder(){}
+ link_holder( const L& l) : value( l ){}
+
+ wrapper_ pop()const
+ {
+ // Warning : probably inefficient
+ return value;
+ }
+
+ const L& link()const{ return this->value.unwrap(); }
+
+ protected:
+ mutable wrapper_ value;
+
+ };
+
+ template<typename L>
+ class link_holder<L,true>{
+
+ //link_holder(){}
+
+ void pop()const{}
+
+ };
+
+}// fusion_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/make.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/make.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,71 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_MAKE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_MAKE_ER_2010_HPP
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/vector/vector0.hpp>
+#include <boost/mpl/vector/vector10.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/assign/v2/detail/keyword/nil.hpp>
+#include <boost/assign/v2/ref/fusion/container.hpp>
+#include <boost/assign/v2/ref/fusion/nth_result_of.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace ref{
+namespace result_of{
+
+ template<typename Tag1,typename Tag2,typename Tnil>
+ struct fusion_nil : boost::mpl::apply1<
+ nth_result_of::fusion<Tag1, Tag2, Tnil>,
+ boost::mpl::vector0<>
+ >{};
+
+}// result_of
+
+ template<typename Tag1, typename Tag2, typename Tnil>
+ typename result_of::fusion_nil<Tag1, Tag2, Tnil>::type
+ fusion( keyword_aux::nil )
+ {
+ typedef typename result_of::fusion_nil<
+ Tag1,
+ Tag2,
+ Tnil
+ >::type result_;
+ return result_();
+ }
+
+ template<typename Tag1, typename Tag2>
+ typename result_of::fusion_nil<
+ Tag1,
+ Tag2,
+ fusion_aux::nil_arg_type
+ >::type
+ fusion( keyword_aux::nil )
+ {
+ typedef fusion_aux::nil_arg_type nil_arg_;
+ typedef typename result_of::fusion_nil<
+ Tag1,
+ Tag2,
+ nil_arg_
+ >::type result_;
+ return result_();
+ }
+
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/most_const.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/most_const.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,56 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_MOST_CONST_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_MOST_CONST_ER_2010_HPP
+#include <boost/utility/enable_if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/assign/v2/detail/type_traits/same_remove_cv.hpp>
+#include <boost/assign/v2/ref/fusion/fwd.hpp>
+#include <boost/assign/v2/ref/fusion/root.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_aux{
+
+ // {U1,...,Un} is mapped to {T if Ui = T for all i, else T const}, if
+ // remove_cv<Ui>::type != remove_cv<Uj>::type
+ // for some i,j, otherwise the mapping is undefined.
+ template<typename L,typename T>
+ struct most_const : boost::lazy_enable_if<
+ v2::type_traits::same_remove_cv<typename L::head_value_type, T>,
+ boost::mpl::eval_if<
+ boost::is_const<T>,
+ boost::mpl::identity<T>,
+ most_const<
+ typename L::link_value_type,
+ typename L::head_value_type
+ >
+ >
+ >
+ {};
+
+ template<typename T>
+ struct most_const<
+ fusion_aux::root_type,
+ T
+ >{
+ typedef T type;
+ };
+
+}// fusion_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/nil_arg.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/nil_arg.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_FUSION_NIL_ARG_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_NIL_ARG_ER_2010_HPP
+#include <boost/mpl/void.hpp>
+//#include <boost/mpl/aux_/na.hpp> // TODO
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_aux{
+
+ typedef boost::mpl::void_ nil_arg_type;
+
+}// fusion_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/nth_result_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/nth_result_of.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,83 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_NTH_RESULT_OF_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_NTH_RESULT_OF_ER_2010_HPP
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/fold.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/assign/v2/ref/wrapper/deduce_assign_tag.hpp>
+#include <boost/assign/v2/ref/fusion/fwd.hpp>
+#include <boost/assign/v2/ref/fusion/root.hpp>
+#include <boost/assign/v2/ref/fusion/nil_arg.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_aux{
+
+ template<typename Tag1, typename Tag2, typename Tnil>
+ struct empty
+ {
+ typedef fusion_aux::container<
+ 0,
+ typename fusion_aux::root_type,
+ Tag1,
+ Tag2,
+ Tnil
+ > type;
+ };
+
+ template<typename Tag1, typename Tag2, typename Tnil>
+ struct nth_result
+ {
+
+ typedef typename
+ fusion_aux::empty<Tag1, Tag2, Tnil>::type state_;
+
+ template<typename State, typename T>
+ struct result : State::template result<T>{};
+
+ template<typename Vec>
+ struct apply : boost::mpl::fold<
+ Vec,
+ state_,
+ result<boost::mpl::_1, boost::mpl::_2>
+ >{};
+
+ };
+
+}// fusion_aux
+namespace nth_result_of{
+
+ template<
+ typename Tag1, typename Tag2, typename Tnil = fusion_aux::nil_arg_type
+ >
+ struct fusion
+ {
+ template<typename Vec>
+ struct apply : boost::mpl::apply1<
+ fusion_aux::nth_result<Tag1, Tag2, Tnil>,
+ Vec
+ >{};
+ };
+
+}// nth_result_of
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/policy.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/policy.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_FUSION_POLICY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_POLICY_ER_2010_HPP
+#include <boost/mpl/empty_base.hpp>
+#include <boost/mpl/always.hpp>
+#include <boost/assign/v2/ref/static_array/alloc/lazy_alloc.hpp>
+#include <boost/assign/v2/ref/fusion/fwd.hpp>
+#include <boost/assign/v2/ref/fusion/most_const.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_aux{
+
+ template<typename Tag2>
+ struct policy{};
+
+ template<>
+ struct policy<boost::use_default> : boost::mpl::always<
+ boost::mpl::empty_base
+ >{};
+
+ template<>
+ struct policy<alloc_tag::lazy_alloc>
+ {
+ template<typename N,typename L,typename Tag1,typename T>
+ struct apply
+ {
+ typedef alloc_tag::lazy_alloc tag2_;
+ typedef typename fusion_aux::most_const<L, T>::type most_c_;
+ typedef fusion_aux::container<
+ N::value,
+ L,
+ Tag1,
+ tag2_,
+ T
+ > derived_;
+ typedef static_array_aux::lazy_alloc<
+ N::value,
+ Tag1,
+ most_c_,
+ derived_
+ > type;
+ };
+
+ };
+
+}// fusion_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion/root.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion/root.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,28 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_ROOT_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_ROOT_ER_2010_HPP
+#include <boost/mpl/void.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_aux{
+
+ typedef boost::mpl::void_ root_type;
+
+}// fusion_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/container.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/container.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,288 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_MATRIX_CONTAINER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_MATRIX_CONTAINER_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/punctuation/comma.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+#include <boost/mpl/aux_/na.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/mpl/vector.hpp>
+
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+#include <boost/assign/v2/detail/functor/crtp_unary_and_up.hpp>
+#include <boost/assign/v2/ref/wrapper/framework.hpp>
+#include <boost/assign/v2/ref/fusion/link_holder.hpp>
+#include <boost/assign/v2/ref/fusion_matrix/fwd.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_matrix_aux{
+
+ template<
+ std::size_t N, typename L, typename Tag1, typename Tag2,
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ typename T,
+ boost::mpl::na
+ )
+ >
+ struct meta_result{
+
+ typedef fusion_matrix_aux::container<N, L, Tag1, Tag2,
+ BOOST_PP_ENUM_PARAMS(BOOST_ASSIGN_V2_LIMIT_ARITY, T)
+ > this_;
+
+
+ template<
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ typename U,
+ boost::mpl::na
+ )
+ >
+ struct apply
+ {
+
+ typedef fusion_matrix_aux::container<
+ N+1,
+ this_,
+ Tag1,
+ Tag2,
+ BOOST_PP_ENUM_PARAMS(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ U
+ )
+ > type;
+
+ };
+
+ };
+
+ template<
+ std::size_t N, typename L, typename Tag1, typename Tag2,
+ BOOST_PP_ENUM_PARAMS(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ typename T
+ )
+ >
+ class container
+ : public fusion_aux::link_holder<L, N == 0>,
+ public functor_aux::crtp_unary_and_up<
+ fusion_matrix_aux::container<N, L, Tag1, Tag2,
+ BOOST_PP_ENUM_PARAMS(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ T
+ )
+ >,
+ boost::mpl::unpack_args<
+ fusion_matrix_aux::meta_result<N, L, Tag1, Tag2,
+ BOOST_PP_ENUM_PARAMS(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ T
+ )
+ >
+ >
+ >
+ {
+
+ typedef boost::mpl::int_<0> int0_;
+ typedef boost::mpl::int_<1> int1_;
+ typedef boost::mpl::int_<N> size_;
+ typedef typename boost::mpl::minus<size_,int1_>::type index_;
+ typedef Tag1 assign_tag_;
+
+ template<typename T>
+ struct wrapper{ typedef ref::wrapper<assign_tag_,T> type; };
+
+ typedef fusion_aux::link_holder<L, N == 0> link_;
+
+ typedef fusion_matrix_aux::meta_result<N, L, Tag1, Tag2,
+ BOOST_PP_ENUM_PARAMS(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ T
+ )
+ > meta_result_;
+
+ typedef functor_aux::crtp_unary_and_up<
+ container,
+ boost::mpl::unpack_args<
+ meta_result_
+ >
+ > super_t;
+
+ typedef boost::mpl::vector<
+ BOOST_PP_ENUM_PARAMS(BOOST_ASSIGN_V2_LIMIT_ARITY, T)
+ > vec_;
+
+ public:
+
+ typedef std::size_t size_type;
+ BOOST_STATIC_CONSTANT(size_type, static_row_size = N);
+ BOOST_STATIC_CONSTANT(size_type,
+ static_column_size = boost::mpl::size<vec_>::value
+ );
+
+ container(){}
+
+#define MACRO1(z, n, data)\
+ BOOST_PP_CAT(w, n) ( BOOST_PP_CAT(_, n) )\
+/**/
+#define MACRO2(z, n, data) \
+ explicit container( \
+ const L& l BOOST_PP_COMMA_IF(n) \
+ BOOST_PP_ENUM_BINARY_PARAMS(n, T, & _) \
+ ) : link_( l )\
+ BOOST_PP_ENUM_TRAILING(n, MACRO1, ~)\
+ {}\
+/**/
+BOOST_PP_REPEAT(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ MACRO2,
+ ~
+)
+#undef MACRO1
+#undef MACRO2
+
+ // ------ operator() ----- //
+ // adds a row //
+ // ----------------------- //
+
+ template<
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ typename U,
+ boost::mpl::na
+ )
+ >
+ struct result : boost::mpl::apply<
+ meta_result_,
+ BOOST_PP_ENUM_PARAMS(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ U
+ )
+ >{};
+
+ using super_t::operator();
+
+ typename result<>::type
+ operator()()const{
+ typedef typename result<>::type result_;
+ return result_( *this );
+ }
+
+#define MACRO1( z, n, data ) \
+ ( BOOST_PP_CAT(_,n) ) \
+/**/
+
+#define MACRO2(z, N1, data) \
+ template<BOOST_PP_ENUM_PARAMS(N1, typename U)> \
+ typename result<BOOST_PP_ENUM_PARAMS(N1, U)>::type \
+ impl( BOOST_PP_ENUM_BINARY_PARAMS(N1, U, &_) )const{ \
+ typedef typename result<BOOST_PP_ENUM_PARAMS(N1, U)>::type result_; \
+ return result_( *this BOOST_PP_ENUM_TRAILING_PARAMS(N1, _) );\
+ } \
+/**/
+BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_PP_INC(BOOST_ASSIGN_V2_LIMIT_ARITY),
+ MACRO2,
+ ~
+)
+#undef MACRO1
+#undef MACRO2
+
+ // Row extraction
+
+ template<int I>
+ struct is_head : boost::mpl::bool_< I + 1 == N >{};
+
+ template<int I>
+ struct link_result_static_row
+ : L::template result_static_row<I>{};
+
+ template<int I>
+ struct result_static_row : boost::mpl::eval_if<
+ is_head<I>,
+ boost::mpl::identity<
+ container const&
+ >,
+ link_result_static_row<I>
+ >{};
+
+ template<int I>
+ typename boost::lazy_enable_if<
+ is_head<I>,
+ result_static_row<I>
+ >::type
+ static_row(boost::mpl::int_<I> index)const
+ {
+ return (*this);
+ }
+
+ template<int I>
+ typename boost::lazy_disable_if<
+ is_head<I>,
+ result_static_row<I>
+ >::type
+ static_row( boost::mpl::int_<I> index )const
+ {
+ return static_cast<link_ const&>(
+ *this
+ ).link().static_row( index );
+ }
+
+ // Column extraction
+
+#define MACRO(z, n, data)\
+ private: \
+ typename wrapper<BOOST_PP_CAT(T,n)>::type BOOST_PP_CAT(w,n); \
+ public: \
+ BOOST_PP_CAT(T,n)& static_column(boost::mpl::int_<n>)const\
+ {\
+ return this->BOOST_PP_CAT(w,n).unwrap(); \
+ }\
+/**/
+BOOST_PP_REPEAT(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ MACRO,
+ ~
+)
+#undef MACRO
+
+ };
+
+}// fusion_matrix_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif
+

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/fusion_matrix.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/fusion_matrix.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_FUSION_MATRIX_FUSION_MATRIX_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_MATRIX_FUSION_MATRIX_ER_2010_HPP
+
+#include <boost/assign/v2/ref/fusion_matrix/container.hpp>
+#include <boost/assign/v2/ref/fusion_matrix/nth_result_of.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/fwd.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,39 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_MATRIX_FWD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_MATRIX_FWD_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/mpl/aux_/na.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_matrix_aux{
+
+ template<
+ std::size_t N, typename L,typename Tag1, typename Tag2,
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ typename T,
+ boost::mpl::na
+ )
+ >
+ class container;
+
+}// fusion_matrix_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/nth_result_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/fusion_matrix/nth_result_of.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,131 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FUSION_MATRIX_NTH_RESULT_OF_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_FUSION_MATRIX_NTH_RESULT_OF_ER_2010_HPP
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/aux_/na.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/fold.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/mpl/size.hpp>
+//#include <boost/mpl/unpack_args.hpp>
+#include <boost/mpl/at.hpp>
+
+#include <boost/assign/v2/ref/fusion/root.hpp>
+#include <boost/assign/v2/ref/fusion_matrix/fwd.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+
+#include <boost/mpl/aux_/na.hpp>
+#include <boost/assign/v2/detail/config/limit_arity.hpp>
+
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace ref{
+namespace fusion_matrix_aux{
+
+ template<
+ typename Tag1 = ref::assign_tag::copy,
+ typename Tag2 = boost::use_default
+ >
+ struct empty
+ {
+ typedef fusion_matrix_aux::container<
+ 0,
+ typename fusion_aux::root_type,
+ Tag1,
+ Tag2
+ > type;
+ };
+
+ template<typename Tag1,typename Tag2>
+ struct nth_result
+ {
+
+ typedef typename fusion_matrix_aux::empty<Tag1, Tag2>::type state_;
+
+ template<typename NewState>
+ struct result
+ {
+ template<
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ typename T,
+ boost::mpl::na
+ )
+ >
+ struct apply : NewState::template result<
+ BOOST_PP_ENUM_PARAMS(
+ BOOST_ASSIGN_V2_LIMIT_ARITY,
+ T
+ )
+ >{};
+
+ };
+
+ struct forward_op{
+
+ template<typename NewState, typename Vec>
+ struct apply{
+ typedef result<NewState> meta_;
+ typedef boost::mpl::unpack_args< meta_ > g_;
+ typedef typename boost::mpl::apply1<
+ g_,
+ Vec
+ >::type type;
+
+ };
+
+ };
+
+ template<typename VecTypes>
+ struct apply : boost::mpl::fold<
+ VecTypes,
+ state_,
+ forward_op
+ >{};
+
+ };
+
+}// fusion_matrix_aux
+namespace nth_result_of{
+
+ template<
+ typename Tag1 = ref::assign_tag::copy,
+ typename Tag2 = boost::use_default
+ >
+ struct fusion_matrix
+ {
+
+ typedef fusion_matrix_aux::nth_result<Tag1, Tag2> meta_;
+
+ template<typename VecTypes>
+ struct apply : boost::mpl::apply1<
+ meta_,
+ VecTypes
+ >{};
+
+ };
+
+}// nth_result_of
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/ref.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/ref.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,18 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_REF_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_REF_ER_2010_HPP
+
+#include <boost/assign/v2/ref/anon/anon.hpp>
+#include <boost/assign/v2/ref/fusion/fusion.hpp>
+#include <boost/assign/v2/ref/fusion_matrix/fusion_matrix.hpp>
+#include <boost/assign/v2/ref/wrapper/wrapper.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/alloc.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/alloc.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_STATIC_ARRAY_ALLOC_ALLOC_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_STATIC_ARRAY_ALLOC_ALLOC_ER_2010_HPP
+
+#include <boost/assign/v2/ref/static_array/alloc/fast_alloc.hpp>
+#include <boost/assign/v2/ref/static_array/alloc/lazy_alloc.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/fast_alloc.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/fast_alloc.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,68 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_STATIC_ARRAY_ALLOC_FAST_ALLOC_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_STATIC_ARRAY_ALLOC_FAST_ALLOC_ER_2010_HPP
+#include <boost/assign/v2/ref/wrapper/wrapper.hpp>
+#include <boost/assign/v2/ref/fusion/assign_array.hpp>
+#include <boost/assign/v2/ref/static_array/interface.hpp>
+#include <boost/assign/v2/ref/static_array/alloc/fast_alloc_fwd.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace alloc_tag{
+ struct fast_alloc{};
+}// alloc_tag
+namespace static_array_aux{
+
+ template<std::size_t N,typename Tag, typename T>
+ class fast_alloc
+ : public static_array_aux::interface<
+ N, Tag, T, fast_alloc<N,Tag,T>
+ >
+ {
+
+ typedef Tag assign_tag_;
+ typedef typename ref::wrapper<assign_tag_,T> wrapper_;
+ typedef boost::array<wrapper_,N> array_;
+
+ public:
+
+ fast_alloc(){}
+
+ template<typename L>
+ fast_alloc(const L& l){
+ assign_array(
+ this->array,
+ l
+ );
+ }
+
+ array_& impl(){
+ return this->array;
+ }
+
+ array_ const & impl()const{
+ return this->array;
+ }
+
+ protected:
+ mutable array_ array;
+
+ };
+
+}// static_array_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/fast_alloc_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/fast_alloc_fwd.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_STATIC_ARRAY_ALLOC_FAST_ALLOC_FWD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_STATIC_ARRAY_ALLOC_FAST_ALLOC_FWD_ER_2010_HPP
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace alloc_tag{
+ struct fast_alloc;
+}// alloc_tag
+namespace static_array_aux{
+ template<std::size_t N, typename Tag, typename T>
+ class fast_alloc;
+}// static_array_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/lazy_alloc.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/lazy_alloc.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,83 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_STATIC_ARRAY_ALLOC_LAZY_ALLOC_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_STATIC_ARRAY_ALLOC_LAZY_ALLOC_ER_2010_HPP
+#include <boost/shared_ptr.hpp>
+#include <boost/assign/v2/ref/wrapper/wrapper.hpp>
+#include <boost/assign/v2/ref/fusion/assign_array.hpp>
+#include <boost/assign/v2/ref/static_array/alloc/lazy_alloc_fwd.hpp>
+#include <boost/assign/v2/ref/static_array/interface.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace alloc_tag{
+ struct lazy_alloc;
+}// alloc_tag
+namespace static_array_aux{
+
+ template<std::size_t N,typename Tag, typename T, typename D>
+ class lazy_alloc : public static_array_aux::interface<
+ N, Tag, T, lazy_alloc<N,Tag,T,D>
+ >
+ {
+ typedef Tag assign_tag_;
+ typedef typename ref::wrapper<assign_tag_,T> wrapper_;
+ typedef boost::array<wrapper_,N> array_;
+
+ typedef boost::mpl::int_<N> size_;
+
+ void alloc_if()const{
+ if(!this->ptr){
+ return this->alloc();
+ }
+ }
+
+ void alloc()const{
+ this->ptr = smart_ptr_(new array_);
+ assign_array(
+ *this->ptr,
+ static_cast<const D&>(*this)
+ );
+ }
+
+ typedef static_array_aux::interface<
+ N, Tag, T, lazy_alloc
+ > super_t;
+
+ public:
+
+ array_& impl(){
+ this->alloc_if();
+ return (*this->ptr);
+ }
+
+ array_ const & impl()const{
+ this->alloc_if();
+ return (*this->ptr);
+ }
+
+ using super_t::operator[];
+
+ private:
+
+ typedef boost::shared_ptr<array_> smart_ptr_;
+ mutable smart_ptr_ ptr;
+
+ };
+
+}// static_array_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/lazy_alloc_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/static_array/alloc/lazy_alloc_fwd.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_STATIC_ARRAY_ALLOC_LAZY_ALLOC_FWD_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_STATIC_ARRAY_ALLOC_LAZY_ALLOC_FWD_ER_2010_HPP
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace alloc_tag{
+ struct lazy_alloc;
+}// alloc_tag
+namespace static_array_aux{
+ template<std::size_t N, typename Tag, typename T, typename D>
+ class lazy_alloc;
+}// static_array_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/static_array/interface.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/static_array/interface.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,241 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_STATIC_ARRAY_INTERFACE_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_STATIC_ARRAY_INTERFACE_ER_2010_HPP
+#include <algorithm>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/int.hpp>
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+#include <boost/array.hpp>
+#include <boost/range.hpp>
+#include <boost/call_traits.hpp>
+#include <boost/range/algorithm/for_each.hpp>
+#include <boost/range/iterator_range.hpp> //iterator_range_detail::
+
+#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/relational_op.hpp>
+#include <boost/assign/v2/put/range/convert.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace static_array_aux{
+
+ template<std::size_t N, typename Tag, typename T>
+ struct interface_traits{
+
+ typedef Tag assign_tag_;
+ typedef typename ref::wrapper<assign_tag_,T> wrapper_;
+ typedef boost::array<wrapper_,N> impl_;
+ typedef typename ref::result_of::unwrap_range<impl_>::type range_;
+ typedef typename ref::result_of::unwrap_range<
+ impl_ const>::type range_c_;
+
+ typedef typename boost::unwrap_reference<T>::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::range_iterator<range_>::type iterator;
+ typedef typename boost::range_iterator<range_c_>::type const_iterator;
+ // wrappers
+ #ifndef BOOST_MSVC
+ typedef typename boost::range_size<impl_>::type size_type;
+ #endif
+ #ifdef BOOST_MSVC
+ typedef std::size_t size_type;
+ #endif
+ typedef typename boost::range_difference<range_>::type difference_type;
+
+ };
+
+ // Requirements:
+ // D.impl() Returns an array of ref-wrappers
+ // D.impl()const Returns a const array of ref-wrappers
+ template<std::size_t N, typename Tag, typename T, typename D>
+ class interface
+ : public relational_op_aux::crtp<
+ interface<N, Tag, T, D>
+ >
+ {
+
+ typedef interface_traits<N, Tag, T> traits_;
+ typedef typename traits_::wrapper_ wrapper_;
+ typedef typename traits_::impl_ impl_;
+ typedef interface<N, T, Tag, D> this_;
+
+ typedef typename boost::remove_const<T>::type lvalue_;
+ typedef typename boost::add_const<T>::type rvalue_;
+
+ public:
+ typedef wrapper_ wrapper_type;
+ typedef typename traits_::value_type value_type;
+ typedef typename traits_::iterator iterator;
+ typedef typename traits_::const_iterator const_iterator;
+ typedef typename traits_::size_type size_type;
+ typedef typename traits_::difference_type difference_type;
+ typedef typename traits_::reference reference;
+ typedef typename traits_::const_reference const_reference;
+
+ BOOST_STATIC_CONSTANT(size_type, static_size = N);
+
+ iterator begin()
+ {
+ return boost::begin( this->unwrap() );
+ }
+ iterator end()
+ {
+ return boost::end( this->unwrap() );
+ }
+ const_iterator begin()const
+ {
+ return boost::begin( this->unwrap() );
+ }
+ const_iterator end()const
+ {
+ return boost::end( this->unwrap() );
+ }
+
+ size_type size() const
+ {
+ return this->impl().size();
+ }
+ bool empty() const
+ {
+ return this->impl().empty();
+ }
+
+ wrapper_& get_wrapper(size_type i)
+ {
+ return (this->impl())[i];
+ }
+
+ wrapper_ const& get_wrapper(size_type i)const
+ {
+ return (this->impl())[i];
+ }
+
+ reference operator[](size_type i)
+ {
+ return (this->impl())[i].unwrap();
+ }
+ const_reference operator[](size_type i)const
+ {
+ return (this->impl())[i].unwrap();
+ }
+
+ reference front()
+ {
+ return (this->impl()).front().unwrap();
+ }
+ const_reference front() const
+ {
+ return (this->impl()).front().unwrap();
+ }
+ reference back()
+ {
+ return (this->impl()).back().unwrap();
+ }
+ const_reference back() const
+ {
+ return (this->impl()).back().unwrap();
+ }
+
+ void swap(interface& other)
+ {
+ typedef boost::mpl::int_<N> int_n_;
+ this->swap_impl(other,int_n_());
+ }
+
+ void assign(lvalue_& val){ this->assign_impl<lvalue_>( val ); }
+ void assign(rvalue_& val){ this->assign_impl<rvalue_>( val ); }
+
+ BOOST_ASSIGN_V2_CONVERT_CONVERT_MF
+ BOOST_ASSIGN_V2_CONVERT_OPERATOR_MF
+
+ // 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:
+ typedef boost::mpl::false_ false_;
+ typedef boost::mpl::true_ true_;
+
+ void swap_impl(interface& other, boost::mpl::int_<0>){}
+
+ template<int N1>
+ void swap_impl(interface& other, boost::mpl::int_<N1>)
+ {
+ reference lhs = (*this)[N1-1];
+ reference rhs = (other)[N1-1];
+ lhs.swap(rhs);
+ typedef boost::mpl::int_<N1-1> next_int_;
+ this->swap_impl( other, next_int_() );
+ }
+
+ typename traits_::range_ unwrap()
+ {
+ return ref::unwrap_range( this->impl() );
+ }
+ typename traits_::range_c_ unwrap()const{
+ return ref::unwrap_range( this->impl() );
+ }
+
+ impl_& impl(){
+ return static_cast<D&>(*this).impl();
+ }
+
+ impl_ const& impl()const{
+ return static_cast<const D&>(*this).impl();
+ }
+
+ template<typename U>
+ void assign_impl(U& val)
+ {
+ impl_& ra = this->impl();
+ boost::for_each(
+ ra,
+ functional::assigner<U>( val )
+ );
+ }
+
+ };
+
+}// static_array_aux
+namespace container_type_traits{
+ // TODO
+
+// template<typename T,std::size_t sz>
+// struct is_static_array<boost::array<T, sz> > : boost::mpl::true_{};
+
+}// container_type_traits
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/static_array/static_array.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/static_array/static_array.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_STATIC_ARRAY_STATIC_ARRAY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_STATIC_ARRAY_STATIC_ARRAY_ER_2010_HPP
+
+#include <boost/assign/v2/ref/static_array/alloc/alloc.hpp>
+#include <boost/assign/v2/ref/static_array/interface.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/wrapper/base.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper/base.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,49 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_BASE
+#include <boost/config.hpp>
+#include <boost/type_traits/is_const.hpp>
+ template<typename D, typename T>
+ class wrapper_crtp;
+#define BOOST_ASSIGN_V2_REF_WRAPPER_BASE(X) \
+ typedef T type; \
+ BOOST_STATIC_CONSTANT( \
+ bool, \
+ is_const = boost::is_const<T>::value \
+ ); \
+ \
+ X(){} \
+ \
+ explicit X( T& r ) : ref_(&r) \
+ { } \
+ \
+ void rebind(T& r ) \
+ { \
+ this->ref_ = &r; \
+ } \
+ \
+ T& unwrap() const \
+ { \
+ return *this->ref_; \
+ } \
+ \
+ T* get_pointer() const { return this->ref_; } \
+ \
+ using wrapper_crtp<wrapper,T>::operator=; \
+ \
+ protected: \
+ friend class wrapper_crtp<wrapper,T>; \
+ \
+ T* ref_; \
+ public: \
+/**/
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/wrapper/copy.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper/copy.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,72 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_COPY_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_WRAPPER_COPY_ER_2010_HPP
+#include <algorithm>
+#include <boost/mpl/bool.hpp>
+#include <boost/call_traits.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/assign/v2/ref/wrapper/framework.hpp>
+#include <boost/assign/v2/ref/wrapper/base.hpp>
+#include <boost/assign/v2/ref/wrapper/crtp.hpp>
+
+namespace boost{
+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>
+ :
+ public ref::wrapper_crtp< wrapper<ref::assign_tag::copy, T>, T>
+ {
+ BOOST_ASSIGN_V2_REF_WRAPPER_BASE( wrapper )
+
+ typedef ref::assign_tag::copy assign_tag;
+
+ void assign(typename boost::call_traits<T>::param_type r )
+ {
+ this->unwrap() = r;
+ }
+
+ void swap( wrapper& r )
+ {
+ std::swap( this->unwrap(), r.unwrap() );
+ }
+
+ };
+
+namespace type_traits{
+
+ template<typename T>
+ struct copy_wrapper{ typedef ref::wrapper<assign_tag::copy,T> type; };
+
+ template<typename T>
+ struct does_assign_copy_impl : boost::mpl::false_{};
+
+ template<typename T>
+ struct does_assign_copy_impl<
+ ref::wrapper<assign_tag::copy, T>
+ > : boost::mpl::true_{};
+
+ template<typename T>
+ struct does_assign_copy : does_assign_copy_impl<
+ typename boost::remove_cv<T>::type
+ >{};
+
+}// type_traits
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper/crtp.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,149 @@
+//////////////////////////////////////////////////////////////////////////////
+// Boost.Assign v2 //
+// //
+// Copyright (C) 2003-2004 Thorsten Ottosen //
+// Copyright (C) 2010 Manuel Peinado Gallego //
+// 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_CRTP_ER_MPG_2010_HPP
+#define BOOST_ASSIGN_V2_REF_WRAPPER_CRTP_ER_MPG_2010_HPP
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/call_traits.hpp>
+#include <boost/operators.hpp>
+
+// This design is an outgrowth of assign_detail::assign_reference<> by TO. The
+// new feature is that the assignment operator and swap member function are
+// customizable and there are two options, identified by MPG : the
+// reference is assigned a new value (copy), or a new address (rebind).
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+
+ template<typename D, typename T>
+ class wrapper_crtp
+ :
+ boost::less_than_comparable1<
+ wrapper_crtp<D,T>,
+ boost::less_than_comparable2<
+ wrapper_crtp<D,T>,
+ T,
+ boost::equality_comparable1<
+ wrapper_crtp<D,T>,
+ boost::equality_comparable2<
+ wrapper_crtp<D,T>,
+ T
+ >
+ >
+ >
+ >
+ {
+
+ typedef typename boost::remove_const<T>::type lvalue_;
+ typedef typename boost::add_const<T>::type rvalue_;
+
+ public:
+ // protected
+
+ D& derived(){ return static_cast<D&>( *this ); }
+ D const & derived()const{ return static_cast<D const&>( *this ); }
+
+ public:
+
+ void operator=(lvalue_& r ){ this->derived().assign( r ); }
+ void operator=(rvalue_& r ){ this->derived().assign( r ); }
+
+ void swap( wrapper_crtp& r )
+ {
+ return this->derived().swap( r );
+ }
+
+ operator T&() const
+ {
+ return this->derived().unwrap();
+ }
+
+ bool operator==( const wrapper_crtp& r )const
+ {
+ return this->derived().unwrap() == r.derived().unwrap();
+ }
+
+ bool operator<( const wrapper_crtp& r )const
+ {
+ return this->derived().unwrap() < r.derived().unwrap();
+ }
+
+ bool operator==( typename boost::call_traits<T>::param_type r )const
+ {
+ return this->derived().unwrap() == r;
+ }
+
+ bool operator<( typename boost::call_traits<T>::param_type r )const
+ {
+ return this->derived().unwrap() < r;
+ }
+
+ bool operator>( typename boost::call_traits<T>::param_type r )const
+ {
+ return this->derived().unwrap() > r;
+ }
+
+
+ };
+
+ template<typename D,typename T>
+ void rebind( wrapper_crtp<D,T>& a, T& r ){ a.rebind( r ); }
+
+ template<typename D,typename T>
+ inline void swap( wrapper_crtp<D,T>& l, wrapper_crtp<D,T>& r )
+ {
+ l.swap( r );
+ }
+
+namespace functional{
+
+ template<typename T>
+ struct assigner
+ {
+ assigner(T& val):value( val ){}
+
+ typedef typename boost::remove_const<T>::type lvalue_;
+ typedef typename boost::add_const<T>::type rvalue_;
+
+ typedef void result_type;
+
+ template<typename D> void operator()(wrapper_crtp<D, lvalue_>& w)const
+ {
+ this->impl<D, lvalue_>( w );
+ }
+
+ template<typename D> void operator()(wrapper_crtp<D, rvalue_>& w)const
+ {
+ this->impl<D, rvalue_>( w );
+ }
+
+ private:
+ template<typename D, typename U>
+ void impl(wrapper_crtp<D, U>& w)const
+ {
+ w = this->value;
+ }
+
+ assigner();
+ mutable T& value;
+ };
+
+}// functional
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/wrapper/deduce_assign_tag.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper/deduce_assign_tag.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,40 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_DEDUCE_ASSIGN_TAG_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_WRAPPER_DEDUCE_ASSIGN_TAG_ER_2010_HPP
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost{
+ struct use_default;
+namespace assign{
+namespace v2{
+namespace ref{
+namespace assign_tag{
+ struct copy;
+}// assign_tag
+namespace wrapper_aux{
+
+ template<typename Tag>
+ struct deduce_assign_tag : boost::mpl::eval_if<
+ boost::is_same<Tag, boost::use_default>,
+ boost::mpl::identity<ref::assign_tag::copy>,
+ boost::mpl::identity<Tag>
+ >
+ {};
+
+}// wrapper_aux
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/wrapper/framework.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper/framework.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,89 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_FRAMEWORK_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_WRAPPER_FRAMEWORK_ER_2010_HPP
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+
+ template<typename Tag,typename T>
+ struct wrapper{
+ // specialize on Tag
+ };
+
+namespace result_of{
+ template<typename Tag,typename T>
+ struct wrap{
+ typedef ref::wrapper<Tag,T> type;
+ };
+}
+
+
+template<typename Tag, typename T>
+inline ref::wrapper<Tag,T>
+wrap(T & t)
+{
+ typedef ref::wrapper<Tag,T> result_;
+ return result_( t );
+}
+
+template<typename Tag, typename T>
+inline ref::wrapper<Tag,T const>
+wrap(T const & t)
+{
+ typedef ref::wrapper<Tag,T const> result_;
+ return result_( t );
+}
+
+}// ref
+}// v2
+}// assign
+}// boost
+
+#include <boost/mpl/bool.hpp>
+#include <boost/ref.hpp>
+#include <boost/assign/v2/ref/wrapper/wrapper.hpp>
+
+// These are specializations of classes in boost/ref.hpp.
+
+namespace boost{
+
+#define t assign::v2::ref::wrapper<Tag,T>
+
+# define AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(suffix) \
+template<typename Tag,typename T> \
+class is_reference_wrapper< t suffix> \
+ : public mpl::true_ \
+{ \
+}; \
+\
+template<typename Tag,typename T> \
+class unwrap_reference< t suffix > \
+{ \
+ public: \
+ typedef T type; \
+}; \
+/**/
+
+AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF( )
+#if !defined(BOOST_NO_CV_SPECIALIZATIONS)
+AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF( const )
+AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF( volatile )
+AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF( const volatile )
+#endif
+
+#undef t
+#undef AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF
+
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/wrapper/rebind.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper/rebind.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,60 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_REBIND_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_WRAPPER_REBIND_ER_2010_HPP
+#include <algorithm>
+//#include <boost/call_traits.hpp>
+#include <boost/assign/v2/ref/wrapper/framework.hpp>
+#include <boost/assign/v2/ref/wrapper/base.hpp>
+#include <boost/assign/v2/ref/wrapper/crtp.hpp>
+
+namespace boost{
+namespace assign{
+namespace v2{
+namespace ref{
+namespace assign_tag{ struct rebind{}; }
+namespace assign_rebind{ typedef assign_tag::rebind assign_tag_; }
+
+ template< class T >
+ struct wrapper<assign_tag::rebind, T>
+ : public wrapper_crtp< wrapper<assign_tag::rebind, T>, T >
+ {
+ typedef assign_tag::rebind assign_tag;
+
+ BOOST_ASSIGN_V2_REF_WRAPPER_BASE( wrapper )
+
+ void assign( T& r )
+ {
+ this->rebind( r );
+ }
+
+ void swap( wrapper& r )
+ {
+ T* tmp = this->ref_;
+ this->rebind( r.unwrap() );
+ r.rebind( tmp );
+ }
+
+ };
+
+namespace type_traits{
+
+ template<typename T>
+ struct rebind_wrapper{
+ typedef ref::wrapper<assign_tag::rebind,T> type;
+ };
+
+}// type_traits
+}// ref
+}// v2
+}// assign
+}// boost
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/ref/wrapper/wrapper.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/ref/wrapper/wrapper.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -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_REF_WRAPPER_WRAPPER_ER_2010_HPP
+#define BOOST_ASSIGN_V2_REF_WRAPPER_WRAPPER_ER_2010_HPP
+
+#include <boost/assign/v2/ref/wrapper/deduce_assign_tag.hpp>
+#include <boost/assign/v2/ref/wrapper/copy.hpp>
+#include <boost/assign/v2/ref/wrapper/rebind.hpp>
+
+#endif

Added: sandbox/statistics/support/boost/assign/v2/v2.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/support/boost/assign/v2/v2.hpp 2010-11-15 16:07:23 EST (Mon, 15 Nov 2010)
@@ -0,0 +1,19 @@
+//////////////////////////////////////////////////////////////////////////////
+// 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_V2_ER_2010_HPP
+#define BOOST_ASSIGN_V2_V2_ER_2010_HPP
+
+#include <boost/assign/v2/anon/anon.hpp>
+#include <boost/assign/v2/chain/chain.hpp>
+#include <boost/assign/v2/detail/detail.hpp>
+#include <boost/assign/v2/put/put.hpp>
+#include <boost/assign/v2/ref/ref.hpp>
+
+#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