Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r85036 - in sandbox/container_gen: boost/container_gen boost/detail/metafunction libs/container_gen/doc libs/container_gen/doc/html libs/container_gen/doc/html/container_gen libs/container_gen/doc/html/container_gen/reference libs/container_gen/test
From: sponage_at_[hidden]
Date: 2013-07-14 13:26:03


Author: expaler
Date: 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013)
New Revision: 85036
URL: http://svn.boost.org/trac/boost/changeset/85036

Log:
Updated Boost.ContainerGen to version 0.10

Added:
   sandbox/container_gen/boost/detail/metafunction/has_random_access_iterators.hpp (contents, props changed)
Replaced:
   sandbox/container_gen/boost/container_gen/c_str_cmp_selectors.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/c_str_cmp_selectors_fwd.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/container_gen.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/container_gen_fwd.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/emplace_assoc_function_gen.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/emplace_function_gen.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/has_emplace_mfunc_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/has_stable_iters_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/insert_range_function_gen.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/insert_range_result_gen.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_allocator_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_associative_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_compare_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_container_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_flat_assoc_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_hashed_assoc_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_hasher_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_heap_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_iteratable_heap_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_mergeable_heap_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_multiple_assoc_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_mutable_heap_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_order_iter_heap_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_ptr_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_queue_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_random_access_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_recursive_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_reversible_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_stack_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_std_heap_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_tr1_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/is_unique_assoc_selector.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/push_range_function_gen.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/selector_keywords.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/selectors.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/selectors_fwd.hpp (contents, props changed)
   sandbox/container_gen/boost/container_gen/splice_function_gen.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_allocator_type.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_apply_template.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_argument_type.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_auto_type.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_const_iterator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_const_pointer.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_const_reference.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_const_reverse_iterator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_container_typedefs.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_difference_type.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_first_argument_type.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_handle_type.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_hasher.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_input_const_iterator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_iterator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_iterator_category.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_key_compare.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_key_type.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_back.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_begin_end.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_clear.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_count.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_decrease.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_emplace.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_empty.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_equal_range.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_erase.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_find.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_front.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_get_allocator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_increase.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_insert.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_merge.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_ordered_begin_end.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_pop.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_push.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_rbegin_rend.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_resize.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_size.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_top.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_mfunc_update.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_ordered_iterator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_pointer.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_reference.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_reverse_iterator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_rvrs_container_typedefs.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_second_argument_type.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_size_type.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_stable_iterators.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_value_compare.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/has_value_type.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_adaptable_binary_func.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_adaptable_unary_function.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_allocator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_associative_container.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_back_insertion_sequence.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_bidirectional_iterator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_container.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_container_with_emplace.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_flat_assoc_container.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_front_insertion_sequence.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_function_wrt.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_hashed_assoc_container.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_heap.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_input_iterator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_iteratable_heap.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_mergeable_heap.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_multi_assoc_container.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_mutable_heap.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_n_ary_function.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_order_iteratable_heap.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_ptr_container.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_queue.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_random_access_container.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_random_access_iterator.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_reversible_container.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_sequence.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_sorted_assoc_container.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_stack_or_std_heap.hpp (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/is_unique_assoc_container.hpp (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/changelog.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/container_gen.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/changelog.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/container_gen.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/emplace_assoc_function_gen.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/emplace_function_gen.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/has_emplace_mfunc_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/has_stable_iters_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/insert_range_function_gen.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/insert_range_result_gen.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_allocator_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_associative_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_compare_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_container_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_flat_assoc_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_hashed_assoc_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_hasher_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_heap_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_iter_heap_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_mergeable_heap_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_multiple_assoc_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_mutable_heap_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_ord_iter_heap_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_ptr_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_queue_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_random_access_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_recursive_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_reversible_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_stack_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_std_heap_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_tr1_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_unique_assoc_selector.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/push_range_function_gen.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/selectors.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/splice_function_gen.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/index.html (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_container_gen.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_emplace_assoc_func_gen.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_emplace_function_gen.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_has_emplace_mfunc_sel.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_has_stable_iters_sel.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_ins_range_function_gen.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_insert_range_result_gen.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_allocator_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_associative_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_compare_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_container_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_flat_assoc_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_hashed_assoc_sel.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_hasher_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_heap_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_iter_heap_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_merge_heap_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_multiple_assoc_sel.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_muta_heap_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_o_iter_heap_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_ptr_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_queue_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_rand_access_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_recursive_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_reversible_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_stack_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_std_heap_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_tr1_selector.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_is_unique_assoc_sel.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_push_range_function_gen.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_selectors.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/ref_splice_function_gen.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/reference.qbk (contents, props changed)
   sandbox/container_gen/libs/container_gen/test/emplace_assoc_function_gen.cpp (contents, props changed)
   sandbox/container_gen/libs/container_gen/test/emplace_function_gen.cpp (contents, props changed)
   sandbox/container_gen/libs/container_gen/test/insert_range_function_gen.cpp (contents, props changed)
   sandbox/container_gen/libs/container_gen/test/push_range_function_gen.cpp (contents, props changed)
   sandbox/container_gen/libs/container_gen/test/selectors.cpp (contents, props changed)
   sandbox/container_gen/libs/container_gen/test/splice_function_gen.cpp (contents, props changed)

Added: sandbox/container_gen/boost/container_gen/c_str_cmp_selectors.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/c_str_cmp_selectors.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,197 @@
+//=============================================================================
+// Copyright (C) 2012-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_C_STR_CMP_SELECTORS_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_C_STR_CMP_SELECTORS_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/container_gen/c_str_cmp_selectors_fwd.hpp>
+
+#if !defined BOOST_NO_CWCHAR
+#include <cwchar>
+#endif
+
+//[reference__c_str_compare_selectors
+namespace boost {
+
+ struct c_str_equal_to_selector
+ {
+ template <typename T>
+ struct apply
+ {
+ class type
+ {
+ inline static bool
+ _evaluate(
+ T const& lhs
+ , T const& rhs
+ , ::std::tr1::true_type
+ )
+ {
+ return !strcmp(lhs, rhs);
+ }
+
+//<-
+#if !defined BOOST_NO_CWCHAR
+//->
+ inline static bool
+ _evaluate(
+ T const& lhs
+ , T const& rhs
+ , ::std::tr1::false_type
+ )
+ {
+ return !wcscmp(lhs, rhs);
+ }
+//<-
+#endif
+//->
+
+ public:
+ typedef bool result_type;
+ typedef T const& first_argument_type;
+ typedef T const& second_argument_type;
+
+ inline bool operator()(T const& lhs, T const& rhs) const
+ {
+ return type::_evaluate(
+ lhs
+ , rhs
+ , ::std::tr1::is_same<
+ typename ::std::tr1::remove_cv<
+ typename ::std::tr1::remove_pointer<
+ typename ::std::tr1::remove_extent<T>::type
+ >::type
+ >::type
+ , char
+ >()
+ );
+ }
+ };
+ };
+ };
+
+ struct c_str_less_than_selector
+ {
+ template <typename T>
+ struct apply
+ {
+ class type
+ {
+ inline static bool
+ _evaluate(
+ T const& lhs
+ , T const& rhs
+ , ::std::tr1::true_type
+ )
+ {
+ return strcmp(lhs, rhs) < 0;
+ }
+
+//<-
+#if !defined BOOST_NO_CWCHAR
+//->
+ inline static bool
+ _evaluate(
+ T const& lhs
+ , T const& rhs
+ , ::std::tr1::false_type
+ )
+ {
+ return wcscmp(lhs, rhs) < 0;
+ }
+//<-
+#endif
+//->
+
+ public:
+ typedef bool result_type;
+ typedef T const& first_argument_type;
+ typedef T const& second_argument_type;
+
+ inline bool operator()(T const& lhs, T const& rhs) const
+ {
+ return type::_evaluate(
+ lhs
+ , rhs
+ , ::std::tr1::is_same<
+ typename ::std::tr1::remove_cv<
+ typename ::std::tr1::remove_pointer<
+ typename ::std::tr1::remove_extent<T>::type
+ >::type
+ >::type
+ , char
+ >()
+ );
+ }
+ };
+ };
+ };
+
+ struct c_str_greater_than_selector
+ {
+ template <typename T>
+ struct apply
+ {
+ class type
+ {
+ inline static bool
+ _evaluate(
+ T const& lhs
+ , T const& rhs
+ , ::std::tr1::true_type
+ )
+ {
+ return 0 < strcmp(lhs, rhs);
+ }
+
+//<-
+#if !defined BOOST_NO_CWCHAR
+//->
+ inline static bool
+ _evaluate(
+ T const& lhs
+ , T const& rhs
+ , ::std::tr1::false_type
+ )
+ {
+ return 0 < wcscmp(lhs, rhs);
+ }
+//<-
+#endif
+//->
+
+ public:
+ typedef bool result_type;
+ typedef T const& first_argument_type;
+ typedef T const& second_argument_type;
+
+ inline bool operator()(T const& lhs, T const& rhs) const
+ {
+ return type::_evaluate(
+ lhs
+ , rhs
+ , ::std::tr1::is_same<
+ typename ::std::tr1::remove_cv<
+ typename ::std::tr1::remove_pointer<
+ typename ::std::tr1::remove_extent<T>::type
+ >::type
+ >::type
+ , char
+ >()
+ );
+ }
+ };
+ };
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_CONTAINER_GEN_C_STR_CMP_SELECTORS_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/c_str_cmp_selectors_fwd.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/c_str_cmp_selectors_fwd.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,20 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_C_STR_CMP_SELECTORS_FWD_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_C_STR_CMP_SELECTORS_FWD_HPP_INCLUDED
+
+namespace boost {
+
+ struct c_str_equal_to_selector;
+ struct c_str_less_than_selector;
+ struct c_str_greater_than_selector;
+} // namespace boost
+
+#endif // BOOST_CONTAINER_GEN_C_STR_CMP_SELECTORS_FWD_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/container_gen.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/container_gen.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,2195 @@
+//=============================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2010 Thomas Claveirole
+// Copyright 2011-2013 Cromwell D. Enage
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole,
+// Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_CONTAINER_GEN_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_CONTAINER_GEN_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//=============================================================================
+// The main container_gen metafunction uses partial specialization,
+// so we also include a workaround.
+//=============================================================================
+
+namespace boost {
+
+ template <typename Selector, typename T1, typename T2>
+ struct container_gen
+ //<-
+ : ::boost::mpl::apply_wrap2<Selector,T1,T2>
+ //->
+ {
+ // typedef .... type;
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, container_gen, (Selector, T1, T2))
+ //->
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <vector>
+#include <deque>
+#include <list>
+#include <set>
+#include <map>
+
+#if !defined BOOST_MSVC
+#include <boost/array.hpp>
+#include <boost/tr1/array.hpp>
+#include <boost/ptr_container/ptr_array.hpp>
+#endif
+
+#include <boost/unordered/unordered_set.hpp>
+#include <boost/unordered/unordered_map.hpp>
+
+#include <boost/tr1/unordered_set.hpp>
+#include <boost/tr1/unordered_map.hpp>
+
+#include <boost/ptr_container/ptr_vector.hpp>
+#include <boost/ptr_container/ptr_deque.hpp>
+#include <boost/ptr_container/ptr_list.hpp>
+#include <boost/ptr_container/ptr_set.hpp>
+#include <boost/ptr_container/ptr_map.hpp>
+#include <boost/ptr_container/ptr_unordered_set.hpp>
+#include <boost/ptr_container/ptr_unordered_map.hpp>
+
+#include <boost/container/vector.hpp>
+#include <boost/container/stable_vector.hpp>
+#include <boost/container/static_vector.hpp>
+#include <boost/container/deque.hpp>
+#include <boost/container/list.hpp>
+#include <boost/container/slist.hpp>
+#include <boost/container/set.hpp>
+#include <boost/container/map.hpp>
+#include <boost/container/flat_set.hpp>
+#include <boost/container/flat_map.hpp>
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+
+#include <boost/parameter.hpp>
+
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/selector_keywords.hpp>
+#include <boost/container_gen/detail/selector_signatures.hpp>
+
+//[reference__container_gen__stable_vector_specialization
+namespace boost {
+
+ //<-
+ template <typename Selector, typename T1, typename T2>
+ struct container_gen
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, container_gen, (Selector, T1, T2))
+ };
+
+#if !defined BOOST_MSVC
+ template <typename T0, typename T1, typename ValueType>
+ struct container_gen<array_selector<T0,T1>,ValueType,void>
+ {
+ private:
+ typedef typename detail::array_selector_signature::bind<T0,T1>::type
+ _arg_pack;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , constant_size_tag
+ >::type
+ _constant_size;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_tr1_not_boost_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::std::tr1::array<ValueType,_constant_size::value>
+ , ::boost::array<ValueType,_constant_size::value>
+ >::type
+ type;
+ };
+#endif // BOOST_MSVC
+
+ template <typename T0, typename T1, typename ValueType>
+ struct container_gen<vector_selector<T0,T1>,ValueType,void>
+ {
+ private:
+ typedef typename detail::sequence_selector_signature::bind<T0,T1>::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , ValueType
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::container::vector<ValueType,_allocator>
+ , ::std::vector<ValueType,_allocator>
+ >::type
+ type;
+ };
+ //->
+
+ template <typename AllocatorSelector, typename ValueType>
+ struct container_gen<
+ stable_vector_selector<AllocatorSelector>
+ , ValueType
+ , void
+ >
+ {
+ typedef ::boost::container::stable_vector<
+ ValueType
+ , typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , ValueType
+ >::type
+ >
+ type;
+ };
+
+ template <typename ConstantCapacity, typename ValueType>
+ struct container_gen<
+ static_vector_selector<ConstantCapacity>
+ , ValueType
+ , void
+ >
+ {
+ typedef ::boost::container::static_vector<
+ ValueType
+ , ConstantCapacity::value
+ >
+ type;
+ };
+
+ //<-
+ template <typename T0, typename T1, typename ValueType>
+ struct container_gen<deque_selector<T0,T1>,ValueType,void>
+ {
+ private:
+ typedef typename detail::sequence_selector_signature::bind<T0,T1>::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , ValueType
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::container::deque<ValueType,_allocator>
+ , ::std::deque<ValueType,_allocator>
+ >::type
+ type;
+ };
+
+ template <typename T0, typename T1, typename ValueType>
+ struct container_gen<list_selector<T0,T1>,ValueType,void>
+ {
+ private:
+ typedef typename detail::sequence_selector_signature::bind<T0,T1>::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , ValueType
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::container::list<ValueType,_allocator>
+ , ::std::list<ValueType,_allocator>
+ >::type
+ type;
+ };
+
+ template <typename AllocatorSelector, typename ValueType>
+ struct container_gen<slist_selector<AllocatorSelector>,ValueType,void>
+ {
+ typedef ::boost::container::slist<
+ ValueType
+ , typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , ValueType
+ >::type
+ >
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<set_selector<T0,T1,T2>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::boost_or_std_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , Key
+ , Mapped
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::container::set<Key,_comparator,_allocator>
+ , ::boost::container::map<
+ Key
+ , Mapped
+ , _comparator
+ , _allocator
+ >
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::set<Key,_comparator,_allocator>
+ , ::std::map<Key,Mapped,_comparator,_allocator>
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<map_selector<T0,T1,T2>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::boost_or_std_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , Key
+ , Mapped
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::container::set<Key,_comparator,_allocator>
+ , ::boost::container::map<
+ Key
+ , Mapped
+ , _comparator
+ , _allocator
+ >
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::set<Key,_comparator,_allocator>
+ , ::std::map<Key,Mapped,_comparator,_allocator>
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<multiset_selector<T0,T1,T2>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::boost_or_std_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , Key
+ , Mapped
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::container::multiset<
+ Key
+ , _comparator
+ , _allocator
+ >
+ , ::boost::container::multimap<
+ Key
+ , Mapped
+ , _comparator
+ , _allocator
+ >
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::multiset<Key,_comparator,_allocator>
+ , ::std::multimap<Key,Mapped,_comparator,_allocator>
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<multimap_selector<T0,T1,T2>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::boost_or_std_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , Key
+ , Mapped
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::container::multiset<
+ Key
+ , _comparator
+ , _allocator
+ >
+ , ::boost::container::multimap<
+ Key
+ , Mapped
+ , _comparator
+ , _allocator
+ >
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::multiset<Key,_comparator,_allocator>
+ , ::std::multimap<Key,Mapped,_comparator,_allocator>
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<hash_set_selector<T0,T1,T2,T3>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::hashed_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ _arg_pack;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_tr1_not_boost_tag
+ , ::boost::mpl::false_
+ >::type
+ _is_tr1;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , hasher_selector_tag
+ , typename ::boost::mpl::if_<
+ _is_tr1
+ , tr1_hash_selector
+ , boost_hash_selector
+ >::type
+ >::type
+ , Key
+ >::type
+ _hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , equal_to_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , Key
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ _is_tr1
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::tr1::unordered_set<
+ Key
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ , ::std::tr1::unordered_map<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::unordered_set<
+ Key
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ , ::boost::unordered_map<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<hash_map_selector<T0,T1,T2,T3>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::hashed_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ _arg_pack;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_tr1_not_boost_tag
+ , ::boost::mpl::false_
+ >::type
+ _is_tr1;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , hasher_selector_tag
+ , typename ::boost::mpl::if_<
+ _is_tr1
+ , tr1_hash_selector
+ , boost_hash_selector
+ >::type
+ >::type
+ , Key
+ >::type
+ _hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , equal_to_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , Key
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ _is_tr1
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::tr1::unordered_set<
+ Key
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ , ::std::tr1::unordered_map<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::unordered_set<
+ Key
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ , ::boost::unordered_map<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<hash_multiset_selector<T0,T1,T2,T3>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::hashed_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ _arg_pack;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_tr1_not_boost_tag
+ , ::boost::mpl::false_
+ >::type
+ _is_tr1;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , hasher_selector_tag
+ , typename ::boost::mpl::if_<
+ _is_tr1
+ , tr1_hash_selector
+ , boost_hash_selector
+ >::type
+ >::type
+ , Key
+ >::type
+ _hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , equal_to_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , Key
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ _is_tr1
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::tr1::unordered_multiset<
+ Key
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ , ::std::tr1::unordered_multimap<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::unordered_multiset<
+ Key
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ , ::boost::unordered_multimap<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<hash_multimap_selector<T0,T1,T2,T3>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::hashed_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ _arg_pack;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , is_tr1_not_boost_tag
+ , ::boost::mpl::false_
+ >::type
+ _is_tr1;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , hasher_selector_tag
+ , typename ::boost::mpl::if_<
+ _is_tr1
+ , tr1_hash_selector
+ , boost_hash_selector
+ >::type
+ >::type
+ , Key
+ >::type
+ _hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , equal_to_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , Key
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ _is_tr1
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::tr1::unordered_multiset<
+ Key
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ , ::std::tr1::unordered_multimap<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::unordered_multiset<
+ Key
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ , ::boost::unordered_multimap<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _allocator
+ >
+ >
+ >::type
+ type;
+ };
+
+ template <typename T0, typename T1, typename Key, typename Mapped>
+ struct container_gen<flat_set_selector<T0,T1>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::associative_selector_signature::bind<
+ T0
+ , T1
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_flat_allocator_selector
+ >::type
+ , Key
+ , Mapped
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::container::flat_set<Key,_comparator,_allocator>
+ , ::boost::container::flat_map<
+ Key
+ , Mapped
+ , _comparator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+ template <typename T0, typename T1, typename Key, typename Mapped>
+ struct container_gen<flat_map_selector<T0,T1>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::associative_selector_signature::bind<
+ T0
+ , T1
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_flat_allocator_selector
+ >::type
+ , Key
+ , Mapped
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::container::flat_set<Key,_comparator,_allocator>
+ , ::boost::container::flat_map<
+ Key
+ , Mapped
+ , _comparator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+ template <typename T0, typename T1, typename Key, typename Mapped>
+ struct container_gen<flat_multiset_selector<T0,T1>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::associative_selector_signature::bind<
+ T0
+ , T1
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_flat_allocator_selector
+ >::type
+ , Key
+ , Mapped
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::container::flat_multiset<
+ Key
+ , _comparator
+ , _allocator
+ >
+ , ::boost::container::flat_multimap<
+ Key
+ , Mapped
+ , _comparator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+ template <typename T0, typename T1, typename Key, typename Mapped>
+ struct container_gen<flat_multimap_selector<T0,T1>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::associative_selector_signature::bind<
+ T0
+ , T1
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_flat_allocator_selector
+ >::type
+ , Key
+ , Mapped
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::container::flat_multiset<
+ Key
+ , _comparator
+ , _allocator
+ >
+ , ::boost::container::flat_multimap<
+ Key
+ , Mapped
+ , _comparator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+#if !defined BOOST_MSVC
+ template <typename T0, typename T1, typename ValueType>
+ struct container_gen<ptr_array_selector<T0,T1>,ValueType,void>
+ {
+ private:
+ typedef typename detail::ptr_array_selector_signature::bind<
+ T0
+ , T1
+ >::type
+ _arg_pack;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , constant_size_tag
+ >::type
+ _constant_size;
+
+ public:
+ typedef ::boost::ptr_array<
+ ValueType
+ , _constant_size::value
+ , typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ >
+ type;
+ };
+#endif // BOOST_MSVC
+
+ template <typename T0, typename T1, typename ValueType>
+ struct container_gen<ptr_vector_selector<T0,T1>,ValueType,void>
+ {
+ private:
+ typedef typename detail::ptr_sequence_selector_signature::bind<
+ T0
+ , T1
+ >::type
+ _arg_pack;
+
+ public:
+ typedef ::boost::ptr_vector<
+ ValueType
+ , typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ , typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ >
+ type;
+ };
+
+ template <typename T0, typename T1, typename ValueType>
+ struct container_gen<ptr_deque_selector<T0,T1>,ValueType,void>
+ {
+ private:
+ typedef typename detail::ptr_sequence_selector_signature::bind<
+ T0
+ , T1
+ >::type
+ _arg_pack;
+
+ public:
+ typedef ::boost::ptr_deque<
+ ValueType
+ , typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ , typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ >
+ type;
+ };
+
+ template <typename T0, typename T1, typename ValueType>
+ struct container_gen<ptr_list_selector<T0,T1>,ValueType,void>
+ {
+ private:
+ typedef typename detail::ptr_sequence_selector_signature::bind<
+ T0
+ , T1
+ >::type
+ _arg_pack;
+
+ public:
+ typedef ::boost::ptr_list<
+ ValueType
+ , typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ , typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ >
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<ptr_set_selector<T0,T1,T2>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::ptr_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ _clone_allocator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_set<
+ Key
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ , ::boost::ptr_map<
+ Key
+ , Mapped
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<ptr_map_selector<T0,T1,T2>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::ptr_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ _clone_allocator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_set<
+ Key
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ , ::boost::ptr_map<
+ Key
+ , Mapped
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<ptr_multiset_selector<T0,T1,T2>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::ptr_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ _clone_allocator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_multiset<
+ Key
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ , ::boost::ptr_multimap<
+ Key
+ , Mapped
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<ptr_multimap_selector<T0,T1,T2>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::ptr_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ _clone_allocator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_multiset<
+ Key
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ , ::boost::ptr_multimap<
+ Key
+ , Mapped
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<ptr_hash_set_selector<T0,T1,T2,T3>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::ptr_hashed_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , hasher_selector_tag
+ , boost_hash_selector
+ >::type
+ , Key
+ >::type
+ _hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , equal_to_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ _clone_allocator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_unordered_set<
+ Key
+ , _hasher
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ , ::boost::ptr_unordered_map<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<ptr_hash_map_selector<T0,T1,T2,T3>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::ptr_hashed_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , hasher_selector_tag
+ , boost_hash_selector
+ >::type
+ , Key
+ >::type
+ _hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , equal_to_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ _clone_allocator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_unordered_set<
+ Key
+ , _hasher
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ , ::boost::ptr_unordered_map<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<ptr_hash_multiset_selector<T0,T1,T2,T3>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::ptr_hashed_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , hasher_selector_tag
+ , boost_hash_selector
+ >::type
+ , Key
+ >::type
+ _hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , equal_to_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ _clone_allocator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_unordered_multiset<
+ Key
+ , _hasher
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ , ::boost::ptr_unordered_multimap<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename Key
+ , typename Mapped
+ >
+ struct container_gen<ptr_hash_multimap_selector<T0,T1,T2,T3>,Key,Mapped>
+ {
+ private:
+ typedef typename detail::ptr_hashed_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ _arg_pack;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , hasher_selector_tag
+ , boost_hash_selector
+ >::type
+ , Key
+ >::type
+ _hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , equal_to_selector
+ >::type
+ , Key
+ >::type
+ _comparator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_clone_allocator_tag
+ , ::boost::heap_clone_allocator
+ >::type
+ _clone_allocator;
+ typedef typename ::boost::parameter::value_type<
+ _arg_pack
+ , ptr_allocator_tag
+ , ::std::allocator<void*>
+ >::type
+ _allocator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_unordered_multiset<
+ Key
+ , _hasher
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ , ::boost::ptr_unordered_multimap<
+ Key
+ , Mapped
+ , _hasher
+ , _comparator
+ , _clone_allocator
+ , _allocator
+ >
+ >::type
+ type;
+ };
+ //->
+} // namespace boost
+//]
+
+#include <stack>
+#include <queue>
+
+#include <boost/heap/priority_queue.hpp>
+#include <boost/heap/d_ary_heap.hpp>
+#include <boost/heap/binomial_heap.hpp>
+#include <boost/heap/fibonacci_heap.hpp>
+#include <boost/heap/pairing_heap.hpp>
+#include <boost/heap/skew_heap.hpp>
+
+#include <boost/cstdint.hpp>
+
+namespace boost {
+
+ template <typename SequenceSelector, typename ValueType>
+ struct container_gen<
+ stack_selector<SequenceSelector>
+ , ValueType
+ , void
+ >
+ {
+ typedef ::std::stack<
+ ValueType
+ , typename container_gen<SequenceSelector,ValueType>::type
+ >
+ type;
+ };
+
+ template <typename SequenceSelector, typename ValueType>
+ struct container_gen<
+ queue_selector<SequenceSelector>
+ , ValueType
+ , void
+ >
+ {
+ typedef ::std::queue<
+ ValueType
+ , typename container_gen<SequenceSelector,ValueType>::type
+ >
+ type;
+ };
+
+ template <typename T0, typename T1, typename ValueType>
+ struct container_gen<
+ std_heap_selector<T0,T1>
+ , ValueType
+ , void
+ >
+ {
+ private:
+ typedef typename detail::std_heap_selector_signature::bind<T0,T1>::type
+ _arg_pack;
+
+ public:
+ typedef ::std::priority_queue<
+ ValueType
+ , typename container_gen<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , sequence_selector_tag
+ , dequeS
+ >::type
+ , ValueType
+ >::type
+ , typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename ValueType
+ >
+ struct container_gen<
+ priority_queue_selector<T0,T1,T2,T3>
+ , ValueType
+ , void
+ >
+ {
+ private:
+ typedef typename detail::priority_queue_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ _arg_pack;
+
+ public:
+ typedef ::boost::heap::priority_queue<
+ ValueType
+ , ::boost::heap::compare<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::allocator<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::stable<
+ ::boost::heap::detail::extract_stable<_arg_pack>::value
+ >
+ , ::boost::heap::stability_counter_type<
+ typename ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::stability_counter_type
+ , ::boost::uintmax_t
+ >::type
+ >
+ >
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ , typename ValueType
+ >
+ struct container_gen<
+ d_ary_heap_selector<T0,T1,T2,T3,T4,T5>
+ , ValueType
+ , void
+ >
+ {
+ private:
+ typedef typename detail::d_ary_heap_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ , T4
+ , T5
+ >::type
+ _arg_pack;
+
+ public:
+ typedef ::boost::heap::d_ary_heap<
+ ValueType
+ , ::boost::heap::arity<
+ ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::arity
+ >::type::value
+ >
+ , ::boost::heap::compare<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::allocator<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::stable<
+ ::boost::heap::detail::extract_stable<_arg_pack>::value
+ >
+ , ::boost::heap::stability_counter_type<
+ typename ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::stability_counter_type
+ , ::boost::uintmax_t
+ >::type
+ >
+ , ::boost::heap::mutable_<
+ ::boost::heap::detail::extract_mutable<_arg_pack>::value
+ >
+ >
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename ValueType
+ >
+ struct container_gen<
+ binomial_heap_selector<T0,T1,T2,T3>
+ , ValueType
+ , void
+ >
+ {
+ private:
+ typedef typename detail::binomial_heap_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ _arg_pack;
+
+ public:
+ typedef ::boost::heap::binomial_heap<
+ ValueType
+ , ::boost::heap::compare<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::allocator<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::stable<
+ ::boost::heap::detail::extract_stable<_arg_pack>::value
+ >
+ , ::boost::heap::stability_counter_type<
+ typename ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::stability_counter_type
+ , ::boost::uintmax_t
+ >::type
+ >
+ >
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename ValueType
+ >
+ struct container_gen<
+ fibonacci_heap_selector<T0,T1,T2,T3,T4>
+ , ValueType
+ , void
+ >
+ {
+ private:
+ typedef typename detail::fibonacci_heap_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ , T4
+ >::type
+ _arg_pack;
+
+ public:
+ typedef ::boost::heap::fibonacci_heap<
+ ValueType
+ , ::boost::heap::compare<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::allocator<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::stable<
+ ::boost::heap::detail::extract_stable<_arg_pack>::value
+ >
+ , ::boost::heap::stability_counter_type<
+ typename ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::stability_counter_type
+ , ::boost::uintmax_t
+ >::type
+ >
+ , ::boost::heap::constant_time_size<
+ ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::constant_time_size
+ , ::boost::mpl::true_
+ >::type::value
+ >
+ >
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename ValueType
+ >
+ struct container_gen<
+ pairing_heap_selector<T0,T1,T2,T3,T4>
+ , ValueType
+ , void
+ >
+ {
+ private:
+ typedef typename detail::pairing_heap_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ , T4
+ >::type
+ _arg_pack;
+
+ public:
+ typedef ::boost::heap::pairing_heap<
+ ValueType
+ , ::boost::heap::compare<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::allocator<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::stable<
+ ::boost::heap::detail::extract_stable<_arg_pack>::value
+ >
+ , ::boost::heap::stability_counter_type<
+ typename ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::stability_counter_type
+ , ::boost::uintmax_t
+ >::type
+ >
+ , ::boost::heap::constant_time_size<
+ ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::constant_time_size
+ , ::boost::mpl::true_
+ >::type::value
+ >
+ >
+ type;
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ , typename T6
+ , typename ValueType
+ >
+ struct container_gen<
+ skew_heap_selector<T0,T1,T2,T3,T4,T5,T6>
+ , ValueType
+ , void
+ >
+ {
+ private:
+ typedef typename detail::skew_heap_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ , T4
+ , T5
+ , T6
+ >::type
+ _arg_pack;
+
+ public:
+ typedef ::boost::heap::skew_heap<
+ ValueType
+ , ::boost::heap::compare<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , compare_selector_tag
+ , less_than_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::allocator<
+ typename ::boost::mpl::apply_wrap1<
+ typename ::boost::parameter::value_type<
+ _arg_pack
+ , allocator_selector_tag
+ , std_allocator_selector
+ >::type
+ , ValueType
+ >::type
+ >
+ , ::boost::heap::stable<
+ ::boost::heap::detail::extract_stable<_arg_pack>::value
+ >
+ , ::boost::heap::store_parent_pointer<
+ ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::store_parent_pointer
+ , ::boost::mpl::false_
+ >::type::value
+ >
+ , ::boost::heap::stability_counter_type<
+ typename ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::stability_counter_type
+ , ::boost::uintmax_t
+ >::type
+ >
+ , ::boost::heap::constant_time_size<
+ ::boost::parameter::binding<
+ _arg_pack
+ , ::boost::heap::tag::constant_time_size
+ , ::boost::mpl::true_
+ >::type::value
+ >
+ , ::boost::heap::mutable_<
+ ::boost::heap::detail::extract_mutable<_arg_pack>::value
+ >
+ >
+ type;
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_CONTAINER_GEN_CONTAINER_GEN_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/container_gen_fwd.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/container_gen_fwd.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,21 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_CONTAINER_GEN_FWD_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_CONTAINER_GEN_FWD_HPP_INCLUDED
+
+//[reference__container_gen
+namespace boost {
+
+ template <typename Selector, typename T1, typename T2 = void>
+ struct container_gen;
+} // namespace boost
+//]
+
+#endif // BOOST_CONTAINER_GEN_CONTAINER_GEN_FWD_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/emplace_assoc_function_gen.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/emplace_assoc_function_gen.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,1047 @@
+//=============================================================================
+// Copyright (C) 2012-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_EMPLACE_ASSOC_FUNCTION_GEN_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_EMPLACE_ASSOC_FUNCTION_GEN_HPP_INCLUDED
+
+#include <utility>
+#include <boost/config.hpp>
+#include <boost/container_gen/detail/preprocessor.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+#include <boost/preprocessor/repetition/for.hpp>
+#include <boost/preprocessor/control/expr_if.hpp>
+#include <boost/detail/preprocessor/binary_seq_to_params.hpp>
+#elif !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.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/control/expr_if.hpp>
+#endif // compiler defect handling
+
+namespace boost { namespace detail {
+
+ template <typename F, typename C>
+ class emplace_assoc_function_proxy
+ {
+ F const _function;
+ C& _container;
+
+ public:
+ explicit emplace_assoc_function_proxy(C& c);
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP(r, seq) \
+ BOOST_PP_EXPR_IF(BOOST_PP_SEQ_SIZE(seq), template <) \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), typename P) \
+ BOOST_PP_EXPR_IF(BOOST_PP_SEQ_SIZE(seq), >) \
+ inline emplace_assoc_function_proxy& \
+ operator()( \
+ typename C::key_type const& key \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) \
+ { \
+ this->_function( \
+ this->_container \
+ , key \
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ); \
+ return *this; \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ inline emplace_assoc_function_proxy&
+ operator()(typename C::key_type const& key, Args&& ...args)
+ {
+ this->_function(
+ this->_container
+ , key
+ , ::boost::forward<Args>(args)...
+ );
+ return *this;
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ inline emplace_assoc_function_proxy& \
+ operator()( \
+ typename C::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) \
+ { \
+ this->_function( \
+ this->_container \
+ , key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ); \
+ return *this; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename F, typename C>
+ emplace_assoc_function_proxy<F,C>::emplace_assoc_function_proxy(C& c)
+ : _function(), _container(c)
+ {
+ }
+
+ struct uac_emplace_emu_associative_function
+ {
+ template <typename C>
+ emplace_assoc_function_proxy<uac_emplace_emu_associative_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ return _container.insert( \
+ typename C::value_type( \
+ key \
+ , typename C::mapped_type( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(
+ C& _container
+ , typename C::key_type const& key
+ , Args&& ...args
+ ) const
+ {
+ return _container.insert(
+ typename C::value_type(
+ key
+ , typename C::mapped_type(::boost::forward<Args>(args)...)
+ )
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return _container.insert( \
+ typename C::value_type( \
+ key \
+ , typename C::mapped_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_assoc_function_proxy<uac_emplace_emu_associative_function,C>
+ uac_emplace_emu_associative_function::operator[](C& _container) const
+ {
+ return emplace_assoc_function_proxy<
+ uac_emplace_emu_associative_function
+ , C
+ >(_container);
+ }
+
+ struct mac_emplace_emu_associative_function
+ {
+ template <typename C>
+ emplace_assoc_function_proxy<mac_emplace_emu_associative_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ return ::std::make_pair( \
+ _container.insert( \
+ typename C::value_type( \
+ key \
+ , typename C::mapped_type( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(
+ C& _container
+ , typename C::key_type const& key
+ , Args&& ...args
+ ) const
+ {
+ return ::std::make_pair(
+ _container.insert(
+ typename C::value_type(
+ key
+ , typename C::mapped_type(
+ ::boost::forward<Args>(args)...
+ )
+ )
+ )
+ , true
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return ::std::make_pair( \
+ _container.insert( \
+ typename C::value_type( \
+ key \
+ , typename C::mapped_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_assoc_function_proxy<mac_emplace_emu_associative_function,C>
+ mac_emplace_emu_associative_function::operator[](C& _container) const
+ {
+ return emplace_assoc_function_proxy<
+ mac_emplace_emu_associative_function
+ , C
+ >(_container);
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ struct uac_emplace_associative_function
+ {
+ template <typename C>
+ emplace_assoc_function_proxy<uac_emplace_associative_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(
+ C& _container
+ , typename C::key_type const& key
+ , Args&& ...args
+ ) const
+ {
+ return _container.emplace(
+ key
+ , ::boost::move(
+ typename C::mapped_type(::boost::forward<Args>(args)...)
+ )
+ );
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return _container.emplace( \
+ key \
+ , ::boost::move( \
+ typename C::mapped_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_PP_DEC(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+ };
+
+ template <typename C>
+ emplace_assoc_function_proxy<uac_emplace_associative_function,C>
+ uac_emplace_associative_function::operator[](C& _container) const
+ {
+ return emplace_assoc_function_proxy<
+ uac_emplace_associative_function
+ , C
+ >(_container);
+ }
+
+ struct mac_emplace_associative_function
+ {
+ template <typename C>
+ emplace_assoc_function_proxy<mac_emplace_associative_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(
+ C& _container
+ , typename C::key_type const& key
+ , Args&& ...args
+ ) const
+ {
+ return ::std::make_pair(
+ _container.emplace(
+ key
+ , ::boost::move(
+ typename C::mapped_type(
+ ::boost::forward<Args>(args)...
+ )
+ )
+ )
+ , true
+ );
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return ::std::make_pair( \
+ _container.emplace( \
+ key \
+ , ::boost::move( \
+ typename C::mapped_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_PP_DEC(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+ };
+
+ template <typename C>
+ emplace_assoc_function_proxy<mac_emplace_associative_function,C>
+ mac_emplace_associative_function::operator[](C& _container) const
+ {
+ return emplace_assoc_function_proxy<
+ mac_emplace_associative_function
+ , C
+ >(_container);
+ }
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+
+ struct huac_emplace_associative_function
+ {
+ template <typename C>
+ emplace_assoc_function_proxy<huac_emplace_associative_function,C>
+ operator[](C& _container) const;
+
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return _container.emplace( \
+ ::boost::unordered::piecewise_construct \
+ , ::boost::make_tuple(key) \
+ , ::boost::make_tuple( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ };
+
+ template <typename C>
+ emplace_assoc_function_proxy<huac_emplace_associative_function,C>
+ huac_emplace_associative_function::operator[](C& _container) const
+ {
+ return emplace_assoc_function_proxy<
+ huac_emplace_associative_function
+ , C
+ >(_container);
+ }
+
+ struct hmac_emplace_associative_function
+ {
+ template <typename C>
+ emplace_assoc_function_proxy<hmac_emplace_associative_function,C>
+ operator[](C& _container) const;
+
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return ::std::make_pair( \
+ _container.emplace( \
+ ::boost::unordered::piecewise_construct \
+ , ::boost::make_tuple(key) \
+ , ::boost::make_tuple( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ };
+
+ template <typename C>
+ emplace_assoc_function_proxy<hmac_emplace_associative_function,C>
+ hmac_emplace_associative_function::operator[](C& _container) const
+ {
+ return emplace_assoc_function_proxy<
+ hmac_emplace_associative_function
+ , C
+ >(_container);
+ }
+
+#if defined BOOST_HAS_TR1_UNORDERED_MAP
+
+// Handle different native TR1 emplacement implementations.
+#if defined BOOST_MSVC
+
+ struct tr1_huac_emplace_associative_function
+ {
+ template <typename C>
+ emplace_assoc_function_proxy<tr1_huac_emplace_associative_function,C>
+ operator[](C& _container) const;
+
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return _container.emplace( \
+ ::boost::move( \
+ typename C::value_type( \
+ key \
+ , typename C::mapped_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ };
+
+ template <typename C>
+ emplace_assoc_function_proxy<tr1_huac_emplace_associative_function,C>
+ tr1_huac_emplace_associative_function::operator[](C& _container) const
+ {
+ return emplace_assoc_function_proxy<
+ tr1_huac_emplace_associative_function
+ , C
+ >(_container);
+ }
+
+ typedef tr1_huac_emplace_associative_function
+ tr1_hmac_emplace_associative_function;
+#else // TR1 == Boost wrt unordered_[multi]map::emplace
+#define BOOST_CONTAINER_GEN_EMPLACE_ASSOC_FUNCTION_GEN_USE_NO_NATIVE_TR1
+#endif
+
+#else // !defined BOOST_HAS_TR1_UNORDERED_MAP
+#define BOOST_CONTAINER_GEN_EMPLACE_ASSOC_FUNCTION_GEN_USE_NO_NATIVE_TR1
+#endif // BOOST_HAS_TR1_UNORDERED_MAP
+
+#if defined BOOST_CONTAINER_GEN_EMPLACE_ASSOC_FUNCTION_GEN_USE_NO_NATIVE_TR1
+ typedef huac_emplace_associative_function
+ tr1_huac_emplace_associative_function;
+ typedef hmac_emplace_associative_function
+ tr1_hmac_emplace_associative_function;
+#undef BOOST_CONTAINER_GEN_EMPLACE_ASSOC_FUNCTION_GEN_USE_NO_NATIVE_TR1
+#endif // BOOST_CONTAINER_GEN_EMPLACE_ASSOC_FUNCTION_GEN_USE_NO_NATIVE_TR1
+#endif // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ struct ua_ptr_emplace_assoc_function
+ {
+ template <typename C>
+ emplace_assoc_function_proxy<ua_ptr_emplace_assoc_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ typedef typename ::std::tr1::remove_pointer< \
+ typename C::mapped_type \
+ >::type \
+ _data_type; \
+ typename C::key_type k(key); \
+ return _container.insert( \
+ k \
+ , new _data_type( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(
+ C& _container
+ , typename C::key_type const& key
+ , Args&& ...args
+ ) const
+ {
+ typedef typename ::std::tr1::remove_pointer<
+ typename C::mapped_type
+ >::type
+ _data_type;
+
+ typename C::key_type k(key);
+ return _container.insert(
+ k
+ , new _data_type(::boost::forward<Args>(args)...)
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ typedef typename ::std::tr1::remove_pointer< \
+ typename C::mapped_type \
+ >::type \
+ _data_type; \
+ typename C::key_type k(key); \
+ return _container.insert( \
+ k \
+ , new _data_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_assoc_function_proxy<ua_ptr_emplace_assoc_function,C>
+ ua_ptr_emplace_assoc_function::operator[](C& _container) const
+ {
+ return emplace_assoc_function_proxy<ua_ptr_emplace_assoc_function,C>(
+ _container
+ );
+ }
+
+ struct ma_ptr_emplace_assoc_function
+ {
+ template <typename C>
+ emplace_assoc_function_proxy<ma_ptr_emplace_assoc_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ typedef typename ::std::tr1::remove_pointer< \
+ typename C::mapped_type \
+ >::type \
+ _data_type; \
+ typename C::key_type k(key); \
+ return ::std::make_pair( \
+ _container.insert( \
+ k \
+ , new _data_type( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(
+ C& _container
+ , typename C::key_type const& key
+ , Args&& ...args
+ ) const
+ {
+ typedef typename ::std::tr1::remove_pointer<
+ typename C::mapped_type
+ >::type
+ _data_type;
+
+ typename C::key_type k(key);
+ return ::std::make_pair(
+ _container.insert(
+ k
+ , new _data_type(::boost::forward<Args>(args)...)
+ )
+ , true
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , typename C::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ typedef typename ::std::tr1::remove_pointer< \
+ typename C::mapped_type \
+ >::type \
+ _data_type; \
+ typename C::key_type k(key); \
+ return ::std::make_pair( \
+ _container.insert( \
+ k \
+ , new _data_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_assoc_function_proxy<ma_ptr_emplace_assoc_function,C>
+ ma_ptr_emplace_assoc_function::operator[](C& _container) const
+ {
+ return emplace_assoc_function_proxy<ma_ptr_emplace_assoc_function,C>(
+ _container
+ );
+ }
+}} // namespace boost::detail
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/container_gen/is_associative_selector.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+#include <boost/container_gen/is_multiple_assoc_selector.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/container_gen/has_emplace_mfunc_selector.hpp>
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/container_gen/is_hashed_assoc_selector.hpp>
+#include <boost/container_gen/is_tr1_selector.hpp>
+#endif
+#endif
+
+//[reference__emplace_associative_function_gen
+namespace boost {
+
+ template <typename Selector>
+ struct emplace_associative_function_gen
+ //<-
+ : ::boost::mpl::eval_if<
+ is_ptr_selector<Selector>
+ , ::boost::mpl::if_<
+ is_multiple_associative_selector<Selector>
+ , detail::ma_ptr_emplace_assoc_function
+ , detail::ua_ptr_emplace_assoc_function
+ >
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , ::boost::mpl::eval_if<
+ has_emplace_member_function_selector<Selector>
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ , ::boost::mpl::eval_if<
+ is_hashed_associative_selector<Selector>
+ , ::boost::mpl::eval_if<
+ is_tr1_selector<Selector>
+ , ::boost::mpl::if_<
+ is_unique_associative_selector<Selector>
+ , detail::tr1_huac_emplace_associative_function
+ , detail::tr1_hmac_emplace_associative_function
+ >
+ , ::boost::mpl::if_<
+ is_unique_associative_selector<Selector>
+ , detail::huac_emplace_associative_function
+ , detail::hmac_emplace_associative_function
+ >
+ >
+#endif
+ , ::boost::mpl::if_<
+ is_multiple_associative_selector<Selector>
+ , detail::mac_emplace_associative_function
+ , detail::uac_emplace_associative_function
+ >
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ >
+#endif
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , ::boost::mpl::if_<
+ is_multiple_associative_selector<Selector>
+ , detail::mac_emplace_emu_associative_function
+ , detail::uac_emplace_emu_associative_function
+ >
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ >
+#endif
+ >
+ //->
+ {
+//<-
+#if 0
+//->
+ typedef ... type;
+ //<-
+#endif
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , emplace_associative_function_gen
+ , (Selector)
+ )
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_CONTAINER_GEN_EMPLACE_ASSOC_FUNCTION_GEN_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/emplace_function_gen.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/emplace_function_gen.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,1519 @@
+//=============================================================================
+// Copyright (C) 2012-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_HPP_INCLUDED
+
+#include <utility>
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/container_gen/detail/preprocessor.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+#include <boost/preprocessor/repetition/for.hpp>
+#include <boost/preprocessor/control/expr_if.hpp>
+#include <boost/detail/preprocessor/binary_seq_to_params.hpp>
+
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_FOR_OP(r, tuple) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(2, 0, tuple)) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ BOOST_PP_TUPLE_ELEM(2, 0, tuple) \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) \
+ { \
+ return ::std::make_pair( \
+ _container.emplace( \
+ BOOST_PP_TUPLE_ELEM(2, 1, tuple) \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(2, 0, tuple)) \
+ , p \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_FOR_OP(r, tuple) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(2, 0, tuple)) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ BOOST_PP_TUPLE_ELEM(2, 0, tuple) \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) \
+ { \
+ return ::std::make_pair( \
+ _container.insert( \
+ BOOST_PP_TUPLE_ELEM(2, 1, tuple) \
+ , typename C::value_type( \
+ BOOST_PP_ENUM_PARAMS( \
+ BOOST_PP_SEQ_SIZE( \
+ BOOST_PP_TUPLE_ELEM(2, 0, tuple) \
+ ) \
+ , p \
+ ) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+
+#elif !defined BOOST_CONTAINER_PERFECT_FORWARDING
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.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/control/expr_if.hpp>
+
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_RPT_OP(z, n, itr) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) const \
+ { \
+ return ::std::make_pair( \
+ _container.emplace( \
+ itr \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_RPT_OP(z, n, itr) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) const \
+ { \
+ return ::std::make_pair( \
+ _container.insert( \
+ itr \
+ , typename C::value_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+
+#endif // compiler defect handling
+
+namespace boost { namespace detail {
+
+ template <typename F, typename C>
+ class emplace_function_proxy
+ {
+ F const _function;
+ C& _container;
+
+ public:
+ explicit emplace_function_proxy(C& c);
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP(r, seq) \
+ BOOST_PP_EXPR_IF(BOOST_PP_SEQ_SIZE(seq), template <) \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), typename P) \
+ BOOST_PP_EXPR_IF(BOOST_PP_SEQ_SIZE(seq), >) \
+ inline emplace_function_proxy& \
+ operator()( \
+ BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) \
+ { \
+ this->_function( \
+ this->_container \
+ BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ); \
+ return *this; \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ inline emplace_function_proxy& operator()(Args&& ...args)
+ {
+ this->_function(this->_container, ::boost::forward<Args>(args)...);
+ return *this;
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ inline emplace_function_proxy& \
+ operator()( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) \
+ { \
+ this->_function( \
+ this->_container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ); \
+ return *this; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename F, typename C>
+ emplace_function_proxy<F,C>::emplace_function_proxy(C& c)
+ : _function(), _container(c)
+ {
+ }
+
+ struct fis_emplace_function
+ {
+ template <typename C>
+ emplace_function_proxy<fis_emplace_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_PP_FOR(
+ ((0), _container.begin())
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED_WITH_DATA
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC_WITH_DATA
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_FOR_OP
+ )
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(C& _container, Args&& ...args) const
+ {
+ return ::std::make_pair(
+ _container.emplace(
+ _container.begin()
+ , ::boost::forward<Args>(args)...
+ )
+ , true
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_RPT_OP
+ , _container.begin()
+ )
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<fis_emplace_function,C>
+ fis_emplace_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<fis_emplace_function,C>(_container);
+ }
+
+ struct bis_emplace_function
+ {
+ template <typename C>
+ emplace_function_proxy<bis_emplace_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_PP_FOR(
+ ((0), _container.end())
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED_WITH_DATA
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC_WITH_DATA
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(C& _container, Args&& ...args) const
+ {
+ return ::std::make_pair(
+ _container.emplace(
+ _container.end()
+ , ::boost::forward<Args>(args)...
+ )
+ , true
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_RPT_OP
+ , _container.end()
+ )
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<bis_emplace_function,C>
+ bis_emplace_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<bis_emplace_function,C>(_container);
+ }
+
+ struct fis_emplace_emu_function
+ {
+ template <typename C>
+ emplace_function_proxy<fis_emplace_emu_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_PP_FOR(
+ ((0), _container.begin())
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED_WITH_DATA
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC_WITH_DATA
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_FOR_OP
+ )
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(C& _container, Args&& ...args) const
+ {
+ return ::std::make_pair(
+ _container.insert(
+ _container.begin()
+ , typename C::value_type(
+ ::boost::forward<Args>(args)...
+ )
+ )
+ , true
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_RPT_OP
+ , _container.begin()
+ )
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<fis_emplace_emu_function,C>
+ fis_emplace_emu_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<fis_emplace_emu_function,C>(_container);
+ }
+
+ struct bis_emplace_emu_function
+ {
+ template <typename C>
+ emplace_function_proxy<bis_emplace_emu_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_PP_FOR(
+ ((0), _container.end())
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED_WITH_DATA
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC_WITH_DATA
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_FOR_OP
+ )
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(C& _container, Args&& ...args) const
+ {
+ return ::std::make_pair(
+ _container.insert(
+ _container.end()
+ , typename C::value_type(
+ ::boost::forward<Args>(args)...
+ )
+ )
+ , true
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_RPT_OP
+ , _container.end()
+ )
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<bis_emplace_emu_function,C>
+ bis_emplace_emu_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<bis_emplace_emu_function,C>(_container);
+ }
+
+ struct uac_emplace_function
+ {
+ template <typename C>
+ emplace_function_proxy<uac_emplace_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ return _container.emplace( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(C& _container, Args&& ...args) const
+ {
+ return _container.emplace(::boost::forward<Args>(args)...);
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return _container.emplace( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<uac_emplace_function,C>
+ uac_emplace_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<uac_emplace_function,C>(_container);
+ }
+
+ struct uac_emplace_emu_function
+ {
+ template <typename C>
+ emplace_function_proxy<uac_emplace_emu_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ return _container.insert( \
+ typename C::value_type( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(C& _container, Args&& ...args) const
+ {
+ return _container.insert(
+ typename C::value_type(::boost::forward<Args>(args)...)
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return _container.insert( \
+ typename C::value_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<uac_emplace_emu_function,C>
+ uac_emplace_emu_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<uac_emplace_emu_function,C>(_container);
+ }
+
+ struct mac_emplace_function
+ {
+ template <typename C>
+ emplace_function_proxy<mac_emplace_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ return ::std::make_pair( \
+ _container.emplace( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(C& _container, Args&& ...args) const
+ {
+ return ::std::make_pair(
+ _container.emplace(::boost::forward<Args>(args)...)
+ , true
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return ::std::make_pair( \
+ _container.emplace( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<mac_emplace_function,C>
+ mac_emplace_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<mac_emplace_function,C>(_container);
+ }
+
+ struct mac_emplace_emu_function
+ {
+ template <typename C>
+ emplace_function_proxy<mac_emplace_emu_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ return ::std::make_pair( \
+ _container.insert( \
+ typename C::value_type( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(C& _container, Args&& ...args) const
+ {
+ return ::std::make_pair(
+ _container.insert(
+ typename C::value_type(::boost::forward<Args>(args)...)
+ )
+ , true
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return ::std::make_pair( \
+ _container.insert( \
+ typename C::value_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<mac_emplace_emu_function,C>
+ mac_emplace_emu_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<mac_emplace_emu_function,C>(_container);
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION && \
+ !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#if defined BOOST_HAS_TR1_UNORDERED_SET
+
+// Handle different native TR1 emplacement implementations.
+#if defined BOOST_MSVC
+
+ struct tr1_huac_emplace_function
+ {
+ template <typename C>
+ emplace_function_proxy<tr1_huac_emplace_function,C>
+ operator[](C& _container) const;
+
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return _container.emplace( \
+ ::boost::move( \
+ typename C::value_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ };
+
+ template <typename C>
+ emplace_function_proxy<tr1_huac_emplace_function,C>
+ tr1_huac_emplace_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<tr1_huac_emplace_function,C>(_container);
+ }
+
+ typedef tr1_huac_emplace_function tr1_hmac_emplace_function;
+#else // TR1 == Boost wrt unordered_[multi]set::emplace
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_USE_NO_NATIVE_TR1
+#endif
+
+#else // !defined BOOST_HAS_TR1_UNORDERED_SET
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_USE_NO_NATIVE_TR1
+#endif // BOOST_HAS_TR1_UNORDERED_SET
+
+#if defined BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_USE_NO_NATIVE_TR1
+ typedef uac_emplace_function tr1_huac_emplace_function;
+ typedef mac_emplace_function tr1_hmac_emplace_function;
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_USE_NO_NATIVE_TR1
+#endif // BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_USE_NO_NATIVE_TR1
+#endif // partial template specialization support, imperfect forwarding
+
+ struct ptr_sequence_emplace_function
+ {
+ template <typename C>
+ emplace_function_proxy<ptr_sequence_emplace_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ typedef typename ::std::tr1::remove_pointer< \
+ typename C::value_type \
+ >::type \
+ _data_type; \
+ return ::std::make_pair( \
+ _container.insert( \
+ _container.end() \
+ , new _data_type( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(C& _container, Args&& ...args) const
+ {
+ typedef typename ::std::tr1::remove_pointer<
+ typename C::value_type
+ >::type
+ _data_type;
+
+ return ::std::make_pair(
+ _container.insert(
+ _container.end()
+ , new _data_type(::boost::forward<Args>(args)...)
+ )
+ , true
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ typedef typename ::std::tr1::remove_pointer< \
+ typename C::value_type \
+ >::type \
+ _data_type; \
+ return ::std::make_pair( \
+ _container.insert( \
+ _container.end() \
+ , new _data_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ) \
+ , true \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<ptr_sequence_emplace_function,C>
+ ptr_sequence_emplace_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<ptr_sequence_emplace_function,C>(
+ _container
+ );
+ }
+
+ struct ua_ptr_container_emplace_function
+ {
+ template <typename C>
+ emplace_function_proxy<ua_ptr_container_emplace_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ typedef typename ::std::tr1::remove_pointer< \
+ typename C::value_type \
+ >::type \
+ _data_type; \
+ return _container.insert( \
+ new _data_type( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline ::std::pair<typename C::iterator,bool>
+ operator()(C& _container, Args&& ...args) const
+ {
+ typedef typename ::std::tr1::remove_pointer<
+ typename C::value_type
+ >::type
+ _data_type;
+
+ return _container.insert(
+ new _data_type(::boost::forward<Args>(args)...)
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline ::std::pair<typename C::iterator,bool> \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ typedef typename ::std::tr1::remove_pointer< \
+ typename C::value_type \
+ >::type \
+ _data_type; \
+ return _container.insert( \
+ new _data_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<ua_ptr_container_emplace_function,C>
+ ua_ptr_container_emplace_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<ua_ptr_container_emplace_function,C>(
+ _container
+ );
+ }
+
+ struct heap_emplace_function
+ {
+ template <typename C>
+ emplace_function_proxy<heap_emplace_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline void \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ _container.emplace( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline void operator()(C& _container, Args&& ...args) const
+ {
+ _container.emplace(::boost::forward<Args>(args)...);
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline void \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ _container.emplace( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<heap_emplace_function,C>
+ heap_emplace_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<heap_emplace_function,C>(_container);
+ }
+
+ struct mutable_heap_emplace_function
+ {
+ template <typename C>
+ emplace_function_proxy<mutable_heap_emplace_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline typename C::handle_type \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ return _container.emplace( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline typename C::handle_type
+ operator()(C& _container, Args&& ...args) const
+ {
+ return _container.emplace(::boost::forward<Args>(args)...);
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline typename C::handle_type \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ return _container.emplace( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<mutable_heap_emplace_function,C>
+ mutable_heap_emplace_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<mutable_heap_emplace_function,C>(
+ _container
+ );
+ }
+
+ struct adaptor_emplace_emu_function
+ {
+ template <typename C>
+ emplace_function_proxy<adaptor_emplace_emu_function,C>
+ operator[](C& _container) const;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP(r, seq) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS( \
+ BOOST_PP_SEQ_SIZE(seq) \
+ , typename P \
+ ) \
+ > \
+ inline void \
+ operator()( \
+ C& _container \
+ , BOOST_DETAIL_PP_BINARY_SEQ_TO_PARAMS( \
+ seq \
+ , P \
+ , & \
+ , const& \
+ , p \
+ ) \
+ ) const \
+ { \
+ _container.push( \
+ typename C::value_type( \
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(seq), p) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_FOR(
+ (0)
+ , BOOST_CONTAINER_GEN_PP_PARAM_PRED
+ , BOOST_CONTAINER_GEN_PP_PARAM_INC
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_FOR_OP
+#elif defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename C, typename ...Args>
+ inline void operator()(C& _container, Args&& ...args) const
+ {
+ _container.push(
+ typename C::value_type(::boost::forward<Args>(args)...)
+ );
+ }
+#else // partial template specialization support, imperfect forwarding
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP(z, n, poop) \
+ template < \
+ typename C \
+ BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, typename P) \
+ > \
+ inline void \
+ operator()( \
+ C& _container \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , poop \
+ ) \
+ ) const \
+ { \
+ _container.push( \
+ typename C::value_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , poop \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+ , _
+ )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_RPT_OP
+#endif // compiler defect handling
+ };
+
+ template <typename C>
+ emplace_function_proxy<adaptor_emplace_emu_function,C>
+ adaptor_emplace_emu_function::operator[](C& _container) const
+ {
+ return emplace_function_proxy<adaptor_emplace_emu_function,C>(
+ _container
+ );
+ }
+}} // namespace boost::detail
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_FOR_OP
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_FOR_OP
+#elif !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_RPT_OP
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_RPT_OP
+#endif
+
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/container_gen/has_emplace_mfunc_selector.hpp>
+#include <boost/container_gen/is_associative_selector.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+#include <boost/container_gen/is_multiple_assoc_selector.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+#include <boost/container_gen/is_queue_selector.hpp>
+#include <boost/container_gen/is_stack_selector.hpp>
+#include <boost/container_gen/is_std_heap_selector.hpp>
+
+#if !defined BOOST_NO_CXX11_RVALUE_REFERENCES
+#include <boost/container_gen/is_heap_selector.hpp>
+#include <boost/container_gen/is_mutable_heap_selector.hpp>
+#endif
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/container_gen/is_tr1_selector.hpp>
+#endif
+
+//[reference__emplace_function_gen
+namespace boost {
+
+ template <typename Selector>
+ struct emplace_function_gen
+ //<-
+ : ::boost::mpl::eval_if<
+ is_ptr_selector<Selector>
+ , ::boost::mpl::if_<
+ is_unique_associative_selector<Selector>
+ , detail::ua_ptr_container_emplace_function
+ , detail::ptr_sequence_emplace_function
+ >
+ , ::boost::mpl::eval_if<
+ has_emplace_member_function_selector<Selector>
+ , ::boost::mpl::eval_if<
+#if !defined BOOST_NO_CXX11_RVALUE_REFERENCES
+ is_heap_selector<Selector>
+ , ::boost::mpl::if_<
+ is_mutable_heap_selector<Selector>
+ , detail::mutable_heap_emplace_function
+ , detail::heap_emplace_function
+ >
+ , ::boost::mpl::eval_if<
+#endif
+ is_associative_selector<Selector>
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ , ::boost::mpl::eval_if<
+ is_tr1_selector<Selector>
+ , ::boost::mpl::if_<
+ is_multiple_associative_selector<Selector>
+ , detail::tr1_hmac_emplace_function
+ , detail::tr1_huac_emplace_function
+ >
+#endif
+ , ::boost::mpl::if_<
+ is_multiple_associative_selector<Selector>
+ , detail::mac_emplace_function
+ , detail::uac_emplace_function
+ >
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ >
+#endif
+ , ::boost::mpl::identity<detail::bis_emplace_function>
+#if !defined BOOST_NO_CXX11_RVALUE_REFERENCES
+ >
+#endif
+ >
+ , ::boost::mpl::eval_if<
+ is_associative_selector<Selector>
+ , ::boost::mpl::if_<
+ is_unique_associative_selector<Selector>
+ , detail::uac_emplace_emu_function
+ , detail::mac_emplace_emu_function
+ >
+ , ::boost::mpl::if_<
+ ::boost::mpl::or_<
+ ::boost::mpl::or_<
+ is_queue_selector<Selector>
+ , is_stack_selector<Selector>
+ >
+ , is_std_heap_selector<Selector>
+ >
+ , detail::adaptor_emplace_emu_function
+ , detail::bis_emplace_emu_function
+ >
+ >
+ >
+ >
+ //->
+ {
+//<-
+#if 0
+//->
+ typedef ... type;
+ //<-
+#endif
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, emplace_function_gen, (Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#include <boost/container_gen/selectors.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename AllocatorSelector>
+ struct emplace_function_gen<slist_selector<AllocatorSelector> >
+ {
+ typedef detail::fis_emplace_function type;
+ };
+} // namespace boost
+
+#elif !defined BOOST_NO_SLIST
+
+namespace boost {
+
+ template <>
+ struct emplace_function_gen<slist_selector_base>
+ {
+ typedef detail::fis_emplace_emu_function type;
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION, BOOST_NO_SLIST
+
+#endif // BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/has_emplace_mfunc_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/has_emplace_mfunc_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,251 @@
+//=============================================================================
+// Copyright (C) 2012-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_HAS_EMPLACE_MFUNC_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_HAS_EMPLACE_MFUNC_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename Selector>
+ struct has_emplace_member_function_selector
+ : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , has_emplace_member_function_selector
+ , (Selector)
+ )
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if !defined BOOST_NO_CXX11_RVALUE_REFERENCES
+#include <boost/mpl/eval_if.hpp>
+#endif
+
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/is_flat_assoc_selector.hpp>
+#include <boost/container_gen/is_hashed_assoc_selector.hpp>
+#include <boost/container_gen/is_heap_selector.hpp>
+#include <boost/container_gen/selectors.hpp>
+
+//[reference__has_emplace_member_function_selector
+namespace boost {
+
+ template <typename Selector>
+ struct has_emplace_member_function_selector
+//<-
+#if defined BOOST_NO_CXX11_RVALUE_REFERENCES
+ : ::boost::mpl::if_<
+ is_flat_associative_selector<Selector>
+ , ::boost::mpl::true_
+ , is_hashed_associative_selector<Selector>
+ >::type
+#else
+//->
+ : ::boost::mpl::eval_if<
+ is_flat_associative_selector<Selector>
+ , ::boost::mpl::true_
+ , ::boost::mpl::if_<
+ is_hashed_associative_selector<Selector>
+ , ::boost::mpl::true_
+ , is_heap_selector<Selector>
+ >
+ >::type
+//<-
+#endif // BOOST_NO_CXX11_RVALUE_REFERENCES
+//->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , has_emplace_member_function_selector
+ , (Selector)
+ )
+ //->
+ };
+
+ template <typename AllocatorSelector>
+ struct has_emplace_member_function_selector<
+ stable_vector_selector<AllocatorSelector>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename ConstantCapacity>
+ struct has_emplace_member_function_selector<
+ static_vector_selector<ConstantCapacity>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename AllocatorSelector>
+ struct has_emplace_member_function_selector<
+ slist_selector<AllocatorSelector>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ // More metafunction specializations...
+ //<-
+ template <typename T0, typename T1>
+ struct has_emplace_member_function_selector<vector_selector<T0,T1> >
+#if defined BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ : ::boost::mpl::true_
+#else
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::sequence_selector_signature::bind<T0,T1>::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+#endif // BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct has_emplace_member_function_selector<deque_selector<T0,T1> >
+#if defined BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ : ::boost::mpl::true_
+#else
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::sequence_selector_signature::bind<T0,T1>::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+#endif // BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct has_emplace_member_function_selector<list_selector<T0,T1> >
+#if defined BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ : ::boost::mpl::true_
+#else
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::sequence_selector_signature::bind<T0,T1>::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+#endif // BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct has_emplace_member_function_selector<set_selector<T0,T1,T2> >
+#if defined BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ : ::boost::mpl::true_
+#else
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+#endif // BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct has_emplace_member_function_selector<map_selector<T0,T1,T2> >
+#if defined BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ : ::boost::mpl::true_
+#else
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+#endif // BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct has_emplace_member_function_selector<multiset_selector<T0,T1,T2> >
+#if defined BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ : ::boost::mpl::true_
+#else
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+#endif // BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct has_emplace_member_function_selector<multimap_selector<T0,T1,T2> >
+#if defined BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ : ::boost::mpl::true_
+#else
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+#endif // BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE
+ {
+ };
+ //->
+} // namespace boost
+//]
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_CONTAINER_GEN_HAS_EMPLACE_MFUNC_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/has_stable_iters_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/has_stable_iters_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,185 @@
+//=============================================================================
+// Copyright (C) 2011-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_HAS_STABLE_ITERS_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_HAS_STABLE_ITERS_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/container_gen/selectors.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/container_gen/is_random_access_selector.hpp>
+#include <boost/container_gen/is_hashed_assoc_selector.hpp>
+#include <boost/container_gen/is_queue_selector.hpp>
+#include <boost/container_gen/is_stack_selector.hpp>
+#include <boost/container_gen/is_std_heap_selector.hpp>
+#include <boost/container_gen/is_heap_selector.hpp>
+
+namespace boost {
+
+ template <typename Selector>
+ struct has_stable_iterators_selector
+ : ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ ::boost::mpl::not_<is_random_access_selector<Selector> >
+ , ::boost::mpl::not_<is_hashed_associative_selector<Selector> >
+ >
+ , ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ ::boost::mpl::not_<is_queue_selector<Selector> >
+ , ::boost::mpl::not_<is_stack_selector<Selector> >
+ >
+ , ::boost::mpl::and_<
+ ::boost::mpl::not_<is_std_heap_selector<Selector> >
+ , ::boost::mpl::not_<is_heap_selector<Selector> >
+ >
+ >
+ >
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , has_stable_iterators_selector
+ , (Selector)
+ )
+ };
+} // namespace boost
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename AllocatorSelector>
+ struct has_stable_iterators_selector<
+ stable_vector_selector<AllocatorSelector>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct has_stable_iterators_selector<flat_set_selector<T0,T1> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct has_stable_iterators_selector<flat_map_selector<T0,T1> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct has_stable_iterators_selector<flat_multiset_selector<T0,T1> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct has_stable_iterators_selector<flat_multimap_selector<T0,T1> >
+ : ::boost::mpl::false_
+ {
+ };
+} // namespace boost
+
+#endif // !BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/has_stable_iterators.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct has_stable_iterators_selector_impl
+ : ::boost::detail::metafunction::has_stable_iterators<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__has_stable_iterators_selector
+namespace boost {
+
+ template <typename Selector>
+ struct has_stable_iterators_selector
+//<-
+#if 0
+//->
+ : BooleanIntegralConstant
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::has_stable_iterators_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , has_stable_iterators_selector
+ , (Selector)
+ )
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#if !defined BOOST_MSVC
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <>
+ struct has_stable_iterators_selector<array_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct has_stable_iterators_selector<ptr_array_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename T0, typename T1>
+ struct has_stable_iterators_selector<array_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct has_stable_iterators_selector<ptr_array_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // !defined BOOST_MSVC
+#endif // BOOST_CONTAINER_GEN_HAS_STABLE_ITERS_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/insert_range_function_gen.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/insert_range_function_gen.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,883 @@
+//=======================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_INSERT_RANGE_FUNCTION_GEN_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_INSERT_RANGE_FUNCTION_GEN_HPP_INCLUDED
+
+#include <deque>
+#include <utility>
+#include <algorithm>
+#include <boost/mpl/bool.hpp>
+#include <boost/range.hpp>
+#include <boost/assert.hpp>
+
+namespace boost { namespace detail {
+
+ template <typename F, typename C>
+ class insert_range_function_proxy
+ {
+ C& _container;
+
+ public:
+ explicit insert_range_function_proxy(C& c);
+
+ template <typename Itr>
+ insert_range_function_proxy&
+ operator()(typename C::iterator pos, Itr itr, Itr itr_end);
+
+ template <typename InputRange>
+ insert_range_function_proxy&
+ operator()(typename C::iterator pos, InputRange const& r);
+ };
+
+ template <typename F, typename C>
+ insert_range_function_proxy<F,C>::insert_range_function_proxy(C& c)
+ : _container(c)
+ {
+ }
+
+ template <typename F, typename C>
+ template <typename Itr>
+ inline insert_range_function_proxy<F,C>&
+ insert_range_function_proxy<F,C>::operator()(
+ typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ F::evaluate(this->_container, pos, itr, itr_end);
+ return *this;
+ }
+
+ template <typename F, typename C>
+ template <typename InputRange>
+ inline insert_range_function_proxy<F,C>&
+ insert_range_function_proxy<F,C>::operator()(
+ typename C::iterator pos
+ , InputRange const& r
+ )
+ {
+ F::evaluate(this->_container, pos, ::boost::begin(r), ::boost::end(r));
+ return *this;
+ }
+
+ struct fis_insert_range_function
+ {
+ template <typename C>
+ insert_range_function_proxy<fis_insert_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const;
+
+ template <typename C, typename Itr>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ );
+ };
+
+ template <typename C>
+ inline insert_range_function_proxy<fis_insert_range_function,C>
+ fis_insert_range_function::operator[](C& _container) const
+ {
+ return insert_range_function_proxy<fis_insert_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ fis_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , pos
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ fis_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ typename C::iterator result_begin = _container.previous(pos);
+ fis_insert_range_function::evaluate(_container, pos, itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ ++result_begin
+ , pos
+ );
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ fis_insert_range_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(pos, itr, itr_end);
+ }
+
+ struct ras_insert_range_function
+ {
+ template <typename C>
+ insert_range_function_proxy<ras_insert_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const;
+
+ template <typename C, typename Itr>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ );
+ };
+
+ template <typename C>
+ inline insert_range_function_proxy<ras_insert_range_function,C>
+ ras_insert_range_function::operator[](C& _container) const
+ {
+ return insert_range_function_proxy<ras_insert_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ ras_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , pos
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ ras_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ typename C::size_type const begin_index = (
+ ::std::distance(_container.begin(), pos)
+ );
+ ras_insert_range_function::evaluate(_container, pos, itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.begin() + begin_index
+ , _container.begin() + begin_index + ::std::distance(itr, itr_end)
+ );
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ ras_insert_range_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(pos, itr, itr_end);
+ }
+
+ struct bis_insert_range_function
+ {
+ template <typename C>
+ insert_range_function_proxy<bis_insert_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const;
+
+ template <typename C, typename Itr>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ );
+ };
+
+ template <typename C>
+ inline insert_range_function_proxy<bis_insert_range_function,C>
+ bis_insert_range_function::operator[](C& _container) const
+ {
+ return insert_range_function_proxy<bis_insert_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ bis_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , pos
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ bis_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ if (_container.empty())
+ {
+ BOOST_ASSERT(pos == _container.end());
+ bis_insert_range_function::evaluate(_container, pos, itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.begin()
+ , _container.end()
+ );
+ }
+ else
+ {
+ typename C::iterator start = pos;
+ --start;
+ bis_insert_range_function::evaluate(_container, pos, itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ ++start
+ , pos
+ );
+ }
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ bis_insert_range_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(pos, itr, itr_end);
+ }
+
+ struct uac_insert_range_function
+ {
+ template <typename C>
+ insert_range_function_proxy<uac_insert_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::deque<typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const;
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ );
+ };
+
+ template <typename C>
+ inline insert_range_function_proxy<uac_insert_range_function,C>
+ uac_insert_range_function::operator[](C& _container) const
+ {
+ return insert_range_function_proxy<uac_insert_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::deque<typename C::iterator>
+ uac_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , pos
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ uac_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ ::std::deque<typename C::iterator> result;
+
+ for (
+ ::std::pair<typename C::iterator,bool> insert_result;
+ itr != itr_end;
+ ++itr
+ )
+ {
+ insert_result = _container.insert(*itr);
+
+ if (insert_result.second)
+ {
+ result.push_back(insert_result.first);
+ }
+ }
+
+ return result;
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ uac_insert_range_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(itr, itr_end);
+ }
+
+ struct mac_insert_range_function
+ {
+ template <typename C>
+ insert_range_function_proxy<mac_insert_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::deque<typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const;
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ );
+ };
+
+ template <typename C>
+ inline insert_range_function_proxy<mac_insert_range_function,C>
+ mac_insert_range_function::operator[](C& _container) const
+ {
+ return insert_range_function_proxy<mac_insert_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::deque<typename C::iterator>
+ mac_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , pos
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ mac_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ ::std::deque<typename C::iterator> result;
+
+ for (; itr != itr_end; ++itr)
+ {
+ result.push_back(_container.insert(*itr));
+ }
+
+ return result;
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ mac_insert_range_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(itr, itr_end);
+ }
+
+ struct ptr_uac_insert_range_function
+ {
+ template <typename C>
+ insert_range_function_proxy<ptr_uac_insert_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::deque<typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const;
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ );
+ };
+
+ template <typename C>
+ inline insert_range_function_proxy<ptr_uac_insert_range_function,C>
+ ptr_uac_insert_range_function::operator[](C& _container) const
+ {
+ return insert_range_function_proxy<ptr_uac_insert_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::deque<typename C::iterator>
+ ptr_uac_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , pos
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ ptr_uac_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ ::std::deque<typename C::iterator> result;
+
+ for (
+ ::std::pair<typename C::iterator,bool> insert_result;
+ itr != itr_end;
+ ++itr
+ )
+ {
+ insert_result = _container.insert(new typename C::key_type(*itr));
+
+ if (insert_result.second)
+ {
+ result.push_back(insert_result.first);
+ }
+ }
+
+ return result;
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ ptr_uac_insert_range_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(itr, itr_end);
+ }
+
+ struct ptr_mac_insert_range_function
+ {
+ template <typename C>
+ insert_range_function_proxy<ptr_mac_insert_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::deque<typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const;
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ );
+ };
+
+ template <typename C>
+ inline insert_range_function_proxy<ptr_mac_insert_range_function,C>
+ ptr_mac_insert_range_function::operator[](C& _container) const
+ {
+ return insert_range_function_proxy<ptr_mac_insert_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::deque<typename C::iterator>
+ ptr_mac_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , pos
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ ptr_mac_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ ::std::deque<typename C::iterator> result;
+
+ for (; itr != itr_end; ++itr)
+ {
+ result.push_back(
+ _container.insert(new typename C::key_type(*itr))
+ );
+ }
+
+ return result;
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ ptr_mac_insert_range_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(itr, itr_end);
+ }
+
+ struct uns_ac_insert_range_function
+ {
+ template <typename C>
+ insert_range_function_proxy<uns_ac_insert_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ void
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const;
+
+ template <typename C, typename Itr>
+ void
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ );
+ };
+
+ template <typename C>
+ inline insert_range_function_proxy<uns_ac_insert_range_function,C>
+ uns_ac_insert_range_function::operator[](C& _container) const
+ {
+ return insert_range_function_proxy<uns_ac_insert_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline void
+ uns_ac_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , InputRange const& r
+ ) const
+ {
+ this->operator()(_container, pos, ::boost::begin(r), ::boost::end(r));
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ uns_ac_insert_range_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ uns_ac_insert_range_function::evaluate(_container, pos, itr, itr_end);
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ uns_ac_insert_range_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(itr, itr_end);
+ }
+}} // namespace boost::detail
+
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/container_gen/has_stable_iters_selector.hpp>
+#include <boost/container_gen/is_associative_selector.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+#include <boost/container_gen/is_multiple_assoc_selector.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+#include <boost/container_gen/is_random_access_selector.hpp>
+
+//[reference__insert_range_function_gen
+namespace boost {
+
+ template <typename Selector>
+ struct insert_range_function_gen
+ //<-
+ : ::boost::mpl::eval_if<
+ is_associative_selector<Selector>
+ , ::boost::mpl::eval_if<
+ has_stable_iterators_selector<Selector>
+ , ::boost::mpl::eval_if<
+ is_ptr_selector<Selector>
+ , ::boost::mpl::if_<
+ is_unique_associative_selector<Selector>
+ , detail::ptr_uac_insert_range_function
+ , detail::ptr_mac_insert_range_function
+ >
+ , ::boost::mpl::if_<
+ is_multiple_associative_selector<Selector>
+ , detail::mac_insert_range_function
+ , detail::uac_insert_range_function
+ >
+ >
+ , ::boost::mpl::identity<detail::uns_ac_insert_range_function>
+ >
+ , ::boost::mpl::if_<
+ is_random_access_selector<Selector>
+ , detail::ras_insert_range_function
+ , detail::bis_insert_range_function
+ >
+ >
+ //->
+ {
+//<-
+#if 0
+//->
+ typedef ... type;
+ //<-
+#endif
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, insert_range_function_gen, (Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#include <boost/config.hpp>
+#include <boost/container_gen/selectors.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename AllocatorSelector>
+ struct insert_range_function_gen<slist_selector<AllocatorSelector> >
+ {
+ typedef detail::fis_insert_range_function type;
+ };
+} // namespace boost
+
+#elif !defined BOOST_NO_SLIST
+
+namespace boost {
+
+ template <>
+ struct insert_range_function_gen<slist_selector_base>
+ {
+ typedef detail::fis_insert_range_function type;
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION, BOOST_NO_SLIST
+
+#endif // BOOST_CONTAINER_GEN_INSERT_RANGE_FUNCTION_GEN_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/insert_range_result_gen.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/insert_range_result_gen.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,53 @@
+//=======================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_INSERT_RANGE_RESULT_GEN_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_INSERT_RANGE_RESULT_GEN_HPP_INCLUDED
+
+#include <deque>
+#include <utility>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_associative_container.hpp>
+
+//[reference__insert_range_result_gen
+namespace boost {
+
+ template <typename Selector, typename T>
+ struct insert_range_result_gen
+ {
+ //<-
+ private:
+ typedef typename container_gen<Selector,T>::type C;
+ typedef typename C::iterator I;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::boost::detail::metafunction::is_associative_container<C>
+ , ::std::deque<I>
+ , ::std::pair<I,I>
+ >::type
+ type;
+#if 0
+ //->
+ typedef ... type;
+ //<-
+#endif
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , insert_range_result_gen
+ , (Selector, T)
+ )
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_CONTAINER_GEN_INSERT_RANGE_RESULT_GEN_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_allocator_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_allocator_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,115 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_ALLOCATOR_SELECTOR_HPP
+#define BOOST_CONTAINER_GEN_IS_ALLOCATOR_SELECTOR_HPP
+
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_MPL_CFG_NO_HAS_XXX || \
+ defined BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#include <boost/container_gen/selectors_fwd.hpp>
+
+namespace boost {
+
+ template <typename T>
+ struct is_allocator_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_allocator_selector, (T))
+ };
+
+ template <>
+ struct is_allocator_selector<std_allocator_selector> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_allocator_selector<std_flat_allocator_selector>
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#else // !defined BOOST_MPL_CFG_NO_HAS_XXX && \
+// !defined BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#include <boost/config.hpp>
+#include <cstddef>
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/vector/vector10.hpp>
+#include <boost/mpl/unpack_args.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/detail/metafunction/has_apply_template.hpp>
+#include <boost/detail/metafunction/is_allocator.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct does_allocator_selector_return_allocator
+ : ::boost::detail::metafunction::is_allocator<
+ typename ::boost::mpl::apply_wrap1<
+ ::boost::mpl::unpack_args<T>
+ , ::boost::mpl::vector1<T>
+ >::type
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_allocator_selector_metafunction_class
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ ::boost::mpl::apply_wrap1<
+ ::boost::mpl::unpack_args<T>
+ , ::boost::mpl::vector1<T>
+ >
+ , ::boost::mpl::false_
+ >::type
+ , does_allocator_selector_return_allocator<T>
+ , ::boost::mpl::false_
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_allocator_selector
+namespace boost {
+
+ template <typename T>
+ struct is_allocator_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::eval_if<
+ typename ::boost::detail::metafunction::has_apply_template<T>::type
+ , ::boost::detail::metafunction
+ ::is_allocator_selector_metafunction_class<T>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_allocator_selector, (T))
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_MPL_CFG_NO_HAS_XXX, BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#endif // BOOST_CONTAINER_GEN_IS_ALLOCATOR_SELECTOR_HPP
+

Added: sandbox/container_gen/boost/container_gen/is_associative_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_associative_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,92 @@
+//=============================================================================
+// Copyright (C) 2011-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_ASSOCIATIVE_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_ASSOCIATIVE_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/or.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+#include <boost/container_gen/is_multiple_assoc_selector.hpp>
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_associative_selector
+ : ::boost::mpl::or_<
+ is_unique_associative_selector<Selector>
+ , is_multiple_associative_selector<Selector>
+ >
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_associative_selector
+ , (Selector)
+ )
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_associative_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_associative_selector_impl
+ : ::boost::detail::metafunction::is_associative_container<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_associative_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_associative_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_associative_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_associative_selector
+ , (Selector)
+ )
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_ASSOCIATIVE_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_compare_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_compare_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,177 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_COMPARE_SELECTOR_HPP
+#define BOOST_CONTAINER_GEN_IS_COMPARE_SELECTOR_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_MPL_CFG_NO_HAS_XXX || \
+ defined BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#include <boost/container_gen/selectors_fwd.hpp>
+#include <boost/container_gen/c_str_cmp_selectors_fwd.hpp>
+
+namespace boost {
+
+ template <typename T>
+ struct is_compare_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_compare_selector, (T))
+ };
+
+ template <>
+ struct is_compare_selector<equal_to_selector> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_compare_selector<less_than_selector> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_compare_selector<greater_than_selector> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_compare_selector<c_str_less_than_selector> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_compare_selector<c_str_greater_than_selector>
+ : ::boost::mpl::true_
+ {
+ };
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <>
+ struct is_compare_selector<equivalence_selector_base> : ::boost::mpl::true_
+ {
+ };
+#else
+ template <typename CompareSelector>
+ struct is_compare_selector<equivalence_selector<CompareSelector> >
+ : ::boost::mpl::true_
+ {
+ };
+#endif
+} // namespace boost
+
+#else // !defined BOOST_MPL_CFG_NO_HAS_XXX && \
+// !defined BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#include <cstddef>
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/integral_c.hpp>
+#include <boost/mpl/vector/vector10.hpp>
+#include <boost/mpl/unpack_args.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/detail/metafunction/has_apply_template.hpp>
+#include <boost/detail/metafunction/is_function_wrt.hpp>
+
+#if defined BOOST_DETAIL_METAFUNCTION_ATTEMPT_ARITY_DETECTION
+#include <boost/mpl/if.hpp>
+#include <boost/detail/metafunction/is_n_ary_function.hpp>
+#include <boost/detail/metafunction/is_adaptable_binary_func.hpp>
+#endif
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Metafunction>
+ struct is_compare_selector_result_predicate
+#if !defined BOOST_DETAIL_METAFUNCTION_ATTEMPT_ARITY_DETECTION
+ : ::boost::detail::metafunction::is_function_with_result_type<
+ typename Metafunction::type
+ , bool
+ >
+#endif
+ {
+#if defined BOOST_DETAIL_METAFUNCTION_ATTEMPT_ARITY_DETECTION
+ private:
+ typedef typename Metafunction::type _function;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::boost::detail::metafunction
+ ::is_function_with_result_type<_function,bool>
+ , ::boost::mpl::if_<
+ ::boost::detail::metafunction::is_n_ary_function<
+ _function
+ , ::boost::mpl::integral_c<unsigned int,2>
+ >
+ , ::boost::mpl::true_
+ , ::boost::detail::metafunction
+ ::is_adaptable_binary_function<_function>
+ >
+ , ::boost::mpl::false_
+ >::type
+ type;
+#endif
+ };
+
+ template <typename T>
+ struct is_compare_selector_metafunction_class
+ {
+ private:
+ typedef ::boost::mpl::apply_wrap1<
+ ::boost::mpl::unpack_args<T>
+ , ::boost::mpl::vector1<T>
+ >
+ _metafunction;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::aux::has_type<
+ _metafunction
+ , ::boost::mpl::false_
+ >::type
+ , is_compare_selector_result_predicate<_metafunction>
+ , ::boost::mpl::false_
+ >::type
+ type;
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_compare_selector
+namespace boost {
+
+ template <typename T>
+ struct is_compare_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::eval_if<
+ typename ::boost::detail::metafunction::has_apply_template<T>::type
+ , ::boost::detail::metafunction
+ ::is_compare_selector_metafunction_class<T>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_compare_selector, (T))
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_MPL_CFG_NO_HAS_XXX, BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#endif // BOOST_CONTAINER_GEN_IS_COMPARE_SELECTOR_HPP
+

Added: sandbox/container_gen/boost/container_gen/is_container_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_container_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,454 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_CONTAINER_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_CONTAINER_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_container_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_container_selector,(Selector))
+ };
+} // namespace boost
+
+#include <boost/container_gen/selectors_fwd.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+#if !defined BOOST_MSVC
+ template <>
+ struct is_container_selector<array_selector_base> : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <>
+ struct is_container_selector<vector_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<deque_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<list_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+#if !defined BOOST_NO_SLIST
+ template <>
+ struct is_container_selector<slist_selector_base> : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <>
+ struct is_container_selector<set_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<map_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<multiset_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<multimap_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+#if defined BOOST_HAS_HASH
+ template <>
+ struct is_container_selector<hash_set_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<hash_map_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<hash_multiset_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<hash_multimap_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+#endif // BOOST_HAS_HASH
+
+#if !defined BOOST_MSVC
+ template <>
+ struct is_container_selector<ptr_array_selector_base> : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <>
+ struct is_container_selector<ptr_vector_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<ptr_deque_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<ptr_list_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<ptr_set_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<ptr_map_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<ptr_multiset_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<ptr_multimap_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<stack_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<queue_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_container_selector<std_heap_selector_base> : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+#if !defined BOOST_MSVC
+ template <typename T0, typename T1>
+ struct is_container_selector<array_selector<T0,T1> > : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <typename T0, typename T1>
+ struct is_container_selector<vector_selector<T0,T1> > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename AllocatorSelector>
+ struct is_container_selector<stable_vector_selector<AllocatorSelector> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename ConstantCapacity>
+ struct is_container_selector<static_vector_selector<ConstantCapacity> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_container_selector<deque_selector<T0,T1> > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_container_selector<list_selector<T0,T1> > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_container_selector<set_selector<T0,T1,T2> > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_container_selector<map_selector<T0,T1,T2> > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_container_selector<multiset_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_container_selector<multimap_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_container_selector<flat_set_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_container_selector<flat_map_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_container_selector<flat_multiset_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_container_selector<flat_multimap_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_container_selector<hash_set_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_container_selector<hash_map_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_container_selector<hash_multiset_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_container_selector<hash_multimap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+#if !defined BOOST_MSVC
+ template <typename T0, typename T1>
+ struct is_container_selector<ptr_array_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <typename T0, typename T1>
+ struct is_container_selector<ptr_vector_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_container_selector<ptr_deque_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_container_selector<ptr_list_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_container_selector<ptr_set_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_container_selector<ptr_map_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_container_selector<ptr_multiset_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_container_selector<ptr_multimap_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_container_selector<ptr_hash_set_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_container_selector<ptr_hash_map_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_container_selector<ptr_hash_multiset_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_container_selector<ptr_hash_multimap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename SequenceSelector>
+ struct is_container_selector<stack_selector<SequenceSelector> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename SequenceSelector>
+ struct is_container_selector<queue_selector<SequenceSelector> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_container_selector<std_heap_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_container_selector<priority_queue_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ >
+ struct is_container_selector<d_ary_heap_selector<T0,T1,T2,T3,T4,T5> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_container_selector<binomial_heap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_container_selector<fibonacci_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_container_selector<pairing_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ , typename T6
+ >
+ struct is_container_selector<skew_heap_selector<T0,T1,T2,T3,T4,T5,T6> >
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/container_gen/container_gen_fwd.hpp>
+
+//[reference__is_container_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_container_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_container_selector,(Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_CONTAINER_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_flat_assoc_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_flat_assoc_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,117 @@
+//=============================================================================
+// Copyright (C) 2012-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_FLAT_ASSOC_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_FLAT_ASSOC_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_flat_associative_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_flat_associative_selector
+ , (Selector)
+ )
+ };
+} // namespace boost
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/container_gen/selectors.hpp>
+
+namespace boost {
+
+ template <typename T0, typename T1>
+ struct is_flat_associative_selector<flat_set_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_flat_associative_selector<flat_map_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_flat_associative_selector<flat_multiset_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_flat_associative_selector<flat_multimap_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_flat_assoc_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_flat_associative_selector_impl
+ : ::boost::detail::metafunction::is_flat_associative_container<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_flat_associative_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_flat_associative_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_flat_associative_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_flat_associative_selector
+ , (Selector)
+ )
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_FLAT_ASSOC_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_hashed_assoc_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_hashed_assoc_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,175 @@
+//=============================================================================
+// Copyright (C) 2011-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_HASHED_ASSOC_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_HASHED_ASSOC_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_hashed_associative_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_hashed_associative_selector
+ , (Selector)
+ )
+ };
+} // namespace boost
+
+#include <boost/container_gen/selectors.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#if defined BOOST_HAS_HASH
+
+namespace boost {
+
+ template <>
+ struct is_hashed_associative_selector<hash_set_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_hashed_associative_selector<hash_map_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_hashed_associative_selector<hash_multiset_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_hashed_associative_selector<hash_multimap_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_HAS_HASH
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_hashed_associative_selector<hash_set_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_hashed_associative_selector<hash_map_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_hashed_associative_selector<hash_multiset_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_hashed_associative_selector<hash_multimap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_hashed_associative_selector<ptr_hash_set_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_hashed_associative_selector<ptr_hash_map_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_hashed_associative_selector<
+ ptr_hash_multiset_selector<T0,T1,T2,T3>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_hashed_associative_selector<
+ ptr_hash_multimap_selector<T0,T1,T2,T3>
+ > : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_hashed_assoc_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_hashed_associative_selector_impl
+ : ::boost::detail::metafunction::is_hashed_associative_container<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_hashed_associative_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_hashed_associative_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_hashed_associative_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_hashed_associative_selector
+ , (Selector)
+ )
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_HASHED_ASSOC_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_hasher_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_hasher_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,146 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_HASHER_SELECTOR_HPP
+#define BOOST_CONTAINER_GEN_IS_HASHER_SELECTOR_HPP
+
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_MPL_CFG_NO_HAS_XXX || \
+ defined BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#include <boost/container_gen/selectors_fwd.hpp>
+
+namespace boost {
+
+ template <typename T>
+ struct is_hasher_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_hasher_selector, (T))
+ };
+
+ template <>
+ struct is_hasher_selector<boost_hash_selector> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_hasher_selector<tr1_hash_selector> : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#else // !defined BOOST_MPL_CFG_NO_HAS_XXX && \
+// !defined BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#include <boost/config.hpp>
+#include <cstddef>
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/integral_c.hpp>
+#include <boost/mpl/vector/vector10.hpp>
+#include <boost/mpl/unpack_args.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/detail/metafunction/has_apply_template.hpp>
+#include <boost/detail/metafunction/is_function_wrt.hpp>
+
+#if defined BOOST_DETAIL_METAFUNCTION_ATTEMPT_ARITY_DETECTION
+#include <boost/mpl/if.hpp>
+#include <boost/detail/metafunction/is_n_ary_function.hpp>
+#include <boost/detail/metafunction/is_adaptable_binary_func.hpp>
+#endif
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Metafunction>
+ struct is_hasher_selector_result_function
+#if !defined BOOST_DETAIL_METAFUNCTION_ATTEMPT_ARITY_DETECTION
+ : ::boost::detail::metafunction::is_function_with_result_type<
+ typename Metafunction::type
+ , ::std::size_t
+ >
+#endif
+ {
+#if defined BOOST_DETAIL_METAFUNCTION_ATTEMPT_ARITY_DETECTION
+ private:
+ typedef typename Metafunction::type _function;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::boost::detail::metafunction
+ ::is_function_with_result_type<_function,::std::size_t>
+ , ::boost::mpl::false_
+ , ::boost::mpl::if_<
+ ::boost::detail::metafunction::is_n_ary_function<
+ _function
+ , ::boost::mpl::integral_c<unsigned int,1>
+ >
+ , ::boost::mpl::true_
+ , ::boost::detail::metafunction
+ ::is_adaptable_unary_function<_function>
+ >
+ >::type
+ type;
+#endif
+ };
+
+ template <typename T>
+ struct is_hasher_selector_metafunction_class
+ {
+ private:
+ typedef ::boost::mpl::apply_wrap1<
+ ::boost::mpl::unpack_args<T>
+ , ::boost::mpl::vector1<T>
+ >
+ _metafunction;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::aux::has_type<
+ _metafunction
+ , ::boost::mpl::false_
+ >::type
+ , is_hasher_selector_result_function<_metafunction>
+ , ::boost::mpl::false_
+ >::type
+ type;
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_hasher_selector
+namespace boost {
+
+ template <typename T>
+ struct is_hasher_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::eval_if<
+ typename ::boost::detail::metafunction::has_apply_template<T>::type
+ , ::boost::detail::metafunction
+ ::is_hasher_selector_metafunction_class<T>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_hasher_selector, (T))
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_MPL_CFG_NO_HAS_XXX, BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#endif // BOOST_CONTAINER_GEN_IS_HASHER_SELECTOR_HPP
+

Added: sandbox/container_gen/boost/container_gen/is_heap_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_heap_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,136 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_HEAP_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_HEAP_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_heap_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_heap_selector, (Selector))
+ };
+} // namespace boost
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/container_gen/selectors.hpp>
+
+namespace boost {
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_heap_selector<priority_queue_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ >
+ struct is_heap_selector<d_ary_heap_selector<T0,T1,T2,T3,T4,T5> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_heap_selector<binomial_heap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_heap_selector<fibonacci_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_heap_selector<pairing_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ , typename T6
+ >
+ struct is_heap_selector<skew_heap_selector<T0,T1,T2,T3,T4,T5,T6> >
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_heap.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_heap_selector_impl
+ : ::boost::detail::metafunction::is_heap<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_heap_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_heap_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_heap_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_heap_selector, (Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_HEAP_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_iteratable_heap_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_iteratable_heap_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,146 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_ITERATABLE_HEAP_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_ITERATABLE_HEAP_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_iteratable_heap_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_iteratable_heap_selector
+ , (Selector)
+ )
+ };
+} // namespace boost
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/container_gen/selectors.hpp>
+
+namespace boost {
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_iteratable_heap_selector<priority_queue_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ >
+ struct is_iteratable_heap_selector<d_ary_heap_selector<T0,T1,T2,T3,T4,T5> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_iteratable_heap_selector<binomial_heap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_iteratable_heap_selector<
+ fibonacci_heap_selector<T0,T1,T2,T3,T4>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_iteratable_heap_selector<pairing_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ , typename T6
+ >
+ struct is_iteratable_heap_selector<
+ skew_heap_selector<T0,T1,T2,T3,T4,T5,T6>
+ > : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_iteratable_heap.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_iteratable_heap_selector_impl
+ : ::boost::detail::metafunction::is_iteratable_heap<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_iteratable_heap_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_iteratable_heap_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_iteratable_heap_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_iteratable_heap_selector
+ , (Selector)
+ )
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_ITERATABLE_HEAP_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_mergeable_heap_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_mergeable_heap_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,154 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_MERGEABLE_HEAP_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_MERGEABLE_HEAP_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_mergeable_heap_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_mergeable_heap_selector, (Selector))
+ };
+} // namespace boost
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/heap/policies.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/detail/selector_signatures.hpp>
+
+namespace boost {
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_mergeable_heap_selector<binomial_heap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_mergeable_heap_selector<fibonacci_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_mergeable_heap_selector<pairing_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ , typename T6
+ >
+ struct is_mergeable_heap_selector<
+ skew_heap_selector<T0,T1,T2,T3,T4,T5,T6>
+ > : ::boost::mpl::bool_<
+ ::boost::heap::detail::extract_mutable<
+ typename detail::skew_heap_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ , T4
+ , T5
+ , T6
+ >::type
+ >::value
+ >
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_mergeable_heap.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_mergeable_heap_selector_impl
+ : ::boost::detail::metafunction::is_mergeable_heap<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_mergeable_heap_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_mergeable_heap_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_mergeable_heap_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_mergeable_heap_selector, (Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/container_gen/selectors.hpp>
+
+namespace boost {
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ >
+ struct is_mergeable_heap_selector<d_ary_heap_selector<T0,T1,T2,T3,T4,T5> >
+ : ::boost::mpl::false_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_MERGEABLE_HEAP_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_multiple_assoc_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_multiple_assoc_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,204 @@
+//=============================================================================
+// Copyright (C) 2011-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_MULTIPLE_ASSOC_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_MULTIPLE_ASSOC_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX || \
+ defined BOOST_TYPEOF_EMULATION
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_multiple_associative_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_multiple_associative_selector
+ , (Selector)
+ )
+ };
+} // namespace boost
+
+#include <boost/container_gen/selectors.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <>
+ struct is_multiple_associative_selector<multiset_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_multiple_associative_selector<multimap_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_multiple_associative_selector<ptr_multiset_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_multiple_associative_selector<ptr_multimap_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+#if defined BOOST_HAS_HASH
+ template <>
+ struct is_multiple_associative_selector<hash_multiset_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_multiple_associative_selector<hash_multimap_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+#endif // BOOST_HAS_HASH
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename T0, typename T1, typename T2>
+ struct is_multiple_associative_selector<multiset_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_multiple_associative_selector<multimap_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_multiple_associative_selector<flat_multiset_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_multiple_associative_selector<flat_multimap_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_multiple_associative_selector<
+ hash_multiset_selector<T0,T1,T2,T3>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_multiple_associative_selector<
+ hash_multimap_selector<T0,T1,T2,T3>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_multiple_associative_selector<ptr_multiset_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_multiple_associative_selector<ptr_multimap_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_multiple_associative_selector<
+ ptr_hash_multiset_selector<T0,T1,T2,T3>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_multiple_associative_selector<
+ ptr_hash_multimap_selector<T0,T1,T2,T3>
+ > : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX && \
+// !defined BOOST_TYPEOF_EMULATION
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_multi_assoc_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_multiple_associative_selector_impl
+ : ::boost::detail::metafunction::is_multiple_associative_container<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_multiple_associative_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_multiple_associative_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_multiple_associative_selector_impl<
+ Selector
+ >
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_multiple_associative_selector
+ , (Selector)
+ )
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX, BOOST_TYPEOF_EMULATION
+
+#endif // BOOST_CONTAINER_GEN_IS_MULTIPLE_ASSOC_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_mutable_heap_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_mutable_heap_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,155 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_MUTABLE_HEAP_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_MUTABLE_HEAP_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_mutable_heap_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_mutable_heap_selector, (Selector))
+ };
+} // namespace boost
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/heap/policies.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/detail/selector_signatures.hpp>
+
+namespace boost {
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ >
+ struct is_mutable_heap_selector<d_ary_heap_selector<T0,T1,T2,T3,T4,T5> >
+ : ::boost::mpl::bool_<
+ ::boost::heap::detail::extract_mutable<
+ typename detail::d_ary_heap_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ , T4
+ , T5
+ >::type
+ >::value
+ >
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_mutable_heap_selector<binomial_heap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_mutable_heap_selector<fibonacci_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_mutable_heap_selector<pairing_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ , typename T6
+ >
+ struct is_mutable_heap_selector<skew_heap_selector<T0,T1,T2,T3,T4,T5,T6> >
+ : ::boost::mpl::bool_<
+ ::boost::heap::detail::extract_mutable<
+ typename detail::skew_heap_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ , T4
+ , T5
+ , T6
+ >::type
+ >::value
+ >
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_mutable_heap.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_mutable_heap_selector_impl
+ : ::boost::detail::metafunction::is_mutable_heap<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_mutable_heap_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_mutable_heap_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_mutable_heap_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_mutable_heap_selector, (Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_MUTABLE_HEAP_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_order_iter_heap_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_order_iter_heap_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,145 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_ORDER_ITER_HEAP_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_ORDER_ITER_HEAP_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_order_iteratable_heap_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_order_iteratable_heap_selector
+ , (Selector)
+ )
+ };
+} // namespace boost
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/container_gen/selectors.hpp>
+
+namespace boost {
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ >
+ struct is_order_iteratable_heap_selector<
+ d_ary_heap_selector<T0,T1,T2,T3,T4,T5>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_order_iteratable_heap_selector<
+ binomial_heap_selector<T0,T1,T2,T3>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_order_iteratable_heap_selector<
+ fibonacci_heap_selector<T0,T1,T2,T3,T4>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_order_iteratable_heap_selector<
+ pairing_heap_selector<T0,T1,T2,T3,T4>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ , typename T6
+ >
+ struct is_order_iteratable_heap_selector<
+ skew_heap_selector<T0,T1,T2,T3,T4,T5,T6>
+ > : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_order_iteratable_heap.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_order_iteratable_heap_selector_impl
+ : ::boost::detail::metafunction::is_order_iteratable_heap<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_order_iteratable_heap_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_order_iteratable_heap_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_order_iteratable_heap_selector_impl<
+ Selector
+ >
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_order_iteratable_heap_selector
+ , (Selector)
+ )
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_ORDER_ITER_HEAP_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_ptr_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_ptr_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,200 @@
+//=============================================================================
+// Copyright (C) 2012-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_PTR_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_PTR_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_ptr_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_ptr_selector, (Selector))
+ };
+} // namespace boost
+
+#include <boost/container_gen/selectors.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+#if !defined BOOST_MSVC
+ template <>
+ struct is_ptr_selector<ptr_array_selector_base> : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <>
+ struct is_ptr_selector<ptr_vector_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_ptr_selector<ptr_deque_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_ptr_selector<ptr_list_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_ptr_selector<ptr_set_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_ptr_selector<ptr_map_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_ptr_selector<ptr_multiset_selector_base> : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_ptr_selector<ptr_multimap_selector_base> : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+#if !defined BOOST_MSVC
+ template <typename T0, typename T1>
+ struct is_ptr_selector<ptr_array_selector<T0,T1> > : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <typename T0, typename T1>
+ struct is_ptr_selector<ptr_vector_selector<T0,T1> > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_ptr_selector<ptr_deque_selector<T0,T1> > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_ptr_selector<ptr_list_selector<T0,T1> > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_ptr_selector<ptr_set_selector<T0,T1,T2> > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_ptr_selector<ptr_map_selector<T0,T1,T2> > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_ptr_selector<ptr_multiset_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_ptr_selector<ptr_multimap_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_ptr_selector<ptr_hash_set_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_ptr_selector<ptr_hash_map_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_ptr_selector<ptr_hash_multiset_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_ptr_selector<ptr_hash_multimap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_ptr_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_ptr_selector_impl
+ : ::boost::detail::metafunction::is_ptr_container<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_ptr_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_ptr_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_ptr_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_ptr_selector, (Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_PTR_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_queue_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_queue_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,101 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_QUEUE_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_QUEUE_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_queue_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_queue_selector, (Selector))
+ };
+} // namespace boost
+
+#include <boost/container_gen/selectors.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <>
+ struct is_queue_selector<queue_selector_base> : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename SequenceSelector>
+ struct is_queue_selector<queue_selector<SequenceSelector> >
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_queue.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_queue_selector_impl
+ : ::boost::detail::metafunction::is_queue<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_queue_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_queue_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_queue_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_queue_selector, (Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_QUEUE_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_random_access_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_random_access_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,184 @@
+//=============================================================================
+// Copyright (C) 2011-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_RANDOM_ACCESS_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_RANDOM_ACCESS_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_random_access_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_random_access_selector,(Selector))
+ };
+} // namespace boost
+
+#include <boost/container_gen/selectors.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+#if !defined BOOST_MSVC
+ template <>
+ struct is_random_access_selector<array_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <>
+ struct is_random_access_selector<vector_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_random_access_selector<deque_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+#if !defined BOOST_MSVC
+ template <>
+ struct is_random_access_selector<ptr_array_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <>
+ struct is_random_access_selector<ptr_vector_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_random_access_selector<ptr_deque_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+#if !defined BOOST_MSVC
+ template <typename T0, typename T1>
+ struct is_random_access_selector<array_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <typename T0, typename T1>
+ struct is_random_access_selector<vector_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename AllocatorSelector>
+ struct is_random_access_selector<
+ stable_vector_selector<AllocatorSelector>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename ConstantCapacity>
+ struct is_random_access_selector<
+ static_vector_selector<ConstantCapacity>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_random_access_selector<deque_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+#if !defined BOOST_MSVC
+ template <typename T0, typename T1>
+ struct is_random_access_selector<ptr_array_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+#endif
+
+ template <typename T0, typename T1>
+ struct is_random_access_selector<ptr_vector_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_random_access_selector<ptr_deque_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_random_access_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_random_access_selector_impl
+ : ::boost::detail::metafunction::is_random_access_container<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_random_access_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_random_access_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_random_access_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_random_access_selector,(Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_RANDOM_ACCESS_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_recursive_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_recursive_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,213 @@
+//=============================================================================
+// Copyright (C) 2012-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_RECURSIVE_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_RECURSIVE_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_recursive_selector
+ : is_ptr_selector<Selector>
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_recursive_selector, (Selector))
+ };
+
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/parameter.hpp>
+#include <boost/container_gen/is_hashed_assoc_selector.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/selector_keywords.hpp>
+#include <boost/container_gen/detail/selector_signatures.hpp>
+
+//[reference__is_recursive_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_recursive_selector
+ : ::boost::mpl::if_<
+ is_ptr_selector<Selector>
+ , ::boost::mpl::true_
+ , is_hashed_associative_selector<Selector>
+ >::type
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_recursive_selector, (Selector))
+ //->
+ };
+
+ template <typename AllocatorSelector>
+ struct is_recursive_selector<stable_vector_selector<AllocatorSelector> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename AllocatorSelector>
+ struct is_recursive_selector<slist_selector<AllocatorSelector> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ // More metafunction specializations...
+ //<-
+ template <typename T0, typename T1>
+ struct is_recursive_selector<vector_selector<T0,T1> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::sequence_selector_signature::bind<T0,T1>::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_recursive_selector<deque_selector<T0,T1> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::sequence_selector_signature::bind<T0,T1>::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_recursive_selector<list_selector<T0,T1> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::sequence_selector_signature::bind<T0,T1>::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_recursive_selector<set_selector<T0,T1,T2> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::boost_or_std_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_recursive_selector<map_selector<T0,T1,T2> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::boost_or_std_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_recursive_selector<multiset_selector<T0,T1,T2> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::boost_or_std_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_recursive_selector<multimap_selector<T0,T1,T2> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::boost_or_std_assoc_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ >::type
+ , ::boost::is_boost_not_std_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_recursive_selector<flat_set_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_recursive_selector<flat_map_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_recursive_selector<flat_multiset_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_recursive_selector<flat_multimap_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+ //->
+} // namespace boost
+//]
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_CONTAINER_GEN_IS_RECURSIVE_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_reversible_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_reversible_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,265 @@
+//=============================================================================
+// Copyright (C) 2012-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_REVERSIBLE_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_REVERSIBLE_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_reversible_selector : ::boost::mpl::true_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reversible_selector,(Selector))
+ };
+} // namespace boost
+
+#include <boost/container_gen/selectors.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+#if !defined BOOST_NO_SLIST
+ template <>
+ struct is_reversible_selector<slist_selector_base>
+ : ::boost::mpl::false_
+ {
+ };
+#endif
+
+#if defined BOOST_HAS_HASH
+ template <>
+ struct is_reversible_selector<hash_set_selector_base>
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <>
+ struct is_reversible_selector<hash_map_selector_base>
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <>
+ struct is_reversible_selector<hash_multiset_selector_base>
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <>
+ struct is_reversible_selector<hash_multimap_selector_base>
+ : ::boost::mpl::false_
+ {
+ };
+#endif // BOOST_HAS_HASH
+
+ template <>
+ struct is_reversible_selector<stack_selector_base>
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <>
+ struct is_reversible_selector<queue_selector_base>
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <>
+ struct is_reversible_selector<std_heap_selector_base>
+ : ::boost::mpl::false_
+ {
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename AllocatorSelector>
+ struct is_reversible_selector<slist_selector<AllocatorSelector> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_reversible_selector<hash_set_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_reversible_selector<hash_map_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_reversible_selector<hash_multiset_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_reversible_selector<hash_multimap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_reversible_selector<ptr_hash_set_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_reversible_selector<ptr_hash_map_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_reversible_selector<ptr_hash_multiset_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_reversible_selector<ptr_hash_multimap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename ContainerSelector>
+ struct is_reversible_selector<stack_selector<ContainerSelector> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename ContainerSelector>
+ struct is_reversible_selector<queue_selector<ContainerSelector> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_reversible_selector<std_heap_selector<T0,T1> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_reversible_selector<priority_queue_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ >
+ struct is_reversible_selector<d_ary_heap_selector<T0,T1,T2,T3,T4,T5> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_reversible_selector<binomial_heap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_reversible_selector<fibonacci_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct is_reversible_selector<pairing_heap_selector<T0,T1,T2,T3,T4> >
+ : ::boost::mpl::false_
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ , typename T6
+ >
+ struct is_reversible_selector<skew_heap_selector<T0,T1,T2,T3,T4,T5,T6> >
+ : ::boost::mpl::false_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_reversible_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_reversible_selector_impl
+ : ::boost::detail::metafunction::is_reversible_container<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_reversible_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_reversible_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_reversible_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reversible_selector,(Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif // BOOST_CONTAINER_GEN_IS_REVERSIBLE_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_stack_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_stack_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,57 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_STACK_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_STACK_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/container_gen/selectors.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_stack_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_stack_selector, (Selector))
+ };
+
+ template <>
+ struct is_stack_selector<stack_selector_base> : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//[reference__is_stack_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_stack_selector : ::boost::mpl::false_
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_stack_selector, (Selector))
+ //->
+ };
+
+ template <typename SequenceSelector>
+ struct is_stack_selector<stack_selector<SequenceSelector> >
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_CONTAINER_GEN_IS_STACK_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_std_heap_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_std_heap_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,58 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_STD_HEAP_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_STD_HEAP_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/container_gen/selectors.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_std_heap_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_std_heap_selector, (Selector))
+ };
+
+ template <>
+ struct is_std_heap_selector<std_heap_selector_base> : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//[reference__is_std_heap_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_std_heap_selector : ::boost::mpl::false_
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_std_heap_selector, (Selector))
+ //->
+ };
+
+ template <typename CompareSelector, typename SequenceSelector>
+ struct is_std_heap_selector<
+ std_heap_selector<CompareSelector,SequenceSelector>
+ > : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_CONTAINER_GEN_IS_STD_HEAP_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_tr1_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_tr1_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,148 @@
+//=============================================================================
+// Copyright (C) 2012-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_TR1_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_TR1_SELECTOR_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/container_gen/selectors.hpp>
+
+//[reference__is_tr1_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_tr1_selector : ::boost::mpl::false_
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_tr1_selector, (Selector))
+ //->
+ };
+
+ template <>
+ struct is_tr1_selector<tr1_hash_selector> : ::boost::mpl::true_
+ {
+ };
+
+ // More metafunction specializations...
+} // namespace boost
+//]
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/mpl/if.hpp>
+#include <boost/parameter.hpp>
+#include <boost/container_gen/selector_keywords.hpp>
+#include <boost/container_gen/detail/selector_signatures.hpp>
+
+namespace boost {
+
+ template <>
+ struct is_tr1_selector<tr1_binary_predicate_selector> : ::boost::mpl::true_
+ {
+ };
+
+#if !defined BOOST_MSVC
+ template <typename T0, typename T1>
+ struct is_tr1_selector<array_selector<T0,T1> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::array_selector_signature::bind<T0,T1>::type
+ , ::boost::is_tr1_not_boost_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+#endif
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_tr1_selector<hash_set_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::hashed_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ , ::boost::is_tr1_not_boost_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_tr1_selector<hash_map_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::hashed_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ , ::boost::is_tr1_not_boost_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_tr1_selector<hash_multiset_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::hashed_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ , ::boost::is_tr1_not_boost_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_tr1_selector<hash_multimap_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::if_<
+ typename ::boost::parameter::value_type<
+ typename detail::hashed_associative_selector_signature::bind<
+ T0
+ , T1
+ , T2
+ , T3
+ >::type
+ , ::boost::is_tr1_not_boost_tag
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+} // namespace boost
+
+#endif // !BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_CONTAINER_GEN_IS_TR1_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/is_unique_assoc_selector.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/is_unique_assoc_selector.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,198 @@
+//=============================================================================
+// Copyright (C) 2011-2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_IS_UNIQUE_ASSOC_SELECTOR_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_IS_UNIQUE_ASSOC_SELECTOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#if defined BOOST_NO_SFINAE || defined BOOST_MPL_CFG_NO_HAS_XXX || \
+ defined BOOST_TYPEOF_EMULATION
+
+namespace boost {
+
+ template <typename Selector>
+ struct is_unique_associative_selector : ::boost::mpl::false_
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_unique_associative_selector
+ , (Selector)
+ )
+ };
+} // namespace boost
+
+#include <boost/container_gen/selectors.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <>
+ struct is_unique_associative_selector<set_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_unique_associative_selector<map_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_unique_associative_selector<ptr_set_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_unique_associative_selector<ptr_map_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+#if defined BOOST_HAS_HASH
+ template <>
+ struct is_unique_associative_selector<hash_set_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <>
+ struct is_unique_associative_selector<hash_map_selector_base>
+ : ::boost::mpl::true_
+ {
+ };
+#endif // BOOST_HAS_HASH
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename T0, typename T1, typename T2>
+ struct is_unique_associative_selector<set_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_unique_associative_selector<map_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_unique_associative_selector<flat_set_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct is_unique_associative_selector<flat_map_selector<T0,T1> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_unique_associative_selector<hash_set_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_unique_associative_selector<hash_map_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_unique_associative_selector<ptr_set_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct is_unique_associative_selector<ptr_map_selector<T0,T1,T2> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_unique_associative_selector<ptr_hash_set_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct is_unique_associative_selector<ptr_hash_map_selector<T0,T1,T2,T3> >
+ : ::boost::mpl::true_
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#else // !defined BOOST_NO_SFINAE && !defined BOOST_MPL_CFG_NO_HAS_XXX && \
+// !defined BOOST_TYPEOF_EMULATION
+
+#include <boost/mpl/aux_/has_type.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/detail/metafunction/is_unique_assoc_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename Selector>
+ struct is_unique_associative_selector_impl
+ : ::boost::detail::metafunction::is_unique_associative_container<
+ typename container_gen<Selector,int>::type
+ >
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+//[reference__is_unique_associative_selector
+namespace boost {
+
+ template <typename Selector>
+ struct is_unique_associative_selector
+//<-
+#if 0
+//->
+ : implementation_defined __Boolean_Integral_Constant__
+//<-
+#endif
+ : ::boost::mpl::if_<
+ typename ::boost::mpl::aux::has_type<
+ container_gen<Selector,int>
+ >::type
+ , detail::metafunction::is_unique_associative_selector_impl<Selector>
+ , ::boost::mpl::false_
+ >::type
+ //->
+ {
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , is_unique_associative_selector
+ , (Selector)
+ )
+ //->
+ };
+} // namespace boost
+//]
+
+#endif // BOOST_NO_SFINAE, BOOST_MPL_CFG_NO_HAS_XXX, BOOST_TYPEOF_EMULATION
+
+#endif // BOOST_CONTAINER_GEN_IS_UNIQUE_ASSOC_SELECTOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/push_range_function_gen.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/push_range_function_gen.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,709 @@
+//=======================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_PUSH_RANGE_FUNCTION_GEN_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_PUSH_RANGE_FUNCTION_GEN_HPP_INCLUDED
+
+#include <deque>
+#include <utility>
+#include <boost/range.hpp>
+
+namespace boost { namespace detail {
+
+ template <typename F, typename C>
+ class push_range_function_proxy
+ {
+ C& _container;
+
+ public:
+ explicit push_range_function_proxy(C& c);
+
+ template <typename Itr>
+ push_range_function_proxy& operator()(Itr itr, Itr itr_end);
+
+ template <typename InputRange>
+ push_range_function_proxy& operator()(InputRange const& r);
+ };
+
+ template <typename F, typename C>
+ push_range_function_proxy<F,C>::push_range_function_proxy(C& c)
+ : _container(c)
+ {
+ }
+
+ template <typename F, typename C>
+ template <typename Itr>
+ inline push_range_function_proxy<F,C>&
+ push_range_function_proxy<F,C>::operator()(Itr itr, Itr itr_end)
+ {
+ F::evaluate(this->_container, itr, itr_end);
+ return *this;
+ }
+
+ template <typename F, typename C>
+ template <typename InputRange>
+ inline push_range_function_proxy<F,C>&
+ push_range_function_proxy<F,C>::operator()(InputRange const& r)
+ {
+ F::evaluate(this->_container, ::boost::begin(r), ::boost::end(r));
+ return *this;
+ }
+
+ struct fis_push_range_function
+ {
+ template <typename C>
+ push_range_function_proxy<fis_push_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(C& _container, InputRange const& r) const;
+
+ template <typename C, typename Itr>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(C& _container, Itr itr, Itr itr_end) const;
+
+ template <typename C, typename Itr>
+ static void evaluate(C& _container, Itr itr, Itr itr_end);
+ };
+
+ template <typename C>
+ inline push_range_function_proxy<fis_push_range_function,C>
+ fis_push_range_function::operator[](C& _container) const
+ {
+ return push_range_function_proxy<fis_push_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ fis_push_range_function::operator()(
+ C& _container
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ fis_push_range_function::operator()(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ typename C::iterator const range_end = _container.begin();
+ fis_push_range_function::evaluate(_container, itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.begin()
+ , range_end
+ );
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ fis_push_range_function::evaluate(C& _container, Itr itr, Itr itr_end)
+ {
+ _container.insert(_container.begin(), itr, itr_end);
+ }
+
+ struct ras_push_range_function
+ {
+ template <typename C>
+ push_range_function_proxy<ras_push_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(C& _container, InputRange const& r) const;
+
+ template <typename C, typename Itr>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(C& _container, Itr itr, Itr itr_end) const;
+
+ template <typename C, typename Itr>
+ static void evaluate(C& _container, Itr itr, Itr itr_end);
+ };
+
+ template <typename C>
+ inline push_range_function_proxy<ras_push_range_function,C>
+ ras_push_range_function::operator[](C& _container) const
+ {
+ return push_range_function_proxy<ras_push_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ ras_push_range_function::operator()(
+ C& _container
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ ras_push_range_function::operator()(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ if (_container.empty())
+ {
+ ras_push_range_function::evaluate(_container, itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.begin()
+ , _container.end()
+ );
+ }
+ else
+ {
+ typename C::size_type const old_size = _container.size();
+ ras_push_range_function::evaluate(_container, itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.begin() + old_size
+ , _container.end()
+ );
+ }
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ ras_push_range_function::evaluate(C& _container, Itr itr, Itr itr_end)
+ {
+ _container.insert(_container.end(), itr, itr_end);
+ }
+
+ struct bis_push_range_function
+ {
+ template <typename C>
+ push_range_function_proxy<bis_push_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(C& _container, InputRange const& r) const;
+
+ template <typename C, typename Itr>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(C& _container, Itr itr, Itr itr_end) const;
+
+ template <typename C, typename Itr>
+ static void evaluate(C& _container, Itr itr, Itr itr_end);
+ };
+
+ template <typename C>
+ inline push_range_function_proxy<bis_push_range_function,C>
+ bis_push_range_function::operator[](C& _container) const
+ {
+ return push_range_function_proxy<bis_push_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ bis_push_range_function::operator()(
+ C& _container
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ bis_push_range_function::operator()(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ if (_container.empty())
+ {
+ bis_push_range_function::evaluate(_container, itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.begin()
+ , _container.end()
+ );
+ }
+ else
+ {
+ typename C::iterator pos = _container.end();
+ --pos;
+ bis_push_range_function::evaluate(_container, itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ ++pos
+ , _container.end()
+ );
+ }
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ bis_push_range_function::evaluate(C& _container, Itr itr, Itr itr_end)
+ {
+ _container.insert(_container.end(), itr, itr_end);
+ }
+
+ struct uac_push_range_function
+ {
+ template <typename C>
+ push_range_function_proxy<uac_push_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::deque<typename C::iterator>
+ operator()(C& _container, InputRange const& r) const;
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ operator()(C& _container, Itr itr, Itr itr_end) const;
+
+ template <typename C, typename Itr>
+ static void evaluate(C& _container, Itr itr, Itr itr_end);
+ };
+
+ template <typename C>
+ inline push_range_function_proxy<uac_push_range_function,C>
+ uac_push_range_function::operator[](C& _container) const
+ {
+ return push_range_function_proxy<uac_push_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::deque<typename C::iterator>
+ uac_push_range_function::operator()(
+ C& _container
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ uac_push_range_function::operator()(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ ::std::deque<typename C::iterator> result;
+
+ for (
+ ::std::pair<typename C::iterator,bool> insert_result;
+ itr != itr_end;
+ ++itr
+ )
+ {
+ insert_result = _container.insert(*itr);
+
+ if (insert_result.second)
+ {
+ result.push_back(insert_result.first);
+ }
+ }
+
+ return result;
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ uac_push_range_function::evaluate(C& _container, Itr itr, Itr itr_end)
+ {
+ _container.insert(itr, itr_end);
+ }
+
+ struct mac_push_range_function
+ {
+ template <typename C>
+ push_range_function_proxy<mac_push_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::deque<typename C::iterator>
+ operator()(C& _container, InputRange const& r) const;
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ operator()(C& _container, Itr itr, Itr itr_end) const;
+
+ template <typename C, typename Itr>
+ static void evaluate(C& _container, Itr itr, Itr itr_end);
+ };
+
+ template <typename C>
+ inline push_range_function_proxy<mac_push_range_function,C>
+ mac_push_range_function::operator[](C& _container) const
+ {
+ return push_range_function_proxy<mac_push_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::deque<typename C::iterator>
+ mac_push_range_function::operator()(
+ C& _container
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ mac_push_range_function::operator()(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ ::std::deque<typename C::iterator> result;
+
+ for (; itr != itr_end; ++itr)
+ {
+ result.push_back(_container.insert(*itr));
+ }
+
+ return result;
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ mac_push_range_function::evaluate(C& _container, Itr itr, Itr itr_end)
+ {
+ _container.insert(itr, itr_end);
+ }
+
+ struct ptr_uac_push_range_function
+ {
+ template <typename C>
+ push_range_function_proxy<ptr_uac_push_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::deque<typename C::iterator>
+ operator()(C& _container, InputRange const& r) const;
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ operator()(C& _container, Itr itr, Itr itr_end) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(C& _container, Itr itr, Itr itr_end);
+ };
+
+ template <typename C>
+ inline push_range_function_proxy<ptr_uac_push_range_function,C>
+ ptr_uac_push_range_function::operator[](C& _container) const
+ {
+ return push_range_function_proxy<ptr_uac_push_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::deque<typename C::iterator>
+ ptr_uac_push_range_function::operator()(
+ C& _container
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ ptr_uac_push_range_function::operator()(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ ::std::deque<typename C::iterator> result;
+
+ for (
+ ::std::pair<typename C::iterator,bool> insert_result;
+ itr != itr_end;
+ ++itr
+ )
+ {
+ insert_result = _container.insert(new typename C::key_type(*itr));
+
+ if (insert_result.second)
+ {
+ result.push_back(insert_result.first);
+ }
+ }
+
+ return result;
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ ptr_uac_push_range_function::evaluate(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(itr, itr_end);
+ }
+
+ struct ptr_mac_push_range_function
+ {
+ template <typename C>
+ push_range_function_proxy<ptr_mac_push_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ ::std::deque<typename C::iterator>
+ operator()(C& _container, InputRange const& r) const;
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ operator()(C& _container, Itr itr, Itr itr_end) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(C& _container, Itr itr, Itr itr_end);
+ };
+
+ template <typename C>
+ inline push_range_function_proxy<ptr_mac_push_range_function,C>
+ ptr_mac_push_range_function::operator[](C& _container) const
+ {
+ return push_range_function_proxy<ptr_mac_push_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline ::std::deque<typename C::iterator>
+ ptr_mac_push_range_function::operator()(
+ C& _container
+ , InputRange const& r
+ ) const
+ {
+ return this->operator()(
+ _container
+ , ::boost::begin(r)
+ , ::boost::end(r)
+ );
+ }
+
+ template <typename C, typename Itr>
+ ::std::deque<typename C::iterator>
+ ptr_mac_push_range_function::operator()(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ ::std::deque<typename C::iterator> result;
+
+ for (; itr != itr_end; ++itr)
+ {
+ result.push_back(
+ _container.insert(new typename C::key_type(*itr))
+ );
+ }
+
+ return result;
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ ptr_mac_push_range_function::evaluate(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(itr, itr_end);
+ }
+
+ struct uns_ac_push_range_function
+ {
+ template <typename C>
+ push_range_function_proxy<uns_ac_push_range_function,C>
+ operator[](C& _container) const;
+
+ template <typename C, typename InputRange>
+ void operator()(C& _container, InputRange const& r) const;
+
+ template <typename C, typename Itr>
+ void operator()(C& _container, Itr itr, Itr itr_end) const;
+
+ template <typename C, typename Itr>
+ static void
+ evaluate(C& _container, Itr itr, Itr itr_end);
+ };
+
+ template <typename C>
+ inline push_range_function_proxy<uns_ac_push_range_function,C>
+ uns_ac_push_range_function::operator[](C& _container) const
+ {
+ return push_range_function_proxy<uns_ac_push_range_function,C>(
+ _container
+ );
+ }
+
+ template <typename C, typename InputRange>
+ inline void
+ uns_ac_push_range_function::operator()(
+ C& _container
+ , InputRange const& r
+ ) const
+ {
+ this->operator()(_container, ::boost::begin(r), ::boost::end(r));
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ uns_ac_push_range_function::operator()(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ ) const
+ {
+ uns_ac_push_range_function::evaluate(_container, itr, itr_end);
+ }
+
+ template <typename C, typename Itr>
+ inline void
+ uns_ac_push_range_function::evaluate(
+ C& _container
+ , Itr itr
+ , Itr itr_end
+ )
+ {
+ _container.insert(itr, itr_end);
+ }
+}} // namespace boost::detail
+
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/container_gen/has_stable_iters_selector.hpp>
+#include <boost/container_gen/is_associative_selector.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+#include <boost/container_gen/is_multiple_assoc_selector.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+#include <boost/container_gen/is_random_access_selector.hpp>
+
+//[reference__push_range_function_gen
+namespace boost {
+
+ template <typename Selector>
+ struct push_range_function_gen
+ //<-
+ : ::boost::mpl::eval_if<
+ is_associative_selector<Selector>
+ , ::boost::mpl::eval_if<
+ has_stable_iterators_selector<Selector>
+ , ::boost::mpl::eval_if<
+ is_ptr_selector<Selector>
+ , ::boost::mpl::if_<
+ is_unique_associative_selector<Selector>
+ , detail::ptr_uac_push_range_function
+ , detail::ptr_mac_push_range_function
+ >
+ , ::boost::mpl::if_<
+ is_multiple_associative_selector<Selector>
+ , detail::mac_push_range_function
+ , detail::uac_push_range_function
+ >
+ >
+ , ::boost::mpl::identity<detail::uns_ac_push_range_function>
+ >
+ , ::boost::mpl::if_<
+ is_random_access_selector<Selector>
+ , detail::ras_push_range_function
+ , detail::bis_push_range_function
+ >
+ >
+ //->
+ {
+//<-
+#if 0
+//->
+ typedef ... type;
+ //<-
+#endif
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, push_range_function_gen, (Selector))
+ //->
+ };
+} // namespace boost
+//]
+
+#include <boost/config.hpp>
+#include <boost/container_gen/selectors.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename AllocatorSelector>
+ struct push_range_function_gen<slist_selector<AllocatorSelector> >
+ {
+ typedef detail::fis_push_range_function type;
+ };
+} // namespace boost
+
+#elif !defined BOOST_NO_SLIST
+
+namespace boost {
+
+ template <>
+ struct push_range_function_gen<slist_selector_base>
+ {
+ typedef detail::fis_push_range_function type;
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION, BOOST_NO_SLIST
+
+#endif // BOOST_CONTAINER_GEN_PUSH_RANGE_FUNCTION_GEN_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/selector_keywords.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/selector_keywords.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,82 @@
+//=============================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_SELECTOR_KEYWORDS_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_SELECTOR_KEYWORDS_HPP_INCLUDED
+
+#include <boost/parameter/aux_/template_keyword.hpp>
+
+namespace boost {
+
+ struct constant_size_tag;
+ struct is_tr1_not_boost_tag;
+ struct is_boost_not_std_tag;
+ struct hasher_selector_tag;
+ struct compare_selector_tag;
+ struct allocator_selector_tag;
+ struct ptr_clone_allocator_tag;
+ struct ptr_allocator_tag;
+ struct sequence_selector_tag;
+
+ template <typename T>
+ struct constant_size_arg
+ : ::boost::parameter::template_keyword<constant_size_tag,T>
+ {
+ };
+
+ template <typename T>
+ struct is_tr1_not_boost_arg
+ : ::boost::parameter::template_keyword<is_tr1_not_boost_tag,T>
+ {
+ };
+
+ template <typename T>
+ struct is_boost_not_std_arg
+ : ::boost::parameter::template_keyword<is_boost_not_std_tag,T>
+ {
+ };
+
+ template <typename T>
+ struct hasher_selector_arg
+ : ::boost::parameter::template_keyword<hasher_selector_tag,T>
+ {
+ };
+
+ template <typename T>
+ struct compare_selector_arg
+ : ::boost::parameter::template_keyword<compare_selector_tag,T>
+ {
+ };
+
+ template <typename T>
+ struct allocator_selector_arg
+ : ::boost::parameter::template_keyword<allocator_selector_tag,T>
+ {
+ };
+
+ template <typename T>
+ struct ptr_clone_allocator_arg
+ : ::boost::parameter::template_keyword<ptr_clone_allocator_tag,T>
+ {
+ };
+
+ template <typename T>
+ struct ptr_allocator_arg
+ : ::boost::parameter::template_keyword<ptr_allocator_tag,T>
+ {
+ };
+
+ template <typename T>
+ struct sequence_selector_arg
+ : ::boost::parameter::template_keyword<sequence_selector_tag,T>
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_CONTAINER_GEN_SELECTOR_KEYWORDS_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/selectors.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/selectors.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,1267 @@
+//=============================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2010 Thomas Claveirole
+// Copyright 2011-2013 Cromwell D. Enage
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole,
+// Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_SELECTORS_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_SELECTORS_HPP_INCLUDED
+
+#include <functional>
+#include <memory>
+#include <utility>
+#include <boost/config.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/aux_/config/forwarding.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/tr1/functional.hpp>
+#include <boost/function.hpp>
+#include <boost/functional/hash.hpp>
+#include <boost/utility/equivalence_function.hpp>
+#include <boost/container_gen/selectors_fwd.hpp>
+#include <boost/detail/metafunction/is_container.hpp>
+#include <boost/detail/function/range_equal.hpp>
+#include <boost/detail/function/range_less.hpp>
+#include <boost/detail/function/range_greater.hpp>
+
+//[reference__template_argument_selectors
+namespace boost {
+
+ struct equal_to_selector
+ {
+ template <typename T>
+ struct apply
+ {
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ ::boost::detail::metafunction::is_container<T>
+ , ::boost::detail::range_equal
+ , ::std::equal_to<T>
+ >::type
+ //->
+ type;
+ };
+ };
+
+ struct less_than_selector
+ {
+ template <typename T>
+ struct apply
+ {
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ ::boost::detail::metafunction::is_container<T>
+ , ::boost::detail::range_less
+ , ::std::less<T>
+ >::type
+ //->
+ type;
+ };
+ };
+
+ struct greater_than_selector
+ {
+ template <typename T>
+ struct apply
+ {
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ ::boost::detail::metafunction::is_container<T>
+ , ::boost::detail::range_greater
+ , ::std::greater<T>
+ >::type
+ //->
+ type;
+ };
+ };
+
+ struct binary_predicate_selector
+ {
+ template <typename T>
+ struct apply
+ {
+ typedef ::boost::function2<bool,T const&,T const&> type;
+ };
+ };
+
+//<-
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ struct equivalence_selector_base
+ {
+ };
+#else
+//->
+ struct tr1_binary_predicate_selector
+ {
+ template <typename T>
+ struct apply
+ {
+ typedef ::std::tr1::function<bool(T const&,T const&)> type;
+ };
+ };
+//<-
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+
+ template <typename CompareSelector>
+ struct equivalence_selector
+//<-
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ : equivalence_selector_base
+#endif
+//->
+ {
+ template <typename T>
+ struct apply
+//<-
+#if !defined BOOST_MPL_CFG_NO_NESTED_FORWARDING
+//->
+ : ::boost::equivalence_function_gen<
+ typename ::boost::mpl::apply_wrap1<CompareSelector,T>::type
+ >
+//<-
+#endif
+//->
+ {
+//<-
+#if defined BOOST_MPL_CFG_NO_NESTED_FORWARDING
+ typedef typename ::boost::equivalence_function_gen<
+ typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , T
+ >::type
+ >::type
+ type;
+#endif
+//->
+ };
+ };
+
+ struct boost_hash_selector
+ {
+ template <typename T>
+ struct apply
+ {
+ typedef ::boost::hash<T> type;
+ };
+ };
+
+ struct tr1_hash_selector
+ {
+ template <typename T>
+ struct apply
+ {
+ typedef ::std::tr1::hash<T> type;
+ };
+ };
+
+ struct std_allocator_selector
+ {
+ template <typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<T2>
+ , ::std::allocator<T1>
+ , ::std::allocator< ::std::pair<T1 const,T2> >
+ >::type
+ type;
+ };
+ };
+
+ struct std_flat_allocator_selector
+ {
+ template <typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<T2>
+ , ::std::allocator<T1>
+ , ::std::allocator< ::std::pair<T1,T2> >
+ >::type
+ type;
+ };
+ };
+} // namespace boost
+//]
+
+#include <boost/mpl/bool.hpp>
+#include <boost/ptr_container/clone_allocator.hpp>
+
+//=============================================================================
+// Selectors for the VertexList and EdgeList template parameters of
+// adjacency_list, and the container_gen metafunction which is used
+// to map the selectors to the container type used to implement the
+// graph.
+//=============================================================================
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <vector>
+#include <deque>
+#include <list>
+
+#if !defined BOOST_NO_SLIST
+# if defined BOOST_SLIST_HEADER
+# include BOOST_SLIST_HEADER
+# else
+# include <slist>
+# endif
+#endif
+
+#if defined BOOST_HAS_HASH
+# if defined BOOST_HASH_SET_HEADER
+# include BOOST_HASH_SET_HEADER
+# else
+# include <hash_set>
+# endif
+# if defined BOOST_HASH_MAP_HEADER
+# include BOOST_HASH_MAP_HEADER
+# else
+# include <hash_map>
+# endif
+#endif
+
+#if !defined BOOST_MSVC
+#include <boost/array.hpp>
+#include <boost/tr1/array.hpp>
+#include <boost/ptr_container/ptr_array.hpp>
+#endif
+
+#include <set>
+#include <map>
+#include <boost/ptr_container/ptr_vector.hpp>
+#include <boost/ptr_container/ptr_deque.hpp>
+#include <boost/ptr_container/ptr_list.hpp>
+#include <boost/ptr_container/ptr_set.hpp>
+#include <boost/ptr_container/ptr_map.hpp>
+#include <boost/ptr_container/ptr_unordered_set.hpp>
+#include <boost/ptr_container/ptr_unordered_map.hpp>
+
+namespace boost {
+
+#if !defined BOOST_MSVC
+ struct array_selector_base
+ {
+ };
+
+ template <typename ConstantSize, typename IsTR1NotBoost>
+ struct array_selector : array_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef typename ::boost::mpl::if_<
+ IsTR1NotBoost
+ , ::std::tr1::array<T,ConstantSize::value>
+ , ::boost::array<T,ConstantSize::value>
+ >::type
+ type;
+ };
+ };
+#endif
+
+ struct vector_selector_base
+ {
+ };
+
+ template <typename AllocatorSelector, typename Ignored>
+ struct vector_selector : vector_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::std::vector<
+ T
+ , typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , T
+ >::type
+ >
+ type;
+ };
+ };
+
+ struct deque_selector_base
+ {
+ };
+
+ template <typename AllocatorSelector, typename Ignored>
+ struct deque_selector : deque_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::std::deque<
+ T
+ , typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , T
+ >::type
+ >
+ type;
+ };
+ };
+
+ struct list_selector_base
+ {
+ };
+
+ template <typename AllocatorSelector, typename Ignored>
+ struct list_selector : list_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::std::list<
+ T
+ , typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , T
+ >::type
+ >
+ type;
+ };
+ };
+
+#if !defined BOOST_NO_SLIST
+ struct slist_selector_base
+ {
+ };
+
+ template <typename AllocatorSelector>
+ struct slist_selector : slist_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::BOOST_STD_EXTENSION_NAMESPACE::slist<
+ T
+ , typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , T
+ >::type
+ >
+ type;
+ };
+ };
+#endif
+
+ struct set_selector_base
+ {
+ };
+
+ template <
+ typename CompareSelector
+ , typename AllocatorSelector
+ , typename Ignored
+ >
+ struct set_selector : set_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ AllocatorSelector
+ , Key
+ , Mapped
+ >::type
+ allocator_type;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::set<Key,comparator,allocator_type>
+ , ::std::map<Key,Mapped,comparator,allocator_type>
+ >::type
+ type;
+ };
+ };
+
+ struct map_selector_base
+ {
+ };
+
+ template <
+ typename CompareSelector
+ , typename AllocatorSelector
+ , typename Ignored
+ >
+ struct map_selector : map_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ AllocatorSelector
+ , Key
+ , Mapped
+ >::type
+ allocator_type;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::set<Key,comparator,allocator_type>
+ , ::std::map<Key,Mapped,comparator,allocator_type>
+ >::type
+ type;
+ };
+ };
+
+ struct multiset_selector_base
+ {
+ };
+
+ template <
+ typename CompareSelector
+ , typename AllocatorSelector
+ , typename Ignored
+ >
+ struct multiset_selector : multiset_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ AllocatorSelector
+ , Key
+ , Mapped
+ >::type
+ allocator_type;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::multiset<Key,comparator,allocator_type>
+ , ::std::multimap<Key,Mapped,comparator,allocator_type>
+ >::type
+ type;
+ };
+ };
+
+ struct multimap_selector_base
+ {
+ };
+
+ template <
+ typename CompareSelector
+ , typename AllocatorSelector
+ , typename Ignored
+ >
+ struct multimap_selector : multimap_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+ typedef typename ::boost::mpl::apply_wrap2<
+ AllocatorSelector
+ , Key
+ , Mapped
+ >::type
+ allocator_type;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::std::multiset<Key,comparator,allocator_type>
+ , ::std::multimap<Key,Mapped,comparator,allocator_type>
+ >::type
+ type;
+ };
+ };
+
+#if defined BOOST_HAS_HASH
+ struct hash_set_selector_base
+ {
+ };
+
+ template <
+ typename HashSelector
+ , typename CompareSelector
+ , typename AllocatorSelector
+ , typename Ignored
+ >
+ struct hash_set_selector : hash_set_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ HashSelector
+ , Key
+ >::type
+ hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+ typedef typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , Key
+ >::type
+ allocator_type;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::BOOST_STD_EXTENSION_NAMESPACE::hash_set<
+ Key
+ , hasher
+ , comparator
+ , allocator_type
+ >
+ , ::BOOST_STD_EXTENSION_NAMESPACE::hash_map<
+ Key
+ , Mapped
+ , hasher
+ , comparator
+ , allocator_type
+ >
+ >::type
+ type;
+ };
+ };
+
+ struct hash_map_selector_base
+ {
+ };
+
+ template <
+ typename HashSelector
+ , typename CompareSelector
+ , typename AllocatorSelector
+ , typename Ignored
+ >
+ struct hash_map_selector : hash_map_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ HashSelector
+ , Key
+ >::type
+ hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+ typedef typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , Key
+ >::type
+ allocator_type;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::BOOST_STD_EXTENSION_NAMESPACE::hash_set<
+ Key
+ , hasher
+ , comparator
+ , allocator_type
+ >
+ , ::BOOST_STD_EXTENSION_NAMESPACE::hash_map<
+ Key
+ , Mapped
+ , hasher
+ , comparator
+ , allocator_type
+ >
+ >::type
+ type;
+ };
+ };
+
+ struct hash_multiset_selector_base
+ {
+ };
+
+ template <
+ typename HashSelector
+ , typename CompareSelector
+ , typename AllocatorSelector
+ , typename Ignored
+ >
+ struct hash_multiset_selector : hash_multiset_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ HashSelector
+ , Key
+ >::type
+ hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+ typedef typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , Key
+ >::type
+ allocator_type;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<
+ Key
+ , hasher
+ , comparator
+ , allocator_type
+ >
+ , ::BOOST_STD_EXTENSION_NAMESPACE::hash_multimap<
+ Key
+ , Mapped
+ , hasher
+ , comparator
+ , allocator_type
+ >
+ >::type
+ type;
+ };
+ };
+
+ struct hash_multimap_selector_base
+ {
+ };
+
+ template <
+ typename HashSelector
+ , typename CompareSelector
+ , typename AllocatorSelector
+ , typename Ignored
+ >
+ struct hash_multimap_selector : hash_multimap_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ HashSelector
+ , Key
+ >::type
+ hasher;
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+ typedef typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , Key
+ >::type
+ allocator_type;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<
+ Key
+ , hasher
+ , comparator
+ , allocator_type
+ >
+ , ::BOOST_STD_EXTENSION_NAMESPACE::hash_multimap<
+ Key
+ , Mapped
+ , hasher
+ , comparator
+ , allocator_type
+ >
+ >::type
+ type;
+ };
+ };
+#endif // BOOST_HAS_HASH
+
+#if !defined BOOST_MSVC
+ struct ptr_array_selector_base
+ {
+ };
+
+ template <typename ConstantSize, typename CloneAllocator>
+ struct ptr_array_selector : ptr_array_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::boost::ptr_array<
+ T
+ , ConstantSize::value
+ , CloneAllocator
+ >
+ type;
+ };
+ };
+#endif
+
+ struct ptr_vector_selector_base
+ {
+ };
+
+ template <typename CloneAllocator, typename Allocator>
+ struct ptr_vector_selector : ptr_vector_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::boost::ptr_vector<T,CloneAllocator,Allocator> type;
+ };
+ };
+
+ struct ptr_deque_selector_base
+ {
+ };
+
+ template <typename CloneAllocator, typename Allocator>
+ struct ptr_deque_selector : ptr_deque_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::boost::ptr_deque<T,CloneAllocator,Allocator> type;
+ };
+ };
+
+ struct ptr_list_selector_base
+ {
+ };
+
+ template <typename CloneAllocator, typename Allocator>
+ struct ptr_list_selector : ptr_list_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::boost::ptr_list<T,CloneAllocator,Allocator> type;
+ };
+ };
+
+ struct ptr_set_selector_base
+ {
+ };
+
+ template <
+ typename CompareSelector
+ , typename CloneAllocator
+ , typename Allocator
+ >
+ struct ptr_set_selector : ptr_set_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_set<
+ Key
+ , comparator
+ , CloneAllocator
+ , Allocator
+ >
+ , ::boost::ptr_map<
+ Key
+ , Mapped
+ , comparator
+ , CloneAllocator
+ , Allocator
+ >
+ >::type
+ type;
+ };
+ };
+
+ struct ptr_map_selector_base
+ {
+ };
+
+ template <
+ typename CompareSelector
+ , typename CloneAllocator
+ , typename Allocator
+ >
+ struct ptr_map_selector : ptr_map_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_set<
+ Key
+ , comparator
+ , CloneAllocator
+ , Allocator
+ >
+ , ::boost::ptr_map<
+ Key
+ , Mapped
+ , comparator
+ , CloneAllocator
+ , Allocator
+ >
+ >::type
+ type;
+ };
+ };
+
+ struct ptr_multiset_selector_base
+ {
+ };
+
+ template <
+ typename CompareSelector
+ , typename CloneAllocator
+ , typename Allocator
+ >
+ struct ptr_multiset_selector : ptr_multiset_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_multiset<
+ Key
+ , comparator
+ , CloneAllocator
+ , Allocator
+ >
+ , ::boost::ptr_multimap<
+ Key
+ , Mapped
+ , comparator
+ , CloneAllocator
+ , Allocator
+ >
+ >::type
+ type;
+ };
+ };
+
+ struct ptr_multimap_selector_base
+ {
+ };
+
+ template <
+ typename CompareSelector
+ , typename CloneAllocator
+ , typename Allocator
+ >
+ struct ptr_multimap_selector : ptr_multimap_selector_base
+ {
+ template <typename Key, typename Mapped>
+ struct apply
+ {
+ private:
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , Key
+ >::type
+ comparator;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Mapped>
+ , ::boost::ptr_multiset<
+ Key
+ , comparator
+ , CloneAllocator
+ , Allocator
+ >
+ , ::boost::ptr_multimap<
+ Key
+ , Mapped
+ , comparator
+ , CloneAllocator
+ , Allocator
+ >
+ >::type
+ type;
+ };
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename T0, typename T1>
+ struct array_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct vector_selector
+ {
+ };
+
+ template <typename AllocatorSelector>
+ struct stable_vector_selector
+ {
+ };
+
+ template <typename ConstantCapacity>
+ struct static_vector_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct deque_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct list_selector
+ {
+ };
+
+ template <typename AllocatorSelector>
+ struct slist_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct set_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct map_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct multiset_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct multimap_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct hash_set_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct hash_map_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct hash_multiset_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct hash_multimap_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct flat_set_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct flat_map_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct flat_multiset_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct flat_multimap_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct ptr_array_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct ptr_vector_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct ptr_deque_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct ptr_list_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct ptr_set_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct ptr_map_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct ptr_multiset_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2>
+ struct ptr_multimap_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct ptr_hash_set_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct ptr_hash_map_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct ptr_hash_multiset_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct ptr_hash_multimap_selector
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//=============================================================================
+// Container adaptor / heap selectors, also usable by the container_gen
+// metafunction.
+//=============================================================================
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <stack>
+#include <queue>
+
+namespace boost {
+
+ struct stack_selector_base
+ {
+ };
+
+ template <typename SequenceSelector>
+ struct stack_selector : stack_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::std::stack<
+ T
+ , typename ::boost::mpl::apply_wrap2<
+ SequenceSelector
+ , T
+ , void
+ >::type
+ >
+ type;
+ };
+ };
+
+ struct queue_selector_base
+ {
+ };
+
+ template <typename SequenceSelector>
+ struct queue_selector : queue_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::std::queue<
+ T
+ , typename ::boost::mpl::apply_wrap2<
+ SequenceSelector
+ , T
+ , void
+ >::type
+ >
+ type;
+ };
+ };
+
+ struct std_heap_selector_base
+ {
+ };
+
+ template <typename CompareSelector, typename SequenceSelector>
+ struct std_heap_selector : std_heap_selector_base
+ {
+ template <typename T, typename Unused>
+ struct apply
+ {
+ typedef ::std::priority_queue<
+ T
+ , typename ::boost::mpl::apply_wrap2<
+ SequenceSelector
+ , T
+ , void
+ >::type
+ , typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , T
+ >::type
+ >
+ type;
+ };
+ };
+} // namespace boost
+
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+ template <typename SequenceSelector>
+ struct stack_selector
+ {
+ };
+
+ template <typename SequenceSelector>
+ struct queue_selector
+ {
+ };
+
+ template <typename T0, typename T1>
+ struct std_heap_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct priority_queue_selector
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ >
+ struct d_ary_heap_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3>
+ struct binomial_heap_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct fibonacci_heap_selector
+ {
+ };
+
+ template <typename T0, typename T1, typename T2, typename T3, typename T4>
+ struct pairing_heap_selector
+ {
+ };
+
+ template <
+ typename T0
+ , typename T1
+ , typename T2
+ , typename T3
+ , typename T4
+ , typename T5
+ , typename T6
+ >
+ struct skew_heap_selector
+ {
+ };
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_CONTAINER_GEN_SELECTORS_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/selectors_fwd.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/selectors_fwd.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,746 @@
+//=============================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2010 Thomas Claveirole
+// Copyright 2011-2013 Cromwell D. Enage
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole,
+// Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_SELECTORS_FWD_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_SELECTORS_FWD_HPP_INCLUDED
+
+#include <memory>
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/ptr_container/clone_allocator.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/parameter/aux_/void.hpp>
+#endif
+
+namespace boost {
+
+ struct equal_to_selector;
+ struct less_than_selector;
+ struct greater_than_selector;
+ struct binary_predicate_selector;
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ struct tr1_binary_predicate_selector;
+#endif
+
+ template <typename CompareSelector = less_than_selector>
+ struct equivalence_selector;
+
+ typedef equivalence_selector<> equivalenceS;
+
+ struct boost_hash_selector;
+ struct tr1_hash_selector;
+
+ struct std_allocator_selector;
+ struct std_flat_allocator_selector;
+} // namespace boost
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+namespace boost {
+
+#if !defined BOOST_MSVC
+ struct array_selector_base;
+ struct ptr_array_selector_base;
+#endif
+ struct vector_selector_base;
+ struct deque_selector_base;
+ struct list_selector_base;
+#if !defined BOOST_NO_SLIST
+ struct slist_selector_base;
+#endif
+ struct set_selector_base;
+ struct map_selector_base;
+ struct multiset_selector_base;
+ struct multimap_selector_base;
+#if defined BOOST_HAS_HASH
+ struct hash_set_selector_base;
+ struct hash_map_selector_base;
+ struct hash_multiset_selector_base;
+ struct hash_multimap_selector_base;
+#endif // BOOST_HAS_HASH
+ struct ptr_vector_selector_base;
+ struct ptr_deque_selector_base;
+ struct ptr_list_selector_base;
+ struct ptr_set_selector_base;
+ struct ptr_map_selector_base;
+ struct ptr_multiset_selector_base;
+ struct ptr_multimap_selector_base;
+ struct stack_selector_base;
+ struct queue_selector_base;
+ struct std_heap_selector_base;
+} // namespace boost
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//[reference__container_selector_templates
+namespace boost {
+
+//<-
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#if !defined BOOST_MSVC
+//->
+ template <
+ typename ConstantSize
+ , typename IsTR1NotBoost = ::boost::mpl::false_
+ >
+ struct array_selector;
+//<-
+#endif
+//->
+
+ template <
+ typename AllocatorSelector = std_allocator_selector
+ , typename IsBoostNotStd = ::boost::mpl::false_
+ >
+ struct vector_selector;
+
+ template <
+ typename AllocatorSelector = std_allocator_selector
+ , typename IsBoostNotStd = ::boost::mpl::false_
+ >
+ struct deque_selector;
+
+ template <
+ typename AllocatorSelector = std_allocator_selector
+ , typename IsBoostNotStd = ::boost::mpl::false_
+ >
+ struct list_selector;
+//<-
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#if !defined BOOST_MSVC
+ template <typename T0, typename T1 = ::boost::parameter::void_>
+ struct array_selector;
+#endif
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct vector_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct deque_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct list_selector;
+//->
+
+ template <typename AllocatorSelector = std_allocator_selector>
+ struct stable_vector_selector;
+
+ template <typename ConstantCapacity>
+ struct static_vector_selector;
+//<-
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ template <typename AllocatorSelector = std_allocator_selector>
+ struct slist_selector;
+//<-
+#endif
+//->
+
+//<-
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsBoostNotStd = ::boost::mpl::false_
+ >
+ struct set_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsBoostNotStd = ::boost::mpl::false_
+ >
+ struct map_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsBoostNotStd = ::boost::mpl::false_
+ >
+ struct multiset_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsBoostNotStd = ::boost::mpl::false_
+ >
+ struct multimap_selector;
+
+//<-
+#if 0 // for documentation purposes
+//->
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_flat_allocator_selector
+ >
+ struct flat_set_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_flat_allocator_selector
+ >
+ struct flat_map_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_flat_allocator_selector
+ >
+ struct flat_multiset_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_flat_allocator_selector
+ >
+ struct flat_multimap_selector;
+//<-
+#endif // for documentation purposes
+//->
+
+//<-
+#if defined BOOST_HAS_HASH
+//->
+ template <
+ typename HashSelector = boost_hash_selector
+ , typename CompareSelector = equal_to_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsTR1NotBoost = ::boost::mpl::false_
+ >
+ struct hash_set_selector;
+
+ template <
+ typename HashSelector = boost_hash_selector
+ , typename CompareSelector = equal_to_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsTR1NotBoost = ::boost::mpl::false_
+ >
+ struct hash_map_selector;
+
+ template <
+ typename HashSelector = boost_hash_selector
+ , typename CompareSelector = equal_to_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsTR1NotBoost = ::boost::mpl::false_
+ >
+ struct hash_multiset_selector;
+
+ template <
+ typename HashSelector = boost_hash_selector
+ , typename CompareSelector = equal_to_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsTR1NotBoost = ::boost::mpl::false_
+ >
+ struct hash_multimap_selector;
+//<-
+#endif // defined BOOST_HAS_HASH
+//->
+
+//<-
+#if !defined BOOST_MSVC
+//->
+ template <
+ typename ConstantSize
+ , typename CloneAllocator = ::boost::heap_clone_allocator
+ >
+ struct ptr_array_selector;
+//<-
+#endif
+//->
+
+ template <
+ typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_vector_selector;
+
+ template <
+ typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_deque_selector;
+
+ template <
+ typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_list_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_set_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_map_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_multiset_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_multimap_selector;
+
+//<-
+#if 0 // for documentation purposes
+//->
+ template <
+ typename HashSelector = boost_hash_selector
+ , typename CompareSelector = equal_to_selector
+ , typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_hash_set_selector;
+
+ template <
+ typename HashSelector = boost_hash_selector
+ , typename CompareSelector = equal_to_selector
+ , typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_hash_map_selector;
+
+ template <
+ typename HashSelector = boost_hash_selector
+ , typename CompareSelector = equal_to_selector
+ , typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_hash_multiset_selector;
+
+ template <
+ typename HashSelector = boost_hash_selector
+ , typename CompareSelector = equal_to_selector
+ , typename CloneAllocator = ::boost::heap_clone_allocator
+ , typename Allocator = ::std::allocator<void*>
+ >
+ struct ptr_hash_multimap_selector;
+//<-
+#endif // for documentation purposes
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ >
+ struct set_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ >
+ struct map_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ >
+ struct multiset_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ >
+ struct multimap_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct flat_set_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct flat_map_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct flat_multiset_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct flat_multimap_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ >
+ struct hash_set_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ >
+ struct hash_map_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ >
+ struct hash_multiset_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ >
+ struct hash_multimap_selector;
+
+#if !defined BOOST_MSVC
+ template <typename T0, typename T1 = ::boost::parameter::void_>
+ struct ptr_array_selector;
+#endif
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct ptr_vector_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct ptr_deque_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct ptr_list_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ >
+ struct ptr_set_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ >
+ struct ptr_map_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ >
+ struct ptr_multiset_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ >
+ struct ptr_multimap_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ >
+ struct ptr_hash_set_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ >
+ struct ptr_hash_map_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ >
+ struct ptr_hash_multiset_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ >
+ struct ptr_hash_multimap_selector;
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+
+ template <typename SequenceSelector = deque_selector<> >
+ struct stack_selector;
+
+ template <typename SequenceSelector = deque_selector<> >
+ struct queue_selector;
+
+//<-
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ template <
+ typename CompareSelector = less_than_selector
+ , typename SequenceSelector = deque_selector<>
+ >
+ struct std_heap_selector;
+
+//<-
+#if 0 // for documentation purposes
+//->
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsStable = ::boost::heap::stable<false>
+ , typename StabilityCounterType = ::boost::heap::stability_counter_type<
+ ::boost::uintmax_t
+ >
+ >
+ struct priority_queue_selector;
+
+ template <
+ typename Arity
+ , typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsStable = ::boost::heap::stable<false>
+ , typename StabilityCounterType = ::boost::heap::stability_counter_type<
+ ::boost::uintmax_t
+ >
+ , typename IsMutable = ::boost::heap::mutable_<false>
+ >
+ struct d_ary_heap_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsStable = ::boost::heap::stable<false>
+ , typename StabilityCounterType = ::boost::heap::stability_counter_type<
+ ::boost::uintmax_t
+ >
+ >
+ struct binomial_heap_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsStable = ::boost::heap::stable<false>
+ , typename StabilityCounterType = ::boost::heap::stability_counter_type<
+ ::boost::uintmax_t
+ >
+ , typename ConstantTimeSize = ::boost::heap::constant_time_size<true>
+ >
+ struct fibonacci_heap_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsStable = ::boost::heap::stable<false>
+ , typename StabilityCounterType = ::boost::heap::stability_counter_type<
+ ::boost::uintmax_t
+ >
+ , typename ConstantTimeSize = ::boost::heap::constant_time_size<true>
+ >
+ struct pairing_heap_selector;
+
+ template <
+ typename CompareSelector = less_than_selector
+ , typename AllocatorSelector = std_allocator_selector
+ , typename IsStable = ::boost::heap::stable<false>
+ , typename StoresParentPointer = ::boost::heap::store_parent_pointer<
+ false
+ >
+ , typename StabilityCounterType = ::boost::heap::stability_counter_type<
+ ::boost::uintmax_t
+ >
+ , typename ConstantTimeSize = ::boost::heap::constant_time_size<true>
+ , typename IsMutable = ::boost::heap::mutable_<false>
+ >
+ struct skew_heap_selector;
+//<-
+#endif // for documentation purposes
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ >
+ struct std_heap_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ >
+ struct priority_queue_selector;
+
+ template <
+ typename T0
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ , typename T4 = ::boost::parameter::void_
+ , typename T5 = ::boost::parameter::void_
+ >
+ struct d_ary_heap_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ >
+ struct binomial_heap_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ , typename T4 = ::boost::parameter::void_
+ >
+ struct fibonacci_heap_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ , typename T4 = ::boost::parameter::void_
+ >
+ struct pairing_heap_selector;
+
+ template <
+ typename T0 = ::boost::parameter::void_
+ , typename T1 = ::boost::parameter::void_
+ , typename T2 = ::boost::parameter::void_
+ , typename T3 = ::boost::parameter::void_
+ , typename T4 = ::boost::parameter::void_
+ , typename T5 = ::boost::parameter::void_
+ , typename T6 = ::boost::parameter::void_
+ >
+ struct skew_heap_selector;
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+} // namespace boost
+//]
+
+//[reference__container_selector_typedefs
+namespace boost {
+
+ typedef vector_selector<> vecS;
+ typedef deque_selector<> dequeS;
+ typedef list_selector<> listS;
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ typedef slist_selector<> slistS;
+//<-
+#endif
+//->
+ typedef set_selector<> setS;
+ typedef map_selector<> mapS;
+ typedef multiset_selector<> multisetS;
+ typedef multimap_selector<> multimapS;
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ typedef hash_set_selector<> hash_setS;
+ typedef hash_map_selector<> hash_mapS;
+ typedef hash_multiset_selector<> hash_multisetS;
+ typedef hash_multimap_selector<> hash_multimapS;
+//<-
+#endif
+//->
+ typedef ptr_vector_selector<> ptr_vecS;
+ typedef ptr_deque_selector<> ptr_dequeS;
+ typedef ptr_list_selector<> ptr_listS;
+ typedef ptr_set_selector<> ptr_setS;
+ typedef ptr_map_selector<> ptr_mapS;
+ typedef ptr_multiset_selector<> ptr_multisetS;
+ typedef ptr_multimap_selector<> ptr_multimapS;
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ typedef ptr_hash_set_selector<> ptr_hash_setS;
+ typedef ptr_hash_map_selector<> ptr_hash_mapS;
+ typedef ptr_hash_multiset_selector<> ptr_hash_multisetS;
+ typedef ptr_hash_multimap_selector<> ptr_hash_multimapS;
+ typedef stable_vector_selector<> stable_vecS;
+ typedef flat_set_selector<> flat_setS;
+ typedef flat_map_selector<> flat_mapS;
+ typedef flat_multiset_selector<> flat_multisetS;
+ typedef flat_multimap_selector<> flat_multimapS;
+//<-
+#endif
+//->
+ typedef stack_selector<> stackS;
+ typedef queue_selector<> queueS;
+ typedef std_heap_selector<> std_heapS;
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ typedef priority_queue_selector<> priority_queueS;
+ typedef binomial_heap_selector<> binomial_heapS;
+ typedef fibonacci_heap_selector<> fibonacci_heapS;
+ typedef pairing_heap_selector<> pairing_heapS;
+ typedef skew_heap_selector<> skew_heapS;
+//<-
+#endif
+//->
+} // namespace boost
+//]
+
+#endif // BOOST_CONTAINER_GEN_SELECTORS_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/container_gen/splice_function_gen.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/splice_function_gen.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,1151 @@
+//=======================================================================
+// Copyright (C) 2013 Cromwell D. Enage
+//
+// Distributed under 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_CONTAINER_GEN_SPLICE_FUNCTION_GEN_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_SPLICE_FUNCTION_GEN_HPP_INCLUDED
+
+#include <deque>
+#include <utility>
+#include <boost/config.hpp>
+#include <algorithm>
+#include <boost/mpl/bool.hpp>
+#include <boost/range.hpp>
+#include <boost/assert.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+namespace boost { namespace detail {
+
+ template <typename C>
+ inline typename C::iterator
+ random_access_splice(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ )
+ {
+ if (pos == itr)
+ {
+ BOOST_ASSERT(&_container == &c);
+ return pos;
+ }
+ else
+ {
+ typename C::size_type insert_index = (
+ ::std::distance(_container.begin(), pos)
+ );
+
+ if ((&_container == &c) && (itr < pos))
+ {
+ --insert_index;
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename C::value_type datum(*itr);
+
+ c.erase(itr);
+ return _container.insert(_container.begin() + insert_index, datum);
+#else
+ typename C::value_type datum(::boost::move(*itr));
+
+ c.erase(itr);
+ return _container.insert(
+ _container.begin() + insert_index
+ , ::boost::move(datum)
+ );
+#endif
+ }
+ }
+
+ template <typename C>
+ inline typename C::iterator
+ stable_splice(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ )
+ {
+ if (pos == itr)
+ {
+ BOOST_ASSERT(&_container == &c);
+ return pos;
+ }
+ else
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename C::value_type datum(*itr);
+
+ c.erase(itr);
+ return _container.insert(pos, datum);
+#else
+ typename C::value_type datum(::boost::move(*itr));
+
+ c.erase(itr);
+ return _container.insert(pos, ::boost::move(datum));
+#endif
+ }
+ }
+
+ template <typename C>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ stable_splice(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ )
+ {
+ if (_container.empty())
+ {
+ BOOST_ASSERT(pos == _container.end());
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ _container.insert(
+ _container.begin()
+ , itr
+ , itr_end
+ );
+#else
+ _container.insert(
+ _container.begin()
+ , ::boost::move_iterator<typename C::iterator>(itr)
+ , ::boost::move_iterator<typename C::iterator>(itr_end)
+ );
+#endif
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.begin()
+ , _container.end()
+ );
+ }
+ else if ((pos == itr) || (pos == itr_end))
+ {
+ BOOST_ASSERT(&_container == &c);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ itr
+ , itr_end
+ );
+ }
+ else
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ C splice_buf(itr, itr_end);
+
+ c.erase(itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.insert(
+ pos
+ , splice_buf.begin()
+ , splice_buf.end()
+ )
+ , pos
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typedef ::boost::move_iterator<typename C::iterator> MoveItr;
+
+ MoveItr _itr(itr);
+ MoveItr _itr_end(itr_end);
+ C splice_buf(_itr, _itr_end);
+
+ c.erase(itr, itr_end);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.insert(
+ pos
+ , MoveItr(splice_buf.begin())
+ , MoveItr(splice_buf.end())
+ )
+ , pos
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+ }
+
+ template <typename C>
+ inline void
+ stable_splice_void_return(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ )
+ {
+ if (_container.empty())
+ {
+ BOOST_ASSERT(pos == _container.end());
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ _container.insert(
+ _container.begin()
+ , itr
+ , itr_end
+ );
+#else
+ _container.insert(
+ _container.begin()
+ , ::boost::move_iterator<typename C::iterator>(itr)
+ , ::boost::move_iterator<typename C::iterator>(itr_end)
+ );
+#endif
+ }
+ else if ((pos == itr) || (pos == itr_end))
+ {
+ BOOST_ASSERT(&_container == &c);
+ }
+ else
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ C splice_buf(itr, itr_end);
+
+ c.erase(itr, itr_end);
+ _container.insert(
+ pos
+ , splice_buf.begin()
+ , splice_buf.end()
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typedef ::boost::move_iterator<typename C::iterator> MoveItr;
+
+ MoveItr _itr(itr);
+ MoveItr _itr_end(itr_end);
+ C splice_buf(_itr, _itr_end);
+
+ c.erase(itr, itr_end);
+ _container.insert(
+ pos
+ , MoveItr(splice_buf.begin())
+ , MoveItr(splice_buf.end())
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+ }
+
+ template <typename F, typename C>
+ class splice_function_proxy
+ {
+ C& _container;
+
+ public:
+ explicit splice_function_proxy(C& c);
+
+ splice_function_proxy&
+ operator()(
+ typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ );
+
+ splice_function_proxy&
+ operator()(
+ typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ );
+ };
+
+ template <typename F, typename C>
+ splice_function_proxy<F,C>::splice_function_proxy(C& c)
+ : _container(c)
+ {
+ }
+
+ template <typename F, typename C>
+ inline splice_function_proxy<F,C>&
+ splice_function_proxy<F,C>::operator()(
+ typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ )
+ {
+ F::evaluate(this->_container, pos, c, itr);
+ return *this;
+ }
+
+ template <typename F, typename C>
+ inline splice_function_proxy<F,C>&
+ splice_function_proxy<F,C>::operator()(
+ typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ )
+ {
+ F::evaluate(this->_container, pos, c, itr, itr_end);
+ return *this;
+ }
+
+ struct fis_splice_function
+ {
+ template <typename C>
+ splice_function_proxy<fis_splice_function,C>
+ operator[](C& _container) const;
+
+ template <typename C>
+ typename C::iterator
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ ) const;
+
+ template <typename C>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ ) const;
+
+ template <typename C>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ );
+
+ template <typename C>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ );
+ };
+
+ template <typename C>
+ inline splice_function_proxy<fis_splice_function,C>
+ fis_splice_function::operator[](C& _container) const
+ {
+ return splice_function_proxy<fis_splice_function,C>(_container);
+ }
+
+ template <typename C>
+ inline typename C::iterator
+ fis_splice_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ ) const
+ {
+ typename C::iterator result_begin = _container.previous(pos);
+ fis_splice_function::evaluate(
+ _container
+ , pos
+ , c
+ , itr
+ );
+ return ++result_begin;
+ }
+
+ template <typename C>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ fis_splice_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ ) const
+ {
+ typename C::iterator result_begin = _container.previous(pos);
+ fis_splice_function::evaluate(
+ _container
+ , pos
+ , c
+ , itr
+ , itr_end
+ );
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ ++result_begin
+ , pos
+ );
+ }
+
+ template <typename C>
+ inline void
+ fis_splice_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ )
+ {
+ stable_splice(_container, pos, c, itr);
+ }
+
+ template <typename C>
+ inline void
+ fis_splice_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ )
+ {
+ stable_splice_void_return(_container, pos, c, itr, itr_end);
+ }
+
+ struct ras_splice_function
+ {
+ template <typename C>
+ splice_function_proxy<ras_splice_function,C>
+ operator[](C& _container) const;
+
+ template <typename C>
+ typename C::iterator
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ ) const;
+
+ template <typename C>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ ) const;
+
+ template <typename C>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ );
+
+ template <typename C>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ );
+ };
+
+ template <typename C>
+ inline splice_function_proxy<ras_splice_function,C>
+ ras_splice_function::operator[](C& _container) const
+ {
+ return splice_function_proxy<ras_splice_function,C>(_container);
+ }
+
+ template <typename C>
+ inline typename C::iterator
+ ras_splice_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ ) const
+ {
+ return random_access_splice(_container, pos, c, itr);
+ }
+
+ template <typename C>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ ras_splice_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ ) const
+ {
+ if (_container.empty())
+ {
+ BOOST_ASSERT(pos == _container.end());
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ _container.insert(
+ _container.begin()
+ , itr
+ , itr_end
+ );
+#else
+ _container.insert(
+ _container.begin()
+ , ::boost::move_iterator<typename C::iterator>(itr)
+ , ::boost::move_iterator<typename C::iterator>(itr_end)
+ );
+#endif
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.begin()
+ , _container.end()
+ );
+ }
+ else if ((pos == itr) || (pos == itr_end))
+ {
+ BOOST_ASSERT(&_container == &c);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ itr
+ , itr_end
+ );
+ }
+ else
+ {
+ typename C::size_type insert_index = (
+ ::std::distance(_container.begin(), pos)
+ );
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ C splice_buf(itr, itr_end);
+ typename C::size_type const range_size = splice_buf.size();
+
+ if ((&_container == &c) && (itr < pos))
+ {
+ BOOST_ASSERT_MSG(
+ !(pos < itr_end)
+ , "Insertion point lies inside subrange to splice."
+ );
+ insert_index -= range_size;
+ }
+
+ c.erase(itr, itr_end);
+
+ typename C::iterator result_itr = _container.insert(
+ _container.begin() + insert_index
+ , splice_buf.begin()
+ , splice_buf.end()
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typedef ::boost::move_iterator<typename C::iterator> MoveItr;
+
+ MoveItr _itr(itr);
+ MoveItr _itr_end(itr_end);
+ C splice_buf(_itr, _itr_end);
+ typename C::size_type const range_size = splice_buf.size();
+
+ if ((&_container == &c) && (itr < pos))
+ {
+ BOOST_ASSERT_MSG(
+ !(pos < itr_end)
+ , "Insertion point lies inside subrange to splice."
+ );
+ insert_index -= range_size;
+ }
+
+ c.erase(itr, itr_end);
+
+ typename C::iterator result_itr = _container.insert(
+ _container.begin() + insert_index
+ , MoveItr(splice_buf.begin())
+ , MoveItr(splice_buf.end())
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ result_itr
+ , result_itr + range_size
+ );
+ }
+ }
+
+ template <typename C>
+ inline void
+ ras_splice_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ )
+ {
+ random_access_splice(_container, pos, c, itr);
+ }
+
+ template <typename C>
+ inline void
+ ras_splice_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ )
+ {
+ if (_container.empty())
+ {
+ BOOST_ASSERT(pos == _container.end());
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ _container.insert(
+ _container.begin()
+ , itr
+ , itr_end
+ );
+#else
+ _container.insert(
+ _container.begin()
+ , ::boost::move_iterator<typename C::iterator>(itr)
+ , ::boost::move_iterator<typename C::iterator>(itr_end)
+ );
+#endif
+ }
+ else if ((pos == itr) || (pos == itr_end))
+ {
+ BOOST_ASSERT(&_container == &c);
+ }
+ else
+ {
+ typename C::size_type insert_index = (
+ ::std::distance(_container.begin(), pos)
+ );
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ C splice_buf(itr, itr_end);
+
+ if ((&_container == &c) && (itr < pos))
+ {
+ BOOST_ASSERT_MSG(
+ !(pos < itr_end)
+ , "Insertion point lies inside subrange to splice."
+ );
+ insert_index -= splice_buf.size();
+ }
+
+ c.erase(itr, itr_end);
+ _container.insert(
+ _container.begin() + insert_index
+ , splice_buf.begin()
+ , splice_buf.end()
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typedef ::boost::move_iterator<typename C::iterator> MoveItr;
+
+ MoveItr _itr(itr);
+ MoveItr _itr_end(itr_end);
+ C splice_buf(_itr, _itr_end);
+
+ if ((&_container == &c) && (itr < pos))
+ {
+ BOOST_ASSERT_MSG(
+ !(pos < itr_end)
+ , "Insertion point lies inside subrange to splice."
+ );
+ insert_index -= splice_buf.size();
+ }
+
+ c.erase(itr, itr_end);
+ _container.insert(
+ _container.begin() + insert_index
+ , MoveItr(splice_buf.begin())
+ , MoveItr(splice_buf.end())
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+ }
+
+ struct ptr_ras_splice_function
+ {
+ template <typename C>
+ splice_function_proxy<ptr_ras_splice_function,C>
+ operator[](C& _container) const;
+
+ template <typename C>
+ typename C::iterator
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ ) const;
+
+ template <typename C>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ ) const;
+
+ template <typename C>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ );
+
+ template <typename C>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ );
+ };
+
+ template <typename C>
+ inline splice_function_proxy<ptr_ras_splice_function,C>
+ ptr_ras_splice_function::operator[](C& _container) const
+ {
+ return splice_function_proxy<ptr_ras_splice_function,C>(_container);
+ }
+
+ template <typename C>
+ inline typename C::iterator
+ ptr_ras_splice_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ ) const
+ {
+ if (pos != itr)
+ {
+ typename C::size_type insert_index = (
+ ::std::distance(_container.begin(), pos)
+ );
+ C splice_buf;
+
+ if ((&_container == &c) && (itr < pos))
+ {
+ --insert_index;
+ }
+
+ splice_buf.transfer(splice_buf.begin(), itr, c);
+ pos = _container.begin() + insert_index;
+ _container.transfer(pos, splice_buf);
+ }
+
+ return pos;
+ }
+
+ template <typename C>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ ptr_ras_splice_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ ) const
+ {
+ typename C::size_type const r_size = ::std::distance(itr, itr_end);
+
+ if ((pos == itr) || (pos == itr_end))
+ {
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ pos
+ , pos + r_size
+ );
+ }
+ else
+ {
+ typename C::size_type insert_index = (
+ ::std::distance(_container.begin(), pos)
+ );
+ C splice_buf;
+
+ if ((&_container == &c) && (itr < pos))
+ {
+ BOOST_ASSERT_MSG(
+ !(pos < itr_end)
+ , "Insertion point lies inside subrange to splice."
+ );
+ insert_index -= r_size;
+ }
+
+ splice_buf.transfer(splice_buf.begin(), itr, itr_end, c);
+ _container.transfer(_container.begin() + insert_index, splice_buf);
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.begin() + insert_index
+ , _container.begin() + insert_index + r_size
+ );
+ }
+ }
+
+ template <typename C>
+ inline void
+ ptr_ras_splice_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ )
+ {
+ if (pos != itr)
+ {
+ typename C::size_type insert_index = (
+ ::std::distance(_container.begin(), pos)
+ );
+ C splice_buf;
+
+ if ((&_container == &c) && (itr < pos))
+ {
+ --insert_index;
+ }
+
+ splice_buf.transfer(splice_buf.begin(), itr, c);
+ _container.transfer(_container.begin() + insert_index, splice_buf);
+ }
+ }
+
+ template <typename C>
+ inline void
+ ptr_ras_splice_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ )
+ {
+ if ((pos != itr) && (pos != itr_end))
+ {
+ typename C::size_type insert_index = (
+ ::std::distance(_container.begin(), pos)
+ );
+ C splice_buf;
+
+ if ((&_container == &c) && (itr < pos))
+ {
+ BOOST_ASSERT_MSG(
+ !(pos < itr_end)
+ , "Insertion point lies inside subrange to splice."
+ );
+ insert_index -= ::std::distance(itr, itr_end);
+ }
+
+ splice_buf.transfer(splice_buf.begin(), itr, itr_end, c);
+ _container.transfer(_container.begin() + insert_index, splice_buf);
+ }
+ }
+
+ struct bis_splice_function
+ {
+ template <typename C>
+ splice_function_proxy<bis_splice_function,C>
+ operator[](C& _container) const;
+
+ template <typename C>
+ typename C::iterator
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ ) const;
+
+ template <typename C>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ ) const;
+
+ template <typename C>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ );
+
+ template <typename C>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ );
+ };
+
+ template <typename C>
+ inline splice_function_proxy<bis_splice_function,C>
+ bis_splice_function::operator[](C& _container) const
+ {
+ return splice_function_proxy<bis_splice_function,C>(_container);
+ }
+
+ template <typename C>
+ inline typename C::iterator
+ bis_splice_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ ) const
+ {
+ return stable_splice(_container, pos, c, itr);
+ }
+
+ template <typename C>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ bis_splice_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ ) const
+ {
+ return stable_splice(_container, pos, c, itr, itr_end);
+ }
+
+ template <typename C>
+ inline void
+ bis_splice_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ )
+ {
+ stable_splice(_container, pos, c, itr);
+ }
+
+ template <typename C>
+ inline void
+ bis_splice_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ )
+ {
+ stable_splice_void_return(_container, pos, c, itr, itr_end);
+ }
+
+ struct ptr_bis_splice_function
+ {
+ template <typename C>
+ splice_function_proxy<ptr_bis_splice_function,C>
+ operator[](C& _container) const;
+
+ template <typename C>
+ typename C::iterator
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ ) const;
+
+ template <typename C>
+ ::std::pair<typename C::iterator,typename C::iterator>
+ operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ ) const;
+
+ template <typename C>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ );
+
+ template <typename C>
+ static void
+ evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ );
+ };
+
+ template <typename C>
+ inline splice_function_proxy<ptr_bis_splice_function,C>
+ ptr_bis_splice_function::operator[](C& _container) const
+ {
+ return splice_function_proxy<ptr_bis_splice_function,C>(_container);
+ }
+
+ template <typename C>
+ inline typename C::iterator
+ ptr_bis_splice_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ ) const
+ {
+ if (_container.empty())
+ {
+ BOOST_ASSERT(pos == _container.end());
+ ptr_bis_splice_function::evaluate(
+ _container
+ , pos
+ , c
+ , itr
+ );
+ return _container.begin();
+ }
+ else
+ {
+ typename C::iterator start = pos;
+ --start;
+ ptr_bis_splice_function::evaluate(
+ _container
+ , pos
+ , c
+ , itr
+ );
+ return ++start;
+ }
+ }
+
+ template <typename C>
+ inline ::std::pair<typename C::iterator,typename C::iterator>
+ ptr_bis_splice_function::operator()(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ ) const
+ {
+ if (_container.empty())
+ {
+ BOOST_ASSERT(pos == _container.end());
+ ptr_bis_splice_function::evaluate(
+ _container
+ , pos
+ , c
+ , itr
+ , itr_end
+ );
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ _container.begin()
+ , _container.end()
+ );
+ }
+ else
+ {
+ typename C::iterator start = pos;
+ --start;
+ ptr_bis_splice_function::evaluate(
+ _container
+ , pos
+ , c
+ , itr
+ , itr_end
+ );
+ return ::std::pair<typename C::iterator,typename C::iterator>(
+ ++start
+ , pos
+ );
+ }
+ }
+
+ template <typename C>
+ inline void
+ ptr_bis_splice_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ )
+ {
+ C splice_buf;
+
+ splice_buf.transfer(splice_buf.begin(), itr, c);
+ _container.transfer(pos, splice_buf);
+ }
+
+ template <typename C>
+ inline void
+ ptr_bis_splice_function::evaluate(
+ C& _container
+ , typename C::iterator pos
+ , C& c
+ , typename C::iterator itr
+ , typename C::iterator itr_end
+ )
+ {
+ C splice_buf;
+
+ splice_buf.transfer(splice_buf.begin(), itr, itr_end, c);
+ _container.transfer(pos, splice_buf);
+ }
+}} // namespace boost::detail
+
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+#include <boost/container_gen/is_random_access_selector.hpp>
+#include <boost/container_gen/is_reversible_selector.hpp>
+
+//[reference__splice_function_gen
+namespace boost {
+
+ template <typename Selector>
+ struct splice_function_gen
+ //<-
+ : ::boost::mpl::eval_if<
+ is_ptr_selector<Selector>
+ , ::boost::mpl::if_<
+ is_random_access_selector<Selector>
+ , detail::ptr_ras_splice_function
+ , detail::ptr_bis_splice_function
+ >
+ , ::boost::mpl::eval_if<
+ is_random_access_selector<Selector>
+ , ::boost::mpl::identity<detail::ras_splice_function>
+ , ::boost::mpl::if_<
+ is_reversible_selector<Selector>
+ , detail::bis_splice_function
+ , detail::fis_splice_function
+ >
+ >
+ >
+ //->
+ {
+//<-
+#if 0
+//->
+ typedef ... type;
+ //<-
+#endif
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, splice_function_gen, (Selector))
+ //->
+ };
+
+} // namespace boost
+//]
+
+#endif // BOOST_CONTAINER_GEN_SPLICE_FUNCTION_GEN_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_allocator_type.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_allocator_type.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,23 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_ALLOCATOR_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_ALLOCATOR_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_allocator_type metafunction will determine whether or not
+ // the specified type has a nested 'allocator_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(allocator_type)
+
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(propagate_on_container_copy_assignment)
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(propagate_on_container_move_assignment)
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(propagate_on_container_swap)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_ALLOCATOR_TYPE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_apply_template.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_apply_template.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_APPLY_TEMPLATE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_APPLY_TEMPLATE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_apply_template metafunction will determine whether or not
+ // the specified type has a nested 'apply' template definition.
+ BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(has_apply_template, apply, false)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_APPLY_TEMPLATE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_argument_type.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_argument_type.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_ARGUMENT_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_ARGUMENT_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_argument_type metafunction will determine whether or not
+ // the specified type has a nested 'argument_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(argument_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_ARGUMENT_TYPE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_auto_type.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_auto_type.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_AUTO_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_AUTO_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_auto_type metafunction will determine whether or not the
+ // specified type has a nested 'auto_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(auto_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_AUTO_TYPE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_const_iterator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_const_iterator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_CONST_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_CONST_ITERATOR_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_const_iterator metafunction will determine whether or not the
+ // specified type has a nested 'const_iterator' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(const_iterator)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_CONST_ITERATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_const_pointer.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_const_pointer.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_CONST_POINTER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_CONST_POINTER_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_const_pointer metafunction will determine whether or not the
+ // specified type has a nested 'const_pointer' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(const_pointer)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_CONST_POINTER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_const_reference.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_const_reference.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_CONST_REFERENCE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_CONST_REFERENCE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_const_reference metafunction will determine whether or not the
+ // specified type has a nested 'const_reference' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(const_reference)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_CONST_REFERENCE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_const_reverse_iterator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_const_reverse_iterator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,20 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_CONST_REVERSE_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_CONST_REVERSE_ITERATOR_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_const_reverse_iterator metafunction will determine whether
+ // or not the specified type has a nested 'const_reverse_iterator'
+ // type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(const_reverse_iterator)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_CONST_REVERSE_ITERATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_container_typedefs.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_container_typedefs.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,63 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_CONTAINER_TYPEDEFS_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_CONTAINER_TYPEDEFS_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/detail/metafunction/has_value_type.hpp>
+#include <boost/detail/metafunction/has_difference_type.hpp>
+#include <boost/detail/metafunction/has_size_type.hpp>
+#include <boost/detail/metafunction/has_iterator.hpp>
+#include <boost/detail/metafunction/has_const_iterator.hpp>
+//#include <boost/detail/metafunction/has_pointer.hpp>
+//#include <boost/detail/metafunction/has_const_pointer.hpp>
+#include <boost/detail/metafunction/has_reference.hpp>
+#include <boost/detail/metafunction/has_const_reference.hpp>
+#include <boost/detail/metafunction/has_input_const_iterator.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct has_container_typedefs
+ : ::boost::mpl::if_<
+ ::boost::mpl::and_<
+ ::boost::mpl::and_<
+// ::boost::mpl::and_<
+ typename has_value_type<T>::type
+// , ::boost::mpl::and_<
+// typename has_pointer<T>::type
+// , typename has_const_pointer<T>::type
+// >
+// >
+ , ::boost::mpl::and_<
+ typename has_iterator<T>::type
+ , typename has_const_iterator<T>::type
+ >
+ >
+ , ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_size_type<T>::type
+ , typename has_difference_type<T>::type
+ >
+ , ::boost::mpl::and_<
+ typename has_reference<T>::type
+ , typename has_const_reference<T>::type
+ >
+ >
+ >
+ , has_input_const_iterator<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,has_container_typedefs,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_CONTAINER_TYPEDEFS_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_difference_type.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_difference_type.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_DIFFERENCE_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_DIFFERENCE_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_difference_type metafunction will determine whether or not the
+ // specified type has a nested 'difference_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(difference_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_DIFFERENCE_TYPE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_first_argument_type.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_first_argument_type.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_FIRST_ARGUMENT_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_FIRST_ARGUMENT_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_first_argument_type metafunction will determine whether or not
+ // the specified type has a nested 'first_argument_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(first_argument_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_FIRST_ARGUMENT_TYPE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_handle_type.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_handle_type.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_HANDLE_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_HANDLE_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_handle_type metafunction will determine whether or not
+ // the specified type has a nested 'handle_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(handle_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_HANDLE_TYPE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_hasher.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_hasher.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_HASHER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_HASHER_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_hasher metafunction will determine whether or not the
+ // specified type has a nested 'hasher' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(hasher)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_HASHER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_input_const_iterator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_input_const_iterator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,21 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_INPUT_CONST_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_INPUT_CONST_ITERATOR_HPP_INCLUDED
+
+#include <boost/detail/metafunction/is_input_iterator.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct has_input_const_iterator
+ : is_input_iterator<typename T::const_iterator>::type
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_INPUT_CONST_ITERATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_iterator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_iterator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_ITERATOR_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_iterator metafunction will determine whether or not the
+ // specified type has a nested 'iterator' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(iterator)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_ITERATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_iterator_category.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_iterator_category.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_ITERATOR_CATEGORY_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_ITERATOR_CATEGORY_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_iterator_category metafunction will determine whether or not the
+ // specified type has a nested 'iterator_category' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(iterator_category)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_ITERATOR_CATEGORY_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_key_compare.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_key_compare.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_KEY_COMPARE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_KEY_COMPARE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_key_compare metafunction will determine whether or not the
+ // specified type has a nested 'key_compare' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(key_compare)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_KEY_COMPARE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_key_type.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_key_type.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2007-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_KEY_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_KEY_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_key_type metafunction will determine whether or not the
+ // specified type has a nested 'key_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(key_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_KEY_TYPE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_back.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_back.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,74 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_BACK_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_BACK_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_back metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'back'
+ // member function declaration.
+ // R -- the return type of the 'back' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'back' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(back)
+
+ // The has_member_function_push_back metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'push_back'
+ // member function declaration.
+ // R -- the return type of the 'push_back' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'push_back' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(push_back)
+
+ // The has_member_function_pop_front metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'pop_back'
+ // member function declaration.
+ // R -- the return type of the 'pop_back' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'pop_back' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(pop_back)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_BACK_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_begin_end.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_begin_end.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,53 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_BEGIN_END_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_BEGIN_END_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_begin metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'begin'
+ // member function declaration.
+ // R -- the return type of the 'begin' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'begin' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(begin)
+
+ // The has_member_function_end metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'end'
+ // member function declaration.
+ // R -- the return type of the 'end' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'end' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(end)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_BEGIN_END_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_clear.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_clear.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,34 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_CLEAR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_CLEAR_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_clear metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'clear'
+ // member function declaration.
+ // R -- the return type of the 'clear' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'clear' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(clear)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_CLEAR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_count.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_count.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,34 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_COUNT_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_COUNT_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_count metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'count'
+ // member function declaration.
+ // R -- the return type of the 'count' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'count' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(count)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_COUNT_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_decrease.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_decrease.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,35 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_DECREASE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_DECREASE_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_decrease metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'decrease'
+ // member function declaration.
+ // R -- the return type of the 'decrease' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'decrease' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(decrease)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_DECREASE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_emplace.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_emplace.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,77 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_EMPLACE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_EMPLACE_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_emplace metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'emplace'
+ // member function declaration.
+ // R -- the return type of the 'emplace' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'emplace' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(emplace)
+
+ // The has_member_function_emplace_front metafunction takes in four
+ // argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'emplace_front'
+ // member function declaration.
+ // R -- the return type of the 'emplace_front' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'emplace_front' member function declaration.
+ // (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(emplace_front)
+
+ // The has_member_function_emplace_back metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'emplace_back'
+ // member function declaration.
+ // R -- the return type of the 'emplace_back' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'emplace_back' member function declaration.
+ // (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(emplace_back)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_EMPLACE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_empty.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_empty.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,34 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_EMPTY_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_EMPTY_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_empty metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'empty'
+ // member function declaration.
+ // R -- the return type of the 'empty' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'empty' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(empty)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_EMPTY_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_equal_range.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_equal_range.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,36 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_EQUAL_RANGE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_EQUAL_RANGE_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_equal_range metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'equal_range'
+ // member function declaration.
+ // R -- the return type of the 'equal_range' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'equal_range' member function declaration.
+ // (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(equal_range)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_EQUAL_RANGE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_erase.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_erase.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,34 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_ERASE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_ERASE_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_erase metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'erase'
+ // member function declaration.
+ // R -- the return type of the 'erase' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'erase' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(erase)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_ERASE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_find.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_find.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,34 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_FIND_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_FIND_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_find metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'find'
+ // member function declaration.
+ // R -- the return type of the 'find' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'find' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(find)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_FIND_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_front.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_front.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,75 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_FRONT_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_FRONT_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_front metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'front'
+ // member function declaration.
+ // R -- the return type of the 'front' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'front' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(front)
+
+ // The has_member_function_push_front metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'push_front'
+ // member function declaration.
+ // R -- the return type of the 'push_front' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'push_front' member function declaration.
+ // (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(push_front)
+
+ // The has_member_function_pop_front metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'pop_front'
+ // member function declaration.
+ // R -- the return type of the 'pop_front' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'pop_front' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(pop_front)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_FRONT_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_get_allocator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_get_allocator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,36 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_GET_ALLOCATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_GET_ALLOCATOR_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_get_allocator metafunction takes in four
+ // argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'get_allocator'
+ // member function declaration.
+ // R -- the return type of the 'get_allocator' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'get_allocator' member function declaration.
+ // (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(get_allocator)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_GET_ALLOCATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_increase.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_increase.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,35 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_INCREASE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_INCREASE_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_increase metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'increase'
+ // member function declaration.
+ // R -- the return type of the 'increase' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'increase' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(increase)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_INCREASE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_insert.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_insert.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,35 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_INSERT_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_INSERT_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_insert metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'insert'
+ // member function declaration.
+ // R -- the return type of the 'insert' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'insert' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(insert)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_INSERT_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_merge.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_merge.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,34 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_MERGE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_MERGE_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_merge metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'merge'
+ // member function declaration.
+ // R -- the return type of the 'merge' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'merge' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(merge)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_MERGE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_ordered_begin_end.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_ordered_begin_end.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,57 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_ORDERED_BEGIN_END_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_ORDERED_BEGIN_END_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_ordered_begin metafunction takes in four
+ // argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'ordered_begin'
+ // member function declaration.
+ // R -- the return type of the 'ordered_begin' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'ordered_begin' member function declaration.
+ // (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(ordered_begin)
+
+ // The has_member_function_ordered_end metafunction takes in four
+ // argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'ordered_end'
+ // member function declaration.
+ // R -- the return type of the 'ordered_end' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'ordered_end' member function declaration.
+ // (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(ordered_end)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_ORDERED_BEGIN_END_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_pop.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_pop.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,34 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_POP_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_POP_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_pop metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'pop'
+ // member function declaration.
+ // R -- the return type of the 'pop' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'pop' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(pop)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_POP_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_push.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_push.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,34 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_PUSH_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_PUSH_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_push metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'push'
+ // member function declaration.
+ // R -- the return type of the 'push' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'push' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(push)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_PUSH_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_rbegin_rend.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_rbegin_rend.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,54 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_RBEGIN_REND_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_RBEGIN_REND_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_rbegin metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'rbegin'
+ // member function declaration.
+ // R -- the return type of the 'rbegin' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'rbegin' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(rbegin)
+
+ // The has_member_function_rend metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'rend'
+ // member function declaration.
+ // R -- the return type of the 'rend' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'rend' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(rend)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_RBEGIN_REND_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_resize.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_resize.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,35 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_RESIZE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_RESIZE_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_resize metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'resize'
+ // member function declaration.
+ // R -- the return type of the 'resize' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'resize' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(resize)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_RESIZE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_size.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_size.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,76 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_SIZE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_SIZE_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+#include <boost/tti/has_static_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_size metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'size'
+ // member function declaration.
+ // R -- the return type of the 'size' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'size' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(size)
+
+ // The has_member_function_max_size metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'max_size'
+ // member function declaration.
+ // R -- the return type of the 'max_size' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'max_size' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(max_size)
+
+ // The has_static_member_function_max_size metafunction takes in four
+ // argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'max_size'
+ // static member function declaration.
+ // R -- the return type of the 'max_size' static member function
+ // declaration. (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of
+ // the 'max_size' static member function declaration. (Default:
+ // mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION(max_size)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_SIZE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_top.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_top.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,34 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_TOP_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_TOP_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_top metafunction takes in four argument types:
+ //
+ // T -- the type to be checked for the presence of a nested 'top'
+ // member function declaration.
+ // R -- the return type of the 'top' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'top' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(top)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_TOP_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_mfunc_update.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_mfunc_update.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,35 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_MFUNC_UPDATE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_UPDATE_HPP_INCLUDED
+
+#include <boost/tti/has_member_function.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_member_function_update metafunction takes in four argument
+ // types:
+ //
+ // T -- the type to be checked for the presence of a nested 'update'
+ // member function declaration.
+ // R -- the return type of the 'update' member function declaration.
+ // (Default: void)
+ // A -- an MPL forward sequence encapsulating the argument types of the
+ // 'update' member function declaration. (Default: mpl::vector0<>)
+ // Q -- a Boost.FunctionTypes tag specifying cv-qualification.
+ //
+ // The metafunction can also be invoked by passing in a single argument
+ // with the following form:
+ //
+ // R T::*(P) K
+ //
+ // where P is a comma-separated list of the argument types and K is a
+ // whitespace-separated list of cv-qualification keywords.
+ BOOST_TTI_HAS_MEMBER_FUNCTION(update)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_UPDATE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_ordered_iterator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_ordered_iterator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_ORDERED_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_ORDERED_ITERATOR_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_ordered_iterator metafunction will determine whether or not
+ // the specified type has a nested 'ordered_iterator' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(ordered_iterator)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_ORDERED_ITERATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_pointer.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_pointer.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_POINTER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_POINTER_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_pointer metafunction will determine whether or not the
+ // specified type has a nested 'pointer' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(pointer)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_POINTER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_random_access_iterators.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_random_access_iterators.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,35 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_RANDOM_ACCESS_ITERATORS_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_RANDOM_ACCESS_ITERATORS_HPP_INCLUDED
+
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/detail/metafunction/is_random_access_iterator.hpp>
+#include <boost/detail/metafunction/is_associative_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // Major assumption:
+ // All Random Access Containers sport Random Access Iterators and
+ // are not Associative Containers.
+ template <typename T>
+ struct has_random_access_iterators
+ : ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ is_random_access_iterator<typename T::iterator>
+ , is_random_access_iterator<typename T::reverse_iterator>
+ >
+ , ::boost::mpl::not_< is_associative_container<T> >
+ >
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,has_random_access_iterators,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_RANDOM_ACCESS_ITERATORS_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_reference.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_reference.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_REFERENCE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_REFERENCE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_reference metafunction will determine whether or not the
+ // specified type has a nested 'reference' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(reference)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_REFERENCE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_reverse_iterator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_reverse_iterator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_REVERSE_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_REVERSE_ITERATOR_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_reverse_iterator metafunction will determine whether or not
+ // the specified type has a nested 'reverse_iterator' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(reverse_iterator)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_REVERSE_ITERATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_rvrs_container_typedefs.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_rvrs_container_typedefs.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,70 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_RVRS_CONTAINER_TYPEDEFS_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_RVRS_CONTAINER_TYPEDEFS_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/detail/metafunction/is_bidirectional_iterator.hpp>
+#include <boost/detail/metafunction/has_iterator.hpp>
+#include <boost/detail/metafunction/has_const_iterator.hpp>
+#include <boost/detail/metafunction/has_reverse_iterator.hpp>
+#include <boost/detail/metafunction/has_const_reverse_iterator.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct has_reversible_container_typedefs_impl
+ : ::boost::mpl::if_<
+ ::boost::mpl::or_<
+ ::std::tr1::is_void<typename T::reverse_iterator>
+ , ::std::tr1::is_void<typename T::const_reverse_iterator>
+ >
+ , ::boost::mpl::false_
+ , ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ is_bidirectional_iterator<typename T::iterator>
+ , is_bidirectional_iterator<typename T::const_iterator>
+ >
+ , ::boost::mpl::and_<
+ is_bidirectional_iterator<typename T::reverse_iterator>
+ , is_bidirectional_iterator<
+ typename T::const_reverse_iterator
+ >
+ >
+ >
+ >
+ {
+ };
+
+ template <typename T>
+ struct has_reversible_container_typedefs
+ : ::boost::mpl::eval_if<
+ ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_iterator<T>::type
+ , typename has_const_iterator<T>::type
+ >
+ , ::boost::mpl::and_<
+ typename has_reverse_iterator<T>::type
+ , typename has_const_reverse_iterator<T>::type
+ >
+ >
+ , has_reversible_container_typedefs_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,has_reversible_container_typedefs,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_RVRS_CONTAINER_TYPEDEFS_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_second_argument_type.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_second_argument_type.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_SECOND_ARGUMENT_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_SECOND_ARGUMENT_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_second_argument_type metafunction will determine whether or not
+ // the specified type has a nested 'second_argument_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(second_argument_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_SECOND_ARGUMENT_TYPE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_size_type.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_size_type.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_SIZE_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_SIZE_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_size_type metafunction will determine whether or not the
+ // specified type has a nested 'size_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(size_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_SIZE_TYPE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_stable_iterators.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_stable_iterators.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,84 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_STABLE_ITERATORS_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_STABLE_ITERATORS_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/detail/metafunction/is_random_access_iterator.hpp>
+#include <boost/detail/metafunction/is_hashed_assoc_container.hpp>
+#include <boost/detail/metafunction/is_queue.hpp>
+#include <boost/detail/metafunction/is_stack_or_std_heap.hpp>
+#include <boost/detail/metafunction/is_heap.hpp>
+#include <boost/detail/metafunction/is_container.hpp>
+#include <boost/detail/metafunction/is_ptr_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct has_stable_iterators_impl
+ : ::boost::mpl::eval_if<
+ is_random_access_iterator<typename T::iterator>
+ , ::boost::mpl::false_
+ , ::boost::mpl::eval_if<
+ is_hashed_associative_container<T>
+ , ::boost::mpl::false_
+ , ::boost::mpl::true_
+ >
+ >
+ {
+ };
+
+ template <typename T>
+ struct has_stable_iterators
+ : ::boost::mpl::eval_if<
+ is_queue<T>
+ , ::boost::mpl::false_
+ , ::boost::mpl::eval_if<
+ is_stack_or_std_heap<T>
+ , ::boost::mpl::false_
+ , ::boost::mpl::eval_if<
+ is_heap<T>
+ , ::boost::mpl::false_
+ , ::boost::mpl::eval_if<
+ is_container<T>
+ , has_stable_iterators_impl<T>
+ , ::boost::mpl::eval_if<
+ is_ptr_container<T>
+ , has_stable_iterators_impl<T>
+ , ::boost::mpl::false_
+ >
+ >
+ >
+ >
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,has_stable_iterators,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/container/stable_vector.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename ValueType, typename Allocator>
+ struct has_stable_iterators<
+ ::boost::container::stable_vector<ValueType,Allocator>
+ > : ::boost::mpl::true_
+ {
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // !BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_STABLE_ITERATORS_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_value_compare.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_value_compare.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_VALUE_COMPARE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_VALUE_COMPARE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_value_compare metafunction will determine whether or not the
+ // specified type has a nested 'value_compare' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(value_compare)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_VALUE_COMPARE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/has_value_type.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_value_type.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,19 @@
+// Copyright (C) 2007-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_HAS_VALUE_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_VALUE_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_value_type metafunction will determine whether or not the
+ // specified type has a nested 'value_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(value_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_VALUE_TYPE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_adaptable_binary_func.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_adaptable_binary_func.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,30 @@
+// Copyright (C) 2011, 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_ADAPTABLE_BINARY_FUNC_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_ADAPTABLE_BINARY_FUNC_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/detail/metafunction/has_first_argument_type.hpp>
+#include <boost/detail/metafunction/has_second_argument_type.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_adaptable_binary_function
+ : boost::mpl::eval_if<
+ typename has_first_argument_type<T>::type
+ , has_second_argument_type<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_adaptable_binary_function,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_ADAPTABLE_BINARY_FUNC_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_adaptable_unary_function.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_adaptable_unary_function.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,25 @@
+// Copyright (C) 2011 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_ADAPTABLE_UNARY_FUNCTION_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_ADAPTABLE_UNARY_FUNCTION_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/detail/metafunction/has_argument_type.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_adaptable_unary_function
+ : has_argument_type<T>::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_adaptable_unary_function,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_ADAPTABLE_UNARY_FUNCTION_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_allocator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_allocator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,151 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_ALLOCATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_ALLOCATOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/container/allocator_traits.hpp>
+#include <boost/detail/metafunction/has_allocator_type.hpp>
+#endif
+
+#include <boost/detail/metafunction/has_value_type.hpp>
+#include <boost/detail/metafunction/has_pointer.hpp>
+#include <boost/detail/metafunction/has_reference.hpp>
+#include <boost/detail/metafunction/has_const_pointer.hpp>
+#include <boost/detail/metafunction/has_const_reference.hpp>
+#include <boost/detail/metafunction/has_size_type.hpp>
+#include <boost/detail/metafunction/has_difference_type.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_allocator_impl
+ : ::boost::mpl::eval_if<
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+#endif
+ typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::detail::metafunction
+ ::has_value_type<T>::type
+ , ::boost::detail::metafunction::has_size_type<
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+#endif
+ T
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ >
+#endif
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::detail::metafunction::has_difference_type<
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+#endif
+ T
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ >
+#endif
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::detail::metafunction::has_pointer<
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+#endif
+ T
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ >
+#endif
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::detail::metafunction::has_const_pointer<
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+#endif
+ T
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ >
+#endif
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::detail::metafunction::has_reference<
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+#endif
+ T
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ >
+#endif
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::detail::metafunction::has_const_reference<
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+#endif
+ T
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ >
+#endif
+ >
+ , ::boost::mpl::false_
+ >::type
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , ::boost::detail::metafunction::has_allocator_type<
+ ::boost::container::allocator_traits<T>
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::detail::metafunction::has_propagate_on_container_swap<
+ ::boost::container::allocator_traits<T>
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::detail::metafunction
+ ::has_propagate_on_container_copy_assignment<
+ ::boost::container::allocator_traits<T>
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::detail::metafunction
+ ::has_propagate_on_container_move_assignment<
+ ::boost::container::allocator_traits<T>
+ >
+ , ::boost::mpl::false_
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_allocator
+ : ::boost::mpl::eval_if<
+ is_container<T>
+ , ::boost::mpl::false_
+ , is_allocator_impl<T>
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_ALLOCATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_associative_container.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_associative_container.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,116 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_ASSOCIATIVE_CONTAINER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_ASSOCIATIVE_CONTAINER_HPP_INCLUDED
+
+#include <utility>
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_key_type.hpp>
+#include <boost/detail/metafunction/is_container.hpp>
+#include <boost/detail/metafunction/is_ptr_container.hpp>
+
+#if 0
+#include <boost/detail/metafunction/has_mfunc_erase.hpp>
+#include <boost/detail/metafunction/has_mfunc_clear.hpp>
+#include <boost/detail/metafunction/has_mfunc_find.hpp>
+#include <boost/detail/metafunction/has_mfunc_count.hpp>
+#include <boost/detail/metafunction/has_mfunc_equal_range.hpp>
+#endif
+
+namespace boost { namespace detail { namespace metafunction {
+
+#if 0
+ template <typename T>
+ struct is_associative_container_impl
+ : ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_member_function_erase<
+ T
+ , typename T::iterator
+ , ::boost::mpl::vector1<typename T::iterator>
+ , ::boost::function_types::non_const
+ >::type
+ , typename has_member_function_clear<
+ T
+ , void
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ , ::boost::mpl::and_<
+ typename has_member_function_find<
+ T
+ , typename T::const_iterator
+ , ::boost::mpl::vector1<typename T::key_type const&>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_find<
+ T
+ , typename T::iterator
+ , ::boost::mpl::vector1<typename T::key_type const&>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ , ::boost::mpl::and_<
+ typename has_member_function_count<
+ T
+ , typename T::size_type
+ , ::boost::mpl::vector1<typename T::key_type const&>
+ , ::boost::function_types::non_const
+ >::type
+ , ::boost::mpl::and_<
+ typename has_member_function_equal_range<
+ T
+ , ::std::pair<
+ typename T::const_iterator
+ , typename T::const_iterator
+ >
+ , ::boost::mpl::vector1<typename T::key_type const&>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_equal_range<
+ T
+ , ::std::pair<
+ typename T::iterator
+ , typename T::iterator
+ >
+ , ::boost::mpl::vector1<typename T::key_type const&>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ >
+ {
+ };
+#endif
+
+ template <typename T>
+ struct is_associative_container
+ : ::boost::mpl::eval_if<
+ typename has_key_type<T>::type
+ , ::boost::mpl::if_<
+ is_container<T>
+// , is_associative_container_impl<T>
+ , ::boost::mpl::true_
+ , is_ptr_container<T>
+ >
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_associative_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_ASSOCIATIVE_CONTAINER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_back_insertion_sequence.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_back_insertion_sequence.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,68 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_BACK_INSERTION_SEQUENCE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_BACK_INSERTION_SEQUENCE_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_back.hpp>
+#include <boost/detail/metafunction/is_sequence.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_back_insertion_sequence_impl
+ : ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_member_function_back<
+ T
+ , typename T::const_reference
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_back<
+ T
+ , typename T::reference
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ , ::boost::mpl::and_<
+ typename has_member_function_push_back<
+ T
+ , void
+ , ::boost::mpl::vector1<typename T::value_type const&>
+ , ::boost::function_types::non_const
+ >::type
+ , typename has_member_function_pop_back<
+ T
+ , void
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_back_insertion_sequence
+ : ::boost::mpl::eval_if<
+ is_sequence<T>
+ , is_back_insertion_sequence_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_back_insertion_sequence,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_BACK_INSERTION_SEQUENCE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_bidirectional_iterator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_bidirectional_iterator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,46 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_BIDIRECTIONAL_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_BIDIRECTIONAL_ITERATOR_HPP_INCLUDED
+
+#include <iterator>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/detail/metafunction/has_iterator_category.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_bidirectional_iterator_impl
+ : ::boost::mpl::if_<
+ ::std::tr1::is_convertible<
+ typename ::boost::BOOST_ITERATOR_CATEGORY<T>::type
+ , ::std::bidirectional_iterator_tag
+ >
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_bidirectional_iterator
+ : ::boost::mpl::eval_if<
+ typename has_iterator_category< ::std::iterator_traits<T> >::type
+ , is_bidirectional_iterator_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_bidirectional_iterator,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_BIDIRECTIONAL_ITERATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_container.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_container.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,86 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_CONTAINER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_CONTAINER_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_begin_end.hpp>
+#include <boost/detail/metafunction/has_mfunc_size.hpp>
+#include <boost/detail/metafunction/has_mfunc_empty.hpp>
+#include <boost/detail/metafunction/has_container_typedefs.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_container_impl
+ : ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_member_function_begin<
+ T
+ , typename T::const_iterator
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_end<
+ T
+ , typename T::const_iterator
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ >
+ , ::boost::mpl::and_<
+ typename has_member_function_size<
+ T
+ , typename T::size_type
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_empty<
+ T
+ , bool
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ >
+ >
+ , ::boost::mpl::or_<
+ typename has_member_function_max_size<
+ T
+ , typename T::size_type
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_static_member_function_max_size<
+ T
+ , typename T::size_type
+ , ::boost::mpl::vector0<>
+ >::type
+ >
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_container
+ : ::boost::mpl::if_<
+ has_container_typedefs<T>
+ , is_container_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_CONTAINER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_container_with_emplace.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_container_with_emplace.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,64 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_CONTAINER_WITH_EMPLACE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_CONTAINER_WITH_EMPLACE_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/is_container.hpp>
+#include <boost/detail/metafunction/is_associative_container.hpp>
+#include <boost/deatil/metafunction/has_mfunc_emplace.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_sequence_with_emplace
+ : ::boost::mpl::or_<
+ typename has_member_function_emplace_front<
+ T
+ , void
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ , typename has_member_function_emplace_back<
+ T
+ , void
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_associative_container_with_emplace
+ : has_member_function_emplace<
+ T
+ , typename T::iterator
+ , ::boost::mpl::vector1<typename T::key_type>
+ , ::boost::function_types::non_const
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_container_with_emplace
+ : ::boost::mpl::if_<
+ typename is_reversible_container<T>::type
+ , is_container_with_emplace_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_container_with_emplace,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_CONTAINER_WITH_EMPLACE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_flat_assoc_container.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_flat_assoc_container.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,37 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_FLAT_ASSOC_CONTAINER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_FLAT_ASSOC_CONTAINER_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/detail/metafunction/is_random_access_iterator.hpp>
+#include <boost/detail/metafunction/is_sorted_assoc_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_flat_associative_container_impl
+ : is_random_access_iterator<typename T::iterator>
+ {
+ };
+
+ template <typename T>
+ struct is_flat_associative_container
+ : ::boost::mpl::if_<
+ is_sorted_associative_container<T>
+ , is_flat_associative_container_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_flat_associative_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_FLAT_ASSOC_CONTAINER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_front_insertion_sequence.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_front_insertion_sequence.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,68 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_FRONT_INSERTION_SEQUENCE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_FRONT_INSERTION_SEQUENCE_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_front.hpp>
+#include <boost/detail/metafunction/is_sequence.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_front_insertion_sequence_impl
+ : ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_member_function_front<
+ T
+ , typename T::const_reference
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_front<
+ T
+ , typename T::reference
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ , ::boost::mpl::and_<
+ typename has_member_function_push_front<
+ T
+ , void
+ , ::boost::mpl::vector1<typename T::value_type const&>
+ , ::boost::function_types::non_const
+ >::type
+ , typename has_member_function_pop_front<
+ T
+ , void
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_front_insertion_sequence
+ : ::boost::mpl::eval_if<
+ is_sequence<T>
+ , is_front_insertion_sequence_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_front_insertion_sequence,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_FRONT_INSERTION_SEQUENCE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_function_wrt.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_function_wrt.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,77 @@
+// Copyright (C) 2007-2011, 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_FUNCTION_WRT_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_FUNCTION_WRT_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/if.hpp>
+
+#if !defined BOOST_NO_SFINAE && \
+ !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/mpl/eval_if.hpp>
+#include <boost/utility/result_of.hpp>
+#endif
+
+namespace boost { namespace detail { namespace metafunction {
+
+#if defined BOOST_NO_SFINAE || \
+ defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename T, typename R>
+ struct is_function_with_result_type
+ : ::boost::mpl::if_<
+ ::std::tr1::is_same<typename T::result_type,R>
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+#else // !defined BOOST_NO_SFINAE && \
+// !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename T, typename R>
+ struct is_std_function_with_result_type
+ : ::boost::mpl::if_<
+ ::std::tr1::is_same<typename ::boost::result_of<T>::type,R>
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >
+ {
+ };
+
+ template <typename T, typename R>
+ struct is_functor_with_result_type
+ : ::boost::mpl::if_<
+ ::std::tr1::is_same<typename T::result_type,R>
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >
+ {
+ };
+
+ template <typename T, typename R>
+ struct is_functor_with_result_typedef
+ : ::boost::mpl::eval_if<
+ typename ::boost::detail::has_result_type<T>::type
+ , is_functor_with_result_type<T,R>
+ , ::boost::mpl::false_
+ >
+ {
+ };
+
+ template <typename T, typename R>
+ struct is_function_with_result_type
+ : ::boost::mpl::eval_if<
+ ::std::tr1::is_function<T>
+ , is_std_function_with_result_type<T,R>
+ , is_functor_with_result_typedef<T,R>
+ >::type
+#endif // BOOST_NO_SFINAE, BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2,is_function_with_result_type,(T,R))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_FUNCTION_WRT_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_hashed_assoc_container.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_hashed_assoc_container.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,42 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_HASHED_ASSOC_CONTAINER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_HASHED_ASSOC_CONTAINER_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/detail/metafunction/has_hasher.hpp>
+#include <boost/detail/metafunction/is_associative_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_hashed_associative_container_impl
+ : ::boost::mpl::if_<
+ ::std::tr1::is_void<typename T::hasher>
+ , ::boost::mpl::false_
+ , is_associative_container<T>
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_hashed_associative_container
+ : ::boost::mpl::eval_if<
+ typename has_hasher<T>::type
+ , is_hashed_associative_container_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_hashed_associative_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_HASHED_ASSOC_CONTAINER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_heap.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_heap.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,129 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_HEAP_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_HEAP_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_empty.hpp>
+#include <boost/detail/metafunction/has_mfunc_size.hpp>
+#include <boost/detail/metafunction/has_mfunc_top.hpp>
+#include <boost/detail/metafunction/has_mfunc_pop.hpp>
+#include <boost/detail/metafunction/has_mfunc_clear.hpp>
+#include <boost/detail/metafunction/has_mfunc_get_allocator.hpp>
+#include <boost/detail/metafunction/has_value_type.hpp>
+#include <boost/detail/metafunction/has_value_compare.hpp>
+#include <boost/detail/metafunction/has_size_type.hpp>
+#include <boost/detail/metafunction/has_difference_type.hpp>
+#include <boost/detail/metafunction/has_allocator_type.hpp>
+#include <boost/detail/metafunction/has_pointer.hpp>
+#include <boost/detail/metafunction/has_const_pointer.hpp>
+#include <boost/detail/metafunction/has_reference.hpp>
+#include <boost/detail/metafunction/has_const_reference.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_heap_impl
+ : ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_member_function_empty<
+ T
+ , bool
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_get_allocator<
+ T
+ , typename T::allocator_type
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ >
+ , ::boost::mpl::and_<
+ typename has_member_function_top<
+ T
+ , typename T::const_reference
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_pop<
+ T
+ , void
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ , ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_member_function_size<
+ T
+ , typename T::size_type
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_max_size<
+ T
+ , typename T::size_type
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ >
+ , typename has_member_function_clear<
+ T
+ , void
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_heap
+ : ::boost::mpl::if_<
+ ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_value_type<T>::type
+ , typename has_value_compare<T>::type
+ >
+ , ::boost::mpl::and_<
+ typename has_allocator_type<T>::type
+ , ::boost::mpl::and_<
+ typename has_size_type<T>::type
+ , typename has_difference_type<T>::type
+ >
+ >
+ >
+ , ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_reference<T>::type
+ , typename has_const_reference<T>::type
+ >
+ , ::boost::mpl::and_<
+ typename has_pointer<T>::type
+ , typename has_const_pointer<T>::type
+ >
+ >
+ >
+ , is_heap_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_heap,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_HEAP_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_input_iterator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_input_iterator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,46 @@
+// Copyright (C) 2011-2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_INPUT_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_INPUT_ITERATOR_HPP_INCLUDED
+
+#include <iterator>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/detail/metafunction/has_iterator_category.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_input_iterator_impl
+ : ::boost::mpl::if_<
+ ::std::tr1::is_convertible<
+ typename ::boost::BOOST_ITERATOR_CATEGORY<T>::type
+ , ::std::input_iterator_tag
+ >
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_input_iterator
+ : ::boost::mpl::eval_if<
+ typename has_iterator_category< ::std::iterator_traits<T> >::type
+ , is_input_iterator_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_input_iterator,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_INPUT_ITERATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_iteratable_heap.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_iteratable_heap.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,64 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_ITERATABLE_HEAP_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_ITERATABLE_HEAP_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_begin_end.hpp>
+#include <boost/detail/metafunction/has_iterator.hpp>
+#include <boost/detail/metafunction/has_const_iterator.hpp>
+#include <boost/detail/metafunction/has_input_const_iterator.hpp>
+#include <boost/detail/metafunction/is_heap.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_iteratable_heap_impl
+ : ::boost::mpl::and_<
+ typename has_member_function_begin<
+ T
+ , typename T::iterator
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_end<
+ T
+ , typename T::iterator
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_iteratable_heap
+ : ::boost::mpl::if_<
+ ::boost::mpl::and_<
+ is_heap<T>
+ , ::boost::mpl::and_<
+ typename has_iterator<T>::type
+ , typename has_const_iterator<T>::type
+ >
+ >
+ , ::boost::mpl::and_<
+ has_input_const_iterator<T>
+ , is_iteratable_heap_impl<T>
+ >
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_iteratable_heap,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_ITERATABLE_HEAP_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_mergeable_heap.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_mergeable_heap.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,37 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_MERGEABLE_HEAP_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_MERGEABLE_HEAP_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_merge.hpp>
+#include <boost/detail/metafunction/is_heap.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_mergeable_heap
+ : ::boost::mpl::eval_if<
+ is_heap<T>
+ , has_member_function_merge<
+ T
+ , void
+ , ::boost::mpl::vector1<T&>
+ , ::boost::function_types::non_const
+ >
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_mergeable_heap,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_MERGEABLE_HEAP_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_multi_assoc_container.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_multi_assoc_container.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,69 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_MULTI_ASSOC_CONTAINER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_MULTI_ASSOC_CONTAINER_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/utility/get_reference.hpp>
+#include <boost/detail/metafunction/is_associative_container.hpp>
+#include <boost/detail/metafunction/is_ptr_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_multiple_associative_container_impl
+ : ::boost::mpl::if_<
+ ::std::tr1::is_same<
+ BOOST_TYPEOF_TPL(
+ T().insert(::boost::get_reference<typename T::key_type>())
+ )
+ , typename T::iterator
+ >
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T>
+ struct is_multiple_associative_ptr_container_impl
+ : ::boost::mpl::if_<
+ ::std::tr1::is_same<
+ BOOST_TYPEOF_TPL(
+ T().insert(&::boost::get_reference<typename T::key_type>())
+ )
+ , typename T::iterator
+ >
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T>
+ struct is_multiple_associative_container
+ : ::boost::mpl::eval_if<
+ is_associative_container<T>
+ , ::boost::mpl::if_<
+ is_ptr_container<T>
+ , is_multiple_associative_ptr_container_impl<T>
+ , is_multiple_associative_container_impl<T>
+ >
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_multiple_associative_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_MULTI_ASSOC_CONTAINER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_mutable_heap.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_mutable_heap.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,134 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_MUTABLE_HEAP_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_MUTABLE_HEAP_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_update.hpp>
+#include <boost/detail/metafunction/has_mfunc_increase.hpp>
+#include <boost/detail/metafunction/has_mfunc_decrease.hpp>
+#include <boost/detail/metafunction/has_mfunc_push.hpp>
+#include <boost/detail/metafunction/has_handle_type.hpp>
+#include <boost/detail/metafunction/is_heap.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_mutable_heap_with_increase
+ : ::boost::mpl::eval_if<
+ typename has_member_function_increase<
+ T
+ , void
+ , ::boost::mpl::vector1<typename T::handle_type>
+ , ::boost::function_types::non_const
+ >::type
+ , has_member_function_increase<
+ T
+ , void
+ , ::boost::mpl::vector2<
+ typename T::handle_type
+ , typename T::const_reference
+ >
+ , ::boost::function_types::non_const
+ >
+ , ::boost::mpl::false_
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_mutable_heap_with_decrease
+ : ::boost::mpl::eval_if<
+ typename has_member_function_decrease<
+ T
+ , void
+ , ::boost::mpl::vector1<typename T::handle_type>
+ , ::boost::function_types::non_const
+ >::type
+ , has_member_function_decrease<
+ T
+ , void
+ , ::boost::mpl::vector2<
+ typename T::handle_type
+ , typename T::const_reference
+ >
+ , ::boost::function_types::non_const
+ >
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T>
+ struct is_mutable_heap_with_push
+ : has_member_function_push<
+ T
+ , typename T::handle_type
+ , ::boost::mpl::vector1<typename T::const_reference>
+ , ::boost::function_types::non_const
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_mutable_heap_impl
+ : ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename has_member_function_update<
+ T
+ , void
+ , ::boost::mpl::vector1<typename T::handle_type>
+ , ::boost::function_types::non_const
+ >::type
+ , has_member_function_update<
+ T
+ , void
+ , ::boost::mpl::vector2<
+ typename T::handle_type
+ , typename T::const_reference
+ >
+ , ::boost::function_types::non_const
+ >
+ , ::boost::mpl::false_
+ >::type
+ , is_mutable_heap_with_increase<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::eval_if<
+ is_mutable_heap_with_decrease<T>
+ , is_mutable_heap_with_push<T>
+ , ::boost::mpl::false_
+ >
+ , ::boost::mpl::false_
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_mutable_heap
+ : ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ is_heap<T>
+ , has_handle_type<T>
+ , ::boost::mpl::false_
+ >::type
+ , is_mutable_heap_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_mutable_heap,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_MUTABLE_HEAP_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_n_ary_function.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_n_ary_function.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,39 @@
+// Copyright (C) 2011, 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_N_ARY_FUNCTION_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_N_ARY_FUNCTION_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/function_types/function_arity.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T, typename N>
+ struct is_n_ary_function
+ : ::boost::mpl::eval_if<
+ ::std::tr1::is_function<T>
+ , ::boost::mpl::if_<
+ ::boost::mpl::equal_to<
+ ::boost::function_types::function_arity<T>
+ , N
+ >
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2,is_n_ary_function,(T, N))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_N_ARY_FUNCTION_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_order_iteratable_heap.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_order_iteratable_heap.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,60 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_ORDER_ITERATABLE_HEAP_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_ORDER_ITERATABLE_HEAP_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_ordered_begin_end.hpp>
+#include <boost/detail/metafunction/has_ordered_iterator.hpp>
+#include <boost/detail/metafunction/is_input_iterator.hpp>
+#include <boost/detail/metafunction/is_iteratable_heap.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_order_iteratable_heap_impl
+ : ::boost::mpl::and_<
+ typename is_input_iterator<typename T::ordered_iterator>::type
+ , ::boost::mpl::and_<
+ typename has_member_function_ordered_begin<
+ T
+ , typename T::ordered_iterator
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_ordered_end<
+ T
+ , typename T::ordered_iterator
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ >
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_order_iteratable_heap
+ : ::boost::mpl::if_<
+ ::boost::mpl::and_<
+ is_iteratable_heap<T>
+ , typename has_ordered_iterator<T>::type
+ >
+ , is_order_iteratable_heap_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_order_iteratable_heap,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_ORDER_ITERATABLE_HEAP_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_ptr_container.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_ptr_container.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,30 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_PTR_CONTAINER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_PTR_CONTAINER_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/detail/metafunction/has_auto_type.hpp>
+#include <boost/detail/metafunction/has_container_typedefs.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_ptr_container
+ : ::boost::mpl::if_<
+ typename has_auto_type<T>::type
+ , has_container_typedefs<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_ptr_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_PTR_CONTAINER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_queue.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_queue.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,92 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_QUEUE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_QUEUE_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_empty.hpp>
+#include <boost/detail/metafunction/has_mfunc_size.hpp>
+#include <boost/detail/metafunction/has_mfunc_front.hpp>
+#include <boost/detail/metafunction/has_mfunc_push.hpp>
+#include <boost/detail/metafunction/has_mfunc_pop.hpp>
+#include <boost/detail/metafunction/has_value_type.hpp>
+#include <boost/detail/metafunction/has_size_type.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_queue_impl
+ : ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_member_function_empty<
+ T
+ , bool
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_size<
+ T
+ , typename T::size_type
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ >
+ , ::boost::mpl::and_<
+ typename has_member_function_front<
+ T
+ , typename T::value_type const&
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_front<
+ T
+ , typename T::value_type&
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ , ::boost::mpl::and_<
+ typename has_member_function_push<
+ T
+ , void
+ , ::boost::mpl::vector1<typename T::value_type const&>
+ , ::boost::function_types::non_const
+ >::type
+ , typename has_member_function_pop<
+ T
+ , void
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_queue
+ : ::boost::mpl::if_<
+ ::boost::mpl::and_<
+ typename has_value_type<T>::type
+ , typename has_size_type<T>::type
+ >
+ , is_queue_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_queue,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_QUEUE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_random_access_container.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_random_access_container.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,30 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_RANDOM_ACCESS_CONTAINER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_RANDOM_ACCESS_CONTAINER_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/detail/metafunction/has_random_access_iterators.hpp>
+#include <boost/detail/metafunction/has_rvrs_container_typedefs.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_random_access_container
+ : ::boost::mpl::if_<
+ has_reversible_container_typedefs<T>
+ , has_random_access_iterators<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_random_access_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_RANDOM_ACCESS_CONTAINER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_random_access_iterator.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_random_access_iterator.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,46 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_RANDOM_ACCESS_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_RANDOM_ACCESS_ITERATOR_HPP_INCLUDED
+
+#include <iterator>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/detail/metafunction/has_iterator_category.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_random_access_iterator_impl
+ : ::boost::mpl::if_<
+ ::std::tr1::is_convertible<
+ typename ::boost::BOOST_ITERATOR_CATEGORY<T>::type
+ , ::std::random_access_iterator_tag
+ >
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_random_access_iterator
+ : ::boost::mpl::eval_if<
+ typename has_iterator_category< ::std::iterator_traits<T> >::type
+ , is_random_access_iterator_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_random_access_iterator,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_RANDOM_ACCESS_ITERATOR_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_reversible_container.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_reversible_container.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,64 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_REVERSIBLE_CONTAINER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_REVERSIBLE_CONTAINER_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_rbegin_rend.hpp>
+#include <boost/detail/metafunction/has_rvrs_container_typedefs.hpp>
+#include <boost/detail/metafunction/has_random_access_iterators.hpp>
+#include <boost/detail/metafunction/is_container.hpp>
+#include <boost/detail/metafunction/is_ptr_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_reversible_container_impl
+ : ::boost::mpl::eval_if<
+ typename has_member_function_rbegin<
+ T
+ , typename T::const_reverse_iterator
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , has_member_function_rend<
+ T
+ , typename T::const_reverse_iterator
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T>
+ struct is_reversible_container
+ : ::boost::mpl::eval_if<
+ has_reversible_container_typedefs<T>
+ , ::boost::mpl::eval_if<
+ has_random_access_iterators<T>
+ , ::boost::mpl::true_
+ , ::boost::mpl::if_<
+ is_reversible_container_impl<T>
+ , is_container<T>
+ , is_ptr_container<T>
+ >
+ >
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reversible_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_REVERSIBLE_CONTAINER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_sequence.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_sequence.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,101 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_SEQUENCE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_SEQUENCE_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_iterator_category.hpp>
+#include <boost/detail/metafunction/has_mfunc_insert.hpp>
+#include <boost/detail/metafunction/has_mfunc_erase.hpp>
+#include <boost/detail/metafunction/has_mfunc_clear.hpp>
+#include <boost/detail/metafunction/has_mfunc_resize.hpp>
+#include <boost/detail/metafunction/is_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_sequence_impl
+ : ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_iterator_category< typename T::iterator >::type
+ , ::boost::mpl::or_<
+ typename has_member_function_insert<
+ T
+ , typename T::iterator
+ , ::boost::mpl::vector2<
+ typename T::const_iterator
+ , typename T::value_type const&
+ >
+ , ::boost::function_types::non_const
+ >::type
+ , typename has_member_function_insert<
+ T
+ , typename T::iterator
+ , ::boost::mpl::vector2<
+ typename T::iterator
+ , typename T::value_type const&
+ >
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ , ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_member_function_erase<
+ T
+ , typename T::iterator
+ , ::boost::mpl::vector1<typename T::iterator>
+ , ::boost::function_types::non_const
+ >::type
+ , typename has_member_function_clear<
+ T
+ , void
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ , ::boost::mpl::and_<
+ typename has_member_function_resize<
+ T
+ , void
+ , ::boost::mpl::vector1<typename T::size_type>
+ , ::boost::function_types::non_const
+ >::type
+ , typename has_member_function_resize<
+ T
+ , void
+ , ::boost::mpl::vector2<
+ typename T::size_type
+ , typename T::value_type const&
+ >
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_sequence
+ : ::boost::mpl::if_<
+ is_container<T>
+ , is_sequence_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_sequence,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_SEQUENCE_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_sorted_assoc_container.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_sorted_assoc_container.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_SORTED_ASSOC_CONTAINER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_SORTED_ASSOC_CONTAINER_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/detail/metafunction/has_key_compare.hpp>
+#include <boost/detail/metafunction/has_value_compare.hpp>
+#include <boost/detail/metafunction/is_associative_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_sorted_associative_container
+ : ::boost::mpl::if_<
+ ::boost::mpl::and_<
+ typename has_key_compare<T>::type
+ , typename has_value_compare<T>::type
+ >
+ , is_associative_container<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_sorted_associative_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_SORTED_ASSOC_CONTAINER_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_stack_or_std_heap.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_stack_or_std_heap.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,84 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_STACK_OR_STD_HEAP_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_STACK_OR_STD_HEAP_HPP_INCLUDED
+
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/function_types/property_tags.hpp>
+#include <boost/detail/metafunction/has_mfunc_empty.hpp>
+#include <boost/detail/metafunction/has_mfunc_size.hpp>
+#include <boost/detail/metafunction/has_mfunc_top.hpp>
+#include <boost/detail/metafunction/has_mfunc_push.hpp>
+#include <boost/detail/metafunction/has_mfunc_pop.hpp>
+#include <boost/detail/metafunction/has_value_type.hpp>
+#include <boost/detail/metafunction/has_size_type.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_stack_or_std_heap_impl
+ : ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ ::boost::mpl::and_<
+ typename has_member_function_empty<
+ T
+ , bool
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ , typename has_member_function_size<
+ T
+ , typename T::size_type
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ >
+ , typename has_member_function_top<
+ T
+ , typename T::value_type const&
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::const_qualified
+ >::type
+ >
+ , ::boost::mpl::and_<
+ typename has_member_function_push<
+ T
+ , void
+ , ::boost::mpl::vector1<typename T::value_type const&>
+ , ::boost::function_types::non_const
+ >::type
+ , typename has_member_function_pop<
+ T
+ , void
+ , ::boost::mpl::vector0<>
+ , ::boost::function_types::non_const
+ >::type
+ >
+ >
+ {
+ };
+
+ template <typename T>
+ struct is_stack_or_std_heap
+ : ::boost::mpl::if_<
+ ::boost::mpl::and_<
+ typename has_value_type<T>::type
+ , typename has_size_type<T>::type
+ >
+ , is_stack_or_std_heap_impl<T>
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_stack_or_std_heap,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_STACK_OR_STD_HEAP_HPP_INCLUDED
+

Added: sandbox/container_gen/boost/detail/metafunction/is_unique_assoc_container.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/is_unique_assoc_container.hpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,69 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// Distributed under 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_DETAIL_METAFUNCTION_IS_UNIQUE_ASSOC_CONTAINER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_IS_UNIQUE_ASSOC_CONTAINER_HPP_INCLUDED
+
+#include <utility>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/utility/get_reference.hpp>
+#include <boost/detail/metafunction/is_associative_container.hpp>
+#include <boost/detail/metafunction/is_ptr_container.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct is_unique_associative_container_impl
+ : ::boost::mpl::if_<
+ ::std::tr1::is_same<
+ BOOST_TYPEOF_TPL(
+ T().insert(::boost::get_reference<typename T::key_type>())
+ )
+ , ::std::pair<typename T::iterator,bool>
+ >
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T>
+ struct is_unique_associative_ptr_container_impl
+ : ::boost::mpl::if_<
+ ::std::tr1::is_same<
+ BOOST_TYPEOF_TPL(
+ T().insert(&::boost::get_reference<typename T::key_type>())
+ )
+ , ::std::pair<typename T::iterator,bool>
+ >
+ , ::boost::mpl::true_
+ , ::boost::mpl::false_
+ >::type
+ {
+ };
+
+ template <typename T>
+ struct is_unique_associative_container
+ : ::boost::mpl::eval_if<
+ is_associative_container<T>
+ , ::boost::mpl::if_<
+ is_ptr_container<T>
+ , is_unique_associative_ptr_container_impl<T>
+ , is_unique_associative_container_impl<T>
+ >
+ , ::boost::mpl::false_
+ >::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_unique_associative_container,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_IS_UNIQUE_ASSOC_CONTAINER_HPP_INCLUDED
+

Added: sandbox/container_gen/libs/container_gen/doc/changelog.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/changelog.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,153 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section Changelog]
+
+[heading From 0.9 to 0.10]
+
+[itemized_list
+ [Added the `static_vector_selector` template.]
+]
+
+[heading From 0.8 to 0.9]
+
+[itemized_list
+ [Added the __is_mergeable_heap_selector__ introspection metafunction.]
+ [Added the `equivalence_selector` template.]
+ [
+ Added the `binary_predicate_selector`, `tr1_binary_predicate_selector`,
+ and `equivalenceS` types.
+ ]
+]
+
+[heading From 0.7 to 0.8]
+
+[itemized_list
+ [
+ Added the __is_compare_selector__, __is_hasher_selector__,
+ __is_allocator_selector__, __is_container_selector__,
+ __is_queue_selector__, __is_stack_selector__, __is_std_heap_selector__,
+ __is_heap_selector__, __is_iteratable_heap_selector__,
+ __is_order_iteratable_heap_selector__, and __is_mutable_heap_selector__
+ introspection metafunctions.
+ ]
+ [Added the `c_str_greater_than_selector` type.]
+ [Renamed `c_str_equivalence_selector` to `c_str_equal_to_selector`.]
+ [Renamed `c_str_ordering_selector` to `c_str_less_than_selector`.]
+ [
+ Selector template arguments are now __Boost_Parameter__-enabled and
+ (mostly) deducible.
+ ]
+ [
+ Removed the `has_front_not_top_member_function_selector` introspection
+ metafunction.
+ ]
+ [
+ Modified __is_tr1_selector__ to evaluate to __mpl_true__ when passed in
+ `tr1_hash_selector`.
+ ]
+]
+
+[heading From 0.6 to 0.7]
+
+[itemized_list
+ [
+ Added the `stack_selector`, `queue_selector`, `std_heap_selector`,
+ `priority_queue_selector`, `d_ary_heap_selector`,
+ `binomial_heap_selector`, `fibonacci_heap_selector`,
+ `pairing_heap_selector`, and `skew_heap_selector` templates.
+ ]
+ [
+ Added the `greater_than_selector`, `stackS`, `queueS`, `std_heapS`,
+ `priority_queueS`, `binomial_heapS`, `fibonacci_heapS`,
+ `pairing_heapS`, and `skew_heapS` selector types.
+ ]
+ [Renamed `default_eqivalance_selector` to `equal_to_selector`.]
+ [Renamed `default_ordering_selector` to `less_than_selector`.]
+ [
+ Added the `has_front_not_top_member_function_selector` introspection
+ metafunction.
+ ]
+]
+
+[heading From 0.5 to 0.6]
+
+[itemized_list
+ [
+ Added the __push_range_function_gen__, __insert_range_function_gen__,
+ __splice_function_gen__, and __insert_range_function_gen__
+ type-generating metafunctions.
+ ]
+]
+
+[heading From 0.4 to 0.5]
+
+[itemized_list
+ [Added the __is_reversible_selector__ introspection metafunction.]
+ [Moved __Boost_Typeof__ registration header files for selectors.]
+]
+
+[heading From 0.3 to 0.4]
+
+[itemized_list
+ [
+ Added the `c_str_equivalence_selector` and `c_str_ordering_selector`
+ types.
+ ]
+]
+
+[heading From 0.2 to 0.3]
+
+[itemized_list
+ [Moved from __Boost_Utility__ to top level.]
+ [
+ Removed the `ptr_container_gen` metafunction and the
+ `associative_container_gen` and `ptr_associative_container_gen`
+ metafunction classes.
+ ]
+ [Added selector templates. See __Selectors__.]
+ [
+ Added the __emplace_function_gen__ and
+ __emplace_associative_function_gen__ type-generating metafunctions.
+ ]
+ [
+ Added the __is_flat_associative_selector__, __is_ptr_selector__,
+ __is_recursive_selector__, __is_tr1_selector__, and
+ __has_emplace_member_function_selector__ introspection metafunctions.
+ ]
+ [Renamed `is_unordered_selector` to __is_hashed_associative_selector__.]
+ [
+ Removed the `boost_vecS`, `boost_dequeS`, `boost_listS`,
+ `boost_slistS`, `boost_setS`, `boost_mapS`, `boost_multisetS`, and
+ `boost_multimapS` selector type definitions.
+ ]
+ [
+ Modified __graph_adjacency_list__ so that it also recognizes new
+ selector types (except when __is_ptr_selector__ evaluates to
+ __mpl_true__).
+ ]
+]
+
+[heading From 0.1 to 0.2]
+
+[itemized_list
+ [
+ Added the `boost_vecS`, `stable_vecS`, `boost_dequeS`, `boost_listS`,
+ `boost_slistS`, `boost_setS`, `boost_mapS`, `boost_multisetS`,
+ `boost_multimapS`, `flat_setS`, `flat_mapS`, `flat_multisetS`, and
+ `flat_multimapS` selector types.
+ ]
+ [
+ Added the __is_associative_selector__,
+ __is_multiple_associative_selector__, `is_unordered_selector`, and
+ __has_stable_iterators_selector__ introspection metafunctions.
+ ]
+]
+
+[endsect] [/ Changelog]
+

Added: sandbox/container_gen/libs/container_gen/doc/container_gen.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/container_gen.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,279 @@
+[library container_gen
+ [quickbook 1.6]
+ [version 0.10]
+ [authors [Lumsdaine, Andrew][Lee, Lie-Quan][Claveirole, Thomas][Siek, Jeremy G.][Enage, Cromwell D.]]
+ [copyright 1997-2013 Andrew Lumsdaine, Lie-Quan Lee, Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage]
+ [purpose Collection of container-generating and selector-introspecting metafunctions]
+ [license
+ Distributed under 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])
+ ]
+]
+
+[/ General links.]
+[def __recursive_data_types__ [@http://en.wikipedia.org/wiki/Recursive_data_type recursive data types]]
+
+[/ General concept links.]
+[def __Default_Constructible__ [@http://www.sgi.com/tech/stl/DefaultConstructible.html [*Default Constructible]]]
+[def __STL_Container__ [@http://www.sgi.com/tech/stl/Container.html [*STL Container]]]
+[def __Input_Iterator__ [@http://www.sgi.com/tech/stl/InputIterator.html [*Input Iterator]]]
+[def __Bidirectional_Iterator__ [@http://www.sgi.com/tech/stl/BidirectionalIterator.html [*Bidirectional Iterator]]]
+[def __Reversible_Container__ [@http://www.sgi.com/tech/stl/ReversibleContainer.html [*Reversible Container]]]
+[def __Random_Access_Iterator__ [@http://www.sgi.com/tech/stl/RandomAccessIterator.html [*Random Access Iterator]]]
+[def __Random_Access_Container__ [@http://www.sgi.com/tech/stl/RandomAccessContainer.html [*Random Access Container]]]
+[def __Associative_Container__ [@http://www.sgi.com/tech/stl/AssociativeContainer.html [*Associative Container]]]
+[def __Sorted_Associative_Container__ [@http://www.sgi.com/tech/stl/SortedAssociativeContainer.html [*Sorted Associative Container]]]
+[def __Hashed_Associative_Container__ [@http://www.sgi.com/tech/stl/HashAssociativeContainer.html [*Hashed Associative Container]]]
+[def __Unique_Associative_Container__ [@http://www.sgi.com/tech/stl/UniqueAssociativeContainer.html [*Unique Associative Container]]]
+[def __Multiple_Associative_Container__ [@http://www.sgi.com/tech/stl/MultipleAssociativeContainer.html [*Multiple Associative Container]]]
+[def __Sequence__ [@http://www.sgi.com/tech/stl/Sequence.html [*Sequence]]]
+[def __Front_Insertion_Sequence__ [@http://www.sgi.com/tech/stl/FrontInsertionSequence.html [*Front Insertion Sequence]]]
+[def __Back_Insertion_Sequence__ [@http://www.sgi.com/tech/stl/BackInsertionSequence.html [*Back Insertion Sequence]]]
+[def __Binary_Predicate__ [@http://www.sgi.com/tech/stl/BinaryPredicate.html [*Binary Predicate]]]
+[def __Strict_Weak_Ordering__ [@http://www.sgi.com/tech/stl/StrictWeakOrdering.html [*Strict Weak Ordering]]]
+[def __Hash_Function__ [@http://www.sgi.com/tech/stl/HashFunction.html [*Hash Function]]]
+
+[/ STL reference links.]
+[def __std_list__ [@http://www.sgi.com/tech/stl/List.html `std::list`]]
+[def __std_queue__ [@http://www.sgi.com/tech/stl/queue.html `std::queue`]]
+[def __std_stack__ [@http://www.sgi.com/tech/stl/stack.html `std::stack`]]
+[def __std_priority_queue__ [@http://www.sgi.com/tech/stl/priority_queue.html `std::priority_queue`]]
+[def __std_pair__ [@http://www.sgi.com/tech/stl/pair.html `std::pair`]]
+[def _std_string_ [@http://www.sgi.com/tech/stl/basic_string.html std::string]]
+
+[/ Boost library links.]
+[def __Boost_Typeof__ [@boost:doc/html/typeof.html [*Boost.Typeof]]]
+[def __Boost_Parameter__ [@boost:libs/parameter/doc/html/index.html [*Boost.Parameter]]]
+[def __Boost_Utility__ [@boost:libs/utility/index.html [*Boost.Utility]]]
+[def __Boost_Assign__ [@boost:libs/assign/doc/index.html [*Boost.Assign]]]
+[def __Boost_Range__ [@boost:libs/range/doc/html/index.html [*Boost.Range]]]
+[def __Boost_Container__ [@boost:doc/html/container.html [*Boost.Container]]]
+[def __Boost_Unordered__ [@boost:doc/html/unordered.html [*Boost.Unordered]]]
+[def __Boost_TR1__ [@boost:doc/html/boost_tr1.html [*Boost.TR1]]]
+[def __Boost_Pointer_Container__ [@boost:libs/ptr_container/doc/index.html [*Boost.PointerContainer]]]
+[def __Boost_Heap__ [@boost:doc/html/heap.html [*Boost.Heap]]]
+[def __BGL__ [@boost:libs/graph/doc/index.html BGL]]
+
+[/ Boost concept links.]
+[def __Integral_Constant__ [@boost:libs/mpl/doc/refmanual/integral-constant.html [*Integral Constant]]]
+[def __Boolean_Integral_Constant__ [@boost:libs/mpl/doc/refmanual/integral-constant.html [*Boolean Integral Constant]]]
+[def __Unary_Metafunction_Class__ [@boost:libs/mpl/doc/refmanual/metafunction-class.html [*Unary Metafunction Class]]]
+[def __Binary_Metafunction_Class__ [@boost:libs/mpl/doc/refmanual/metafunction-class.html [*Binary Metafunction Class]]]
+[def __Single_Pass_Range__ [@boost:libs/range/doc/html/range/concepts/single_pass_range.html [*Single Pass Range]]]
+[def __Clone_Allocator__ [@boost:libs/ptr_container/doc/reference.html#the-clone-allocator-concept [*Clone Allocator]]]
+[def __Recursive_Container__ [@boost:doc/html/container/containers_of_incomplete_types.html [*Recursive Container]]]
+[def __Flat_Associative_Container__ [@boost:doc/html/container/non_standard_containers.html#container.non_standard_containers.flat_xxx [*Flat Associative Container]]]
+
+[/ Boost reference links.]
+[def _ASSERT_ [@boost:libs/utility/assert.html BOOST_ASSERT]]
+[def _AUTO_TPL_ [@boost:doc/html/typeof/refe.html#typeof.auto BOOST_AUTO_TPL]]
+[def __TYPEOF_EMULATION__ [@boost:doc/html/typeof/refe.html#typeof.compl `BOOST_TYPEOF_EMULATION`]]
+[def __MPL_CFG_NO_HAS_XXX__ [@boost:libs/mpl/doc/refmanual/cfg-no-has-xxx.html `BOOST_MPL_CFG_NO_HAS_XXX`]]
+[def __MPL_CFG_NO_HAS_XXX_TEMPLATE__ [@boost:libs/mpl/doc/refmanual/cfg-no-has-xxx-template.html `BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE`]]
+[def __mpl_true__ [@boost:libs/mpl/doc/refmanual/bool.html `boost::mpl::true_`]]
+[def _mpl_true_ [@boost:libs/mpl/doc/refmanual/bool.html boost::mpl::true_]]
+[def __mpl_false__ [@boost:libs/mpl/doc/refmanual/bool.html `boost::mpl::false_`]]
+[def __heap_compare__ [@boost:doc/html/heap/data_structures.html#heap.data_structures.data_structure_configuration `boost::heap::compare`]]
+[def __heap_allocator__ [@boost:doc/html/heap/data_structures.html#heap.data_structures.data_structure_configuration `boost::heap::allocator`]]
+[def __heap_stable__ [@boost:doc/html/heap/data_structures.html#heap.data_structures.data_structure_configuration `boost::heap::stable`]]
+[def __heap_mutable__ [@boost:doc/html/heap/data_structures.html#heap.data_structures.data_structure_configuration `boost::heap::mutable_`]]
+[def __heap_stability_counter_type__ [@boost:doc/html/heap/data_structures.html#heap.data_structures.data_structure_configuration `boost::heap::stability_counter_type`]]
+[def __heap_constant_time_size__ [@boost:doc/html/heap/data_structures.html#heap.data_structures.data_structure_configuration `boost::heap::constant_time_size`]]
+[def __heap_arity__ [@boost:doc/html/heap/data_structures.html#heap.data_structures.data_structure_configuration `boost::heap::arity`]]
+[def __heap_store_parent_pointer__ [@boost:doc/html/heap/data_structures.html#heap.data_structures.data_structure_configuration `boost::heap::store_parent_pointer`]]
+[def __heap_merge__ [@boost:doc/html/boost/heap/heap_merge.html `boost::heap::heap_merge()`]]
+[def __range_equal__ [@boost:libs/range/doc/html/range/reference/algorithms/non_mutating/equal.html `boost::range::equal()`]]
+[def _range_equal_ [@boost:libs/range/doc/html/range/reference/algorithms/non_mutating/equal.html boost::range::equal]]
+[def __range_adaptors_indirect__ [@boost:libs/range/doc/html/range/reference/adaptors/reference/indirected.html `boost::adaptors::indirect()`]]
+[def __array__ [@boost:doc/html/array.html `boost::array`]]
+[def __container_stable_vector__ [@boost:doc/html/boost/container/stable_vector.html `boost::container::stable_vector`]]
+[def __container_static_vector__ [@boost:doc/html/boost/container/static_vector.html `boost::container::static_vector`]]
+[def __graph_adjacency_list__ [@boost:libs/graph/doc/adjacency_list.html `boost::adjacency_list`]]
+[def __graph_parallel_edge_traits__ [@boost:libs/graph/doc/using_adjacency_list.html#SECTION00834200000000000000 `boost::parallel_edge_traits`]]
+[def __tr1_array__ [@boost:doc/html/boost_tr1/subject_list.html#boost_tr1.subject_list.array `std::tr1::array`]]
+[def __tr1_unordered_set__ [@boost:doc/html/boost_tr1/subject_list.html#boost_tr1.subject_list.unordered_set `std::tr1::unordered_set`]]
+[def __tr1_unordered_multiset__ [@boost:doc/html/boost_tr1/subject_list.html#boost_tr1.subject_list.unordered_set `std::tr1::unordered_multiset`]]
+[def __tr1_unordered_map__ [@boost:doc/html/boost_tr1/subject_list.html#boost_tr1.subject_list.unordered_map `std::tr1::unordered_map`]]
+[def __tr1_unordered_multimap__ [@boost:doc/html/boost_tr1/subject_list.html#boost_tr1.subject_list.unordered_map `std::tr1::unordered_multimap`]]
+
+[/ Boost.ContainerGen reference header file links.]
+[def __boost_container_gen_selectors_hpp__ [@../../../../boost/container_gen/selectors.hpp boost/container_gen/selectors.hpp]]
+[def __boost_container_gen_selectors_fwd_hpp__ [@../../../../boost/container_gen/selectors_fwd.hpp boost/container_gen/selectors_fwd.hpp]]
+[def __boost_typeof_boost_container_gen_selectors_hpp__ [@../../../../boost/typeof/boost/container_gen/selectors.hpp boost/typeof/boost/container_gen/selectors.hpp]]
+[def __boost_container_gen_c_str_cmp_selectors_hpp__ [@../../../../boost/container_gen/c_str_cmp_selectors.hpp boost/container_gen/c_str_cmp_selectors.hpp]]
+[def __boost_container_gen_c_str_cmp_selectors_fwd_hpp__ [@../../../../boost/container_gen/c_str_cmp_selectors_fwd.hpp boost/container_gen/c_str_cmp_selectors_fwd.hpp]]
+[def __boost_typeof_boost_container_gen_c_str_cmp_selectors_hpp__ [@../../../../boost/typeof/boost/container_gen/c_str_cmp_selectors.hpp boost/typeof/boost/container_gen/c_str_cmp_selectors.hpp]]
+[def __boost_container_gen_container_gen_hpp__ [@../../../../boost/container_gen/container_gen.hpp boost/container_gen/container_gen.hpp]]
+[def __boost_container_gen_container_gen_fwd_hpp__ [@../../../../boost/container_gen/container_gen_fwd.hpp boost/container_gen/container_gen_fwd.hpp]]
+[def __boost_container_gen_emplace_function_gen_hpp__ [@../../../../boost/container_gen/emplace_function_gen.hpp boost/container_gen/emplace_function_gen.hpp]]
+[def __boost_container_gen_emplace_assoc_function_gen_hpp__ [@../../../../boost/container_gen/emplace_assoc_function_gen.hpp boost/container_gen/emplace_assoc_function_gen.hpp]]
+[def __boost_container_gen_push_range_function_gen_hpp__ [@../../../../boost/container_gen/push_range_function_gen.hpp boost/container_gen/push_range_function_gen.hpp]]
+[def __boost_container_gen_insert_range_function_gen_hpp__ [@../../../../boost/container_gen/insert_range_function_gen.hpp boost/container_gen/insert_range_function_gen.hpp]]
+[def __boost_container_gen_splice_function_gen_hpp__ [@../../../../boost/container_gen/splice_function_gen.hpp boost/container_gen/splice_function_gen.hpp]]
+[def __boost_container_gen_insert_range_result_gen_hpp__ [@../../../../boost/container_gen/insert_range_result_gen.hpp boost/container_gen/insert_range_result_gen.hpp]]
+[def __boost_container_gen_is_compare_selector_hpp__ [@../../../../boost/container_gen/is_compare_selector.hpp boost/container_gen/is_compare_selector.hpp]]
+[def __boost_container_gen_is_hasher_selector_hpp__ [@../../../../boost/container_gen/is_hasher_selector.hpp boost/container_gen/is_hasher_selector.hpp]]
+[def __boost_container_gen_is_allocator_selector_hpp__ [@../../../../boost/container_gen/is_allocator_selector.hpp boost/container_gen/is_allocator_selector.hpp]]
+[def __boost_container_gen_is_container_selector_hpp__ [@../../../../boost/container_gen/is_container_selector.hpp boost/container_gen/is_container_selector.hpp]]
+[def __boost_container_gen_is_reversible_selector_hpp__ [@../../../../boost/container_gen/is_reversible_selector.hpp boost/container_gen/is_reversible_selector.hpp]]
+[def __boost_container_gen_is_random_access_selector_hpp__ [@../../../../boost/container_gen/is_random_access_selector.hpp boost/container_gen/is_random_access_selector.hpp]]
+[def __boost_container_gen_is_associative_selector_hpp__ [@../../../../boost/container_gen/is_associative_selector.hpp boost/container_gen/is_associative_selector.hpp]]
+[def __boost_container_gen_is_unique_assoc_selector_hpp__ [@../../../../boost/container_gen/is_unique_assoc_selector.hpp boost/container_gen/is_unique_assoc_selector.hpp]]
+[def __boost_container_gen_is_multiple_assoc_selector_hpp__ [@../../../../boost/container_gen/is_multiple_assoc_selector.hpp boost/container_gen/is_multiple_assoc_selector.hpp]]
+[def __boost_container_gen_is_flat_assoc_selector_hpp__ [@../../../../boost/container_gen/is_flat_assoc_selector.hpp boost/container_gen/is_flat_assoc_selector.hpp]]
+[def __boost_container_gen_is_hashed_assoc_selector_hpp__ [@../../../../boost/container_gen/is_hashed_assoc_selector.hpp boost/container_gen/is_hashed_assoc_selector.hpp]]
+[def __boost_container_gen_is_tr1_selector_hpp__ [@../../../../boost/container_gen/is_tr1_selector.hpp boost/container_gen/is_tr1_selector.hpp]]
+[def __boost_container_gen_is_ptr_selector_hpp__ [@../../../../boost/container_gen/is_ptr_selector.hpp boost/container_gen/is_ptr_selector.hpp]]
+[def __boost_container_gen_is_queue_selector_hpp__ [@../../../../boost/container_gen/is_queue_selector.hpp boost/container_gen/is_queue_selector.hpp]]
+[def __boost_container_gen_is_stack_selector_hpp__ [@../../../../boost/container_gen/is_stack_selector.hpp boost/container_gen/is_stack_selector.hpp]]
+[def __boost_container_gen_is_std_heap_selector_hpp__ [@../../../../boost/container_gen/is_std_heap_selector.hpp boost/container_gen/is_std_heap_selector.hpp]]
+[def __boost_container_gen_is_heap_selector_hpp__ [@../../../../boost/container_gen/is_heap_selector.hpp boost/container_gen/is_heap_selector.hpp]]
+[def __boost_container_gen_is_iteratable_heap_selector_hpp__ [@../../../../boost/container_gen/is_iteratable_heap_selector.hpp boost/container_gen/is_iteratable_heap_selector.hpp]]
+[def __boost_container_gen_is_order_iter_heap_selector_hpp__ [@../../../../boost/container_gen/is_order_iter_heap_selector.hpp boost/container_gen/is_order_iter_heap_selector.hpp]]
+[def __boost_container_gen_is_mutable_heap_selector_hpp__ [@../../../../boost/container_gen/is_mutable_heap_selector.hpp boost/container_gen/is_mutable_heap_selector.hpp]]
+[def __boost_container_gen_is_mergeable_heap_selector_hpp__ [@../../../../boost/container_gen/is_mergeable_heap_selector.hpp boost/container_gen/is_mergeable_heap_selector.hpp]]
+[def __boost_container_gen_is_recursive_selector_hpp__ [@../../../../boost/container_gen/is_recursive_selector.hpp boost/container_gen/is_recursive_selector.hpp]]
+[def __boost_container_gen_has_stable_iters_selector_hpp__ [@../../../../boost/container_gen/has_stable_iters_selector.hpp boost/container_gen/has_stable_iters_selector.hpp]]
+[def __boost_container_gen_has_emplace_mfunc_selector_hpp__ [@../../../../boost/container_gen/has_emplace_mfunc_selector.hpp boost/container_gen/has_emplace_mfunc_selector.hpp]]
+[def __libs_container_gen_test_result_range_hpp__ [@../../../../libs/container_gen/test/result_range.hpp `<test/result_range.hpp>`]]
+[def __libs_container_gen_test_push_range_function_gen_cpp__ [@../../../../libs/container_gen/test/push_range_function_gen.cpp `<test/push_range_function_gen.cpp>`]]
+[def __libs_container_gen_test_insert_range_function_gen_cpp__ [@../../../../libs/container_gen/test/insert_range_function_gen.cpp `<test/insert_range_function_gen.cpp>`]]
+[def __libs_container_gen_test_splice_function_gen_cpp__ [@../../../../libs/container_gen/test/splice_function_gen.cpp `<test/splice_function_gen.cpp>`]]
+
+[/ Boost.ContainerGen reference links.]
+[def __Selectors__ [link container_gen.reference.selectors *Selectors*]]
+[def _vector_selector_ [link container_gen.reference.selectors boost::vector_selector]]
+[def _map_selector_ [link container_gen.reference.selectors boost::map_selector]]
+[def __Selectors_synopsis__ [link container_gen.reference.selectors.synopsis synopsis]]
+[def __Selectors_table__ [link container_gen.reference.selectors.description table]]
+[def __container_gen__ [link container_gen.reference.container_gen `container_gen`]]
+[def _container_gen_ [link container_gen.reference.container_gen container_gen]]
+[def __emplace_function_gen__ [link container_gen.reference.emplace_function_gen `emplace_function_gen`]]
+[def _emplace_function_gen_ [link container_gen.reference.emplace_function_gen emplace_function_gen]]
+[def __emplace_associative_function_gen__ [link container_gen.reference.emplace_assoc_function_gen `emplace_associative_function_gen`]]
+[def _emplace_associative_function_gen_ [link container_gen.reference.emplace_assoc_function_gen emplace_associative_function_gen]]
+[def __push_range_function_gen__ [link container_gen.reference.push_range_function_gen `push_range_function_gen`]]
+[def _push_range_function_gen_ [link container_gen.reference.push_range_function_gen push_range_function_gen]]
+[def __insert_range_function_gen__ [link container_gen.reference.insert_range_function_gen `insert_range_function_gen`]]
+[def _insert_range_function_gen_ [link container_gen.reference.insert_range_function_gen insert_range_function_gen]]
+[def __splice_function_gen__ [link container_gen.reference.splice_function_gen `splice_function_gen`]]
+[def _splice_function_gen_ [link container_gen.reference.splice_function_gen splice_function_gen]]
+[def __insert_range_result_gen__ [link container_gen.reference.insert_range_result_gen `insert_range_result_gen`]]
+[def _insert_range_result_gen_ [link container_gen.reference.insert_range_result_gen insert_range_result_gen]]
+[def __is_compare_selector__ [link container_gen.reference.is_compare_selector `is_compare_selector`]]
+[def _is_compare_selector_ [link container_gen.reference.is_compare_selector is_compare_selector]]
+[def __is_hasher_selector__ [link container_gen.reference.is_hasher_selector `is_hasher_selector`]]
+[def _is_hasher_selector_ [link container_gen.reference.is_hasher_selector is_hasher_selector]]
+[def __is_allocator_selector__ [link container_gen.reference.is_allocator_selector `is_allocator_selector`]]
+[def _is_allocator_selector_ [link container_gen.reference.is_allocator_selector is_allocator_selector]]
+[def __is_container_selector__ [link container_gen.reference.is_container_selector `is_container_selector`]]
+[def _is_container_selector_ [link container_gen.reference.is_container_selector is_container_selector]]
+[def __is_reversible_selector__ [link container_gen.reference.is_reversible_selector `is_reversible_selector`]]
+[def _is_reversible_selector_ [link container_gen.reference.is_reversible_selector is_reversible_selector]]
+[def __is_random_access_selector__ [link container_gen.reference.is_random_access_selector `is_random_access_selector`]]
+[def _is_random_access_selector_ [link container_gen.reference.is_random_access_selector is_random_access_selector]]
+[def __is_associative_selector__ [link container_gen.reference.is_associative_selector `is_associative_selector`]]
+[def _is_associative_selector_ [link container_gen.reference.is_associative_selector is_associative_selector]]
+[def __is_unique_associative_selector__ [link container_gen.reference.is_unique_assoc_selector `is_unique_associative_selector`]]
+[def _is_unique_associative_selector_ [link container_gen.reference.is_unique_assoc_selector is_unique_associative_selector]]
+[def __is_multiple_associative_selector__ [link container_gen.reference.is_multiple_assoc_selector `is_multiple_associative_selector`]]
+[def _is_multiple_associative_selector_ [link container_gen.reference.is_multiple_assoc_selector is_multiple_associative_selector]]
+[def __is_flat_associative_selector__ [link container_gen.reference.is_flat_assoc_selector `is_flat_associative_selector`]]
+[def _is_flat_associative_selector_ [link container_gen.reference.is_flat_assoc_selector is_flat_associative_selector]]
+[def __is_hashed_associative_selector__ [link container_gen.reference.is_hashed_assoc_selector `is_hashed_associative_selector`]]
+[def _is_hashed_associative_selector_ [link container_gen.reference.is_hashed_assoc_selector is_hashed_associative_selector]]
+[def __is_tr1_selector__ [link container_gen.reference.is_tr1_selector `is_tr1_selector`]]
+[def _is_tr1_selector_ [link container_gen.reference.is_tr1_selector is_tr1_selector]]
+[def __is_ptr_selector__ [link container_gen.reference.is_ptr_selector `is_ptr_selector`]]
+[def _is_ptr_selector_ [link container_gen.reference.is_ptr_selector is_ptr_selector]]
+[def __is_queue_selector__ [link container_gen.reference.is_queue_selector `is_queue_selector`]]
+[def _is_queue_selector_ [link container_gen.reference.is_queue_selector is_queue_selector]]
+[def __is_stack_selector__ [link container_gen.reference.is_stack_selector `is_stack_selector`]]
+[def _is_stack_selector_ [link container_gen.reference.is_stack_selector is_stack_selector]]
+[def __is_std_heap_selector__ [link container_gen.reference.is_std_heap_selector `is_std_heap_selector`]]
+[def _is_std_heap_selector_ [link container_gen.reference.is_std_heap_selector is_std_heap_selector]]
+[def __is_heap_selector__ [link container_gen.reference.is_heap_selector `is_heap_selector`]]
+[def _is_heap_selector_ [link container_gen.reference.is_heap_selector is_heap_selector]]
+[def __is_iteratable_heap_selector__ [link container_gen.reference.is_iter_heap_selector `is_iteratable_heap_selector`]]
+[def _is_iteratable_heap_selector_ [link container_gen.reference.is_iter_heap_selector is_iteratable_heap_selector]]
+[def __is_order_iteratable_heap_selector__ [link container_gen.reference.is_ord_iter_heap_selector `is_order_iteratable_heap_selector`]]
+[def _is_order_iteratable_heap_selector_ [link container_gen.reference.is_ord_iter_heap_selector is_order_iteratable_heap_selector]]
+[def __is_mutable_heap_selector__ [link container_gen.reference.is_mutable_heap_selector `is_mutable_heap_selector`]]
+[def _is_mutable_heap_selector_ [link container_gen.reference.is_mutable_heap_selector is_mutable_heap_selector]]
+[def __is_mergeable_heap_selector__ [link container_gen.reference.is_mergeable_heap_selector `is_mergeable_heap_selector`]]
+[def _is_mergeable_heap_selector_ [link container_gen.reference.is_mergeable_heap_selector is_mergeable_heap_selector]]
+[def __is_recursive_selector__ [link container_gen.reference.is_recursive_selector `is_recursive_selector`]]
+[def _is_recursive_selector_ [link container_gen.reference.is_recursive_selector is_recursive_selector]]
+[def __has_stable_iterators_selector__ [link container_gen.reference.has_stable_iters_selector `has_stable_iterators_selector`]]
+[def _has_stable_iterators_selector_ [link container_gen.reference.has_stable_iters_selector has_stable_iterators_selector]]
+[def __has_emplace_member_function_selector__ [link container_gen.reference.has_emplace_mfunc_selector `has_emplace_member_function_selector`]]
+[def _has_emplace_member_function_selector_ [link container_gen.reference.has_emplace_mfunc_selector has_emplace_member_function_selector]]
+
+[/ Boost.ContainerGen utility reference links.]
+[def __is_mpl_boolean_constant__ [@../../../../libs/utility/doc/html/is_mpl_boolean_constant.html `boost::is_mpl_boolean_constant`]]
+[def __is_mpl_integral_constant__ [@../../../../libs/utility/doc/html/is_mpl_integral_constant.html `boost::is_mpl_integral_constant`]]
+[def __equivalence_function_gen__ [@../../../../libs/utility/doc/html/equivalence_function.html `boost::equivalence_function_gen`]]
+
+[/ Autogenerate reference documentation directly from code.]
+[/ Bypass Doxygen.]
+[import ../../../boost/container_gen/selectors_fwd.hpp]
+[import ../../../boost/container_gen/selectors.hpp]
+[import ../../../boost/container_gen/c_str_cmp_selectors_fwd.hpp]
+[import ../../../boost/container_gen/c_str_cmp_selectors.hpp]
+[import ../../../boost/container_gen/container_gen_fwd.hpp]
+[import ../../../boost/container_gen/container_gen.hpp]
+[import ../../../boost/container_gen/emplace_function_gen.hpp]
+[import ../../../boost/container_gen/emplace_assoc_function_gen.hpp]
+[import ../../../boost/container_gen/push_range_function_gen.hpp]
+[import ../../../boost/container_gen/insert_range_function_gen.hpp]
+[import ../../../boost/container_gen/splice_function_gen.hpp]
+[import ../../../boost/container_gen/insert_range_result_gen.hpp]
+[import ../../../boost/container_gen/is_compare_selector.hpp]
+[import ../../../boost/container_gen/is_hasher_selector.hpp]
+[import ../../../boost/container_gen/is_allocator_selector.hpp]
+[import ../../../boost/container_gen/is_container_selector.hpp]
+[import ../../../boost/container_gen/is_reversible_selector.hpp]
+[import ../../../boost/container_gen/is_random_access_selector.hpp]
+[import ../../../boost/container_gen/is_associative_selector.hpp]
+[import ../../../boost/container_gen/is_unique_assoc_selector.hpp]
+[import ../../../boost/container_gen/is_multiple_assoc_selector.hpp]
+[import ../../../boost/container_gen/is_flat_assoc_selector.hpp]
+[import ../../../boost/container_gen/is_hashed_assoc_selector.hpp]
+[import ../../../boost/container_gen/is_tr1_selector.hpp]
+[import ../../../boost/container_gen/is_ptr_selector.hpp]
+[import ../../../boost/container_gen/is_queue_selector.hpp]
+[import ../../../boost/container_gen/is_stack_selector.hpp]
+[import ../../../boost/container_gen/is_std_heap_selector.hpp]
+[import ../../../boost/container_gen/is_heap_selector.hpp]
+[import ../../../boost/container_gen/is_iteratable_heap_selector.hpp]
+[import ../../../boost/container_gen/is_order_iter_heap_selector.hpp]
+[import ../../../boost/container_gen/is_mutable_heap_selector.hpp]
+[import ../../../boost/container_gen/is_mergeable_heap_selector.hpp]
+[import ../../../boost/container_gen/is_recursive_selector.hpp]
+[import ../../../boost/container_gen/has_stable_iters_selector.hpp]
+[import ../../../boost/container_gen/has_emplace_mfunc_selector.hpp]
+[import ../../../libs/graph/example/container_gen.cpp]
+[import ../../../libs/container_gen/example/output_shape_stats.cpp]
+[import ../../../libs/container_gen/example/output_char_tallies.cpp]
+[import ../../../libs/container_gen/example/output_rearrangements.cpp]
+[import ../../../libs/container_gen/test/selectors.cpp]
+[import ../../../libs/container_gen/test/emplace_function_gen.cpp]
+[import ../../../libs/container_gen/test/result_range.hpp]
+[import ../../../libs/container_gen/test/push_range_function_gen.cpp]
+[import ../../../libs/container_gen/test/insert_range_function_gen.cpp]
+[import ../../../libs/container_gen/test/splice_function_gen.cpp]
+
+[/ index.html Start]
+
+[heading Rationale]
+Significant interest was expressed in moving the `container_gen` metafunction
+from its current place in the __BGL__ to a more general or first-class
+residence. The relevant discussion is archived here:
+[@http://lists.boost.org/Archives/boost/2011/05/181573.php].
+
+[/ index.html End]
+
+[include reference.qbk]
+[include changelog.qbk]
+

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/changelog.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/changelog.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,235 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Changelog</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="prev" href="reference/has_emplace_mfunc_selector.html" title="has_emplace_member_function_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/has_emplace_mfunc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="container_gen.changelog"></a><a class="link" href="changelog.html" title="Changelog">Changelog</a>
+</h2></div></div></div>
+<h4>
+<a name="container_gen.changelog.h0"></a>
+ <span class="phrase"><a name="container_gen.changelog.from_0_9_to_0_10"></a></span><a class="link" href="changelog.html#container_gen.changelog.from_0_9_to_0_10">From
+ 0.9 to 0.10</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+ Added the <code class="computeroutput"><span class="identifier">static_vector_selector</span></code>
+ template.
+ </p></li></ul></div>
+<h4>
+<a name="container_gen.changelog.h1"></a>
+ <span class="phrase"><a name="container_gen.changelog.from_0_8_to_0_9"></a></span><a class="link" href="changelog.html#container_gen.changelog.from_0_8_to_0_9">From
+ 0.8 to 0.9</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Added the <a class="link" href="reference/is_mergeable_heap_selector.html" title="is_mergeable_heap_selector"><code class="computeroutput"><span class="identifier">is_mergeable_heap_selector</span></code></a> introspection
+ metafunction.
+ </p></li>
+<li class="listitem"><p>
+ Added the <code class="computeroutput"><span class="identifier">equivalence_selector</span></code>
+ template.
+ </p></li>
+<li class="listitem"><p>
+ Added the <code class="computeroutput"><span class="identifier">binary_predicate_selector</span></code>,
+ <code class="computeroutput"><span class="identifier">tr1_binary_predicate_selector</span></code>,
+ and <code class="computeroutput"><span class="identifier">equivalenceS</span></code> types.
+ </p></li>
+</ul></div>
+<h4>
+<a name="container_gen.changelog.h2"></a>
+ <span class="phrase"><a name="container_gen.changelog.from_0_7_to_0_8"></a></span><a class="link" href="changelog.html#container_gen.changelog.from_0_7_to_0_8">From
+ 0.7 to 0.8</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Added the <a class="link" href="reference/is_compare_selector.html" title="is_compare_selector"><code class="computeroutput"><span class="identifier">is_compare_selector</span></code></a>, <a class="link" href="reference/is_hasher_selector.html" title="is_hasher_selector"><code class="computeroutput"><span class="identifier">is_hasher_selector</span></code></a>, <a class="link" href="reference/is_allocator_selector.html" title="is_allocator_selector"><code class="computeroutput"><span class="identifier">is_allocator_selector</span></code></a>, <a class="link" href="reference/is_container_selector.html" title="is_container_selector"><code class="computeroutput"><span class="identifier">is_container_selector</span></code></a>, <a class="link" href="reference/is_queue_selector.html" title="is_queue_selector"><code class="computeroutput"><span class="identifier">is_queue_selector</span></code></a>, <a class="link" href="reference/is_stack_selector.html" title="is_stack
 _selector"><code class="computeroutput"><span class="identifier">is_stack_selector</span></code></a>, <a class="link" href="reference/is_std_heap_selector.html" title="is_std_heap_selector"><code class="computeroutput"><span class="identifier">is_std_heap_selector</span></code></a>, <a class="link" href="reference/is_heap_selector.html" title="is_heap_selector"><code class="computeroutput"><span class="identifier">is_heap_selector</span></code></a>, <a class="link" href="reference/is_iter_heap_selector.html" title="is_iteratable_heap_selector"><code class="computeroutput"><span class="identifier">is_iteratable_heap_selector</span></code></a>,
+ <a class="link" href="reference/is_ord_iter_heap_selector.html" title="is_order_iteratable_heap_selector"><code class="computeroutput"><span class="identifier">is_order_iteratable_heap_selector</span></code></a>,
+ and <a class="link" href="reference/is_mutable_heap_selector.html" title="is_mutable_heap_selector"><code class="computeroutput"><span class="identifier">is_mutable_heap_selector</span></code></a> introspection
+ metafunctions.
+ </p></li>
+<li class="listitem"><p>
+ Added the <code class="computeroutput"><span class="identifier">c_str_greater_than_selector</span></code>
+ type.
+ </p></li>
+<li class="listitem"><p>
+ Renamed <code class="computeroutput"><span class="identifier">c_str_equivalence_selector</span></code>
+ to <code class="computeroutput"><span class="identifier">c_str_equal_to_selector</span></code>.
+ </p></li>
+<li class="listitem"><p>
+ Renamed <code class="computeroutput"><span class="identifier">c_str_ordering_selector</span></code>
+ to <code class="computeroutput"><span class="identifier">c_str_less_than_selector</span></code>.
+ </p></li>
+<li class="listitem"><p>
+ Selector template arguments are now Boost.Parameter-enabled and (mostly) deducible.
+ </p></li>
+<li class="listitem"><p>
+ Removed the <code class="computeroutput"><span class="identifier">has_front_not_top_member_function_selector</span></code>
+ introspection metafunction.
+ </p></li>
+<li class="listitem"><p>
+ Modified <a class="link" href="reference/is_tr1_selector.html" title="is_tr1_selector"><code class="computeroutput"><span class="identifier">is_tr1_selector</span></code></a> to evaluate to
+ boost::mpl::true_
+ when passed in <code class="computeroutput"><span class="identifier">tr1_hash_selector</span></code>.
+ </p></li>
+</ul></div>
+<h4>
+<a name="container_gen.changelog.h3"></a>
+ <span class="phrase"><a name="container_gen.changelog.from_0_6_to_0_7"></a></span><a class="link" href="changelog.html#container_gen.changelog.from_0_6_to_0_7">From
+ 0.6 to 0.7</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Added the <code class="computeroutput"><span class="identifier">stack_selector</span></code>,
+ <code class="computeroutput"><span class="identifier">queue_selector</span></code>, <code class="computeroutput"><span class="identifier">std_heap_selector</span></code>, <code class="computeroutput"><span class="identifier">priority_queue_selector</span></code>,
+ <code class="computeroutput"><span class="identifier">d_ary_heap_selector</span></code>, <code class="computeroutput"><span class="identifier">binomial_heap_selector</span></code>, <code class="computeroutput"><span class="identifier">fibonacci_heap_selector</span></code>, <code class="computeroutput"><span class="identifier">pairing_heap_selector</span></code>, and <code class="computeroutput"><span class="identifier">skew_heap_selector</span></code> templates.
+ </p></li>
+<li class="listitem"><p>
+ Added the <code class="computeroutput"><span class="identifier">greater_than_selector</span></code>,
+ <code class="computeroutput"><span class="identifier">stackS</span></code>, <code class="computeroutput"><span class="identifier">queueS</span></code>,
+ <code class="computeroutput"><span class="identifier">std_heapS</span></code>, <code class="computeroutput"><span class="identifier">priority_queueS</span></code>, <code class="computeroutput"><span class="identifier">binomial_heapS</span></code>,
+ <code class="computeroutput"><span class="identifier">fibonacci_heapS</span></code>, <code class="computeroutput"><span class="identifier">pairing_heapS</span></code>, and <code class="computeroutput"><span class="identifier">skew_heapS</span></code>
+ selector types.
+ </p></li>
+<li class="listitem"><p>
+ Renamed <code class="computeroutput"><span class="identifier">default_eqivalance_selector</span></code>
+ to <code class="computeroutput"><span class="identifier">equal_to_selector</span></code>.
+ </p></li>
+<li class="listitem"><p>
+ Renamed <code class="computeroutput"><span class="identifier">default_ordering_selector</span></code>
+ to <code class="computeroutput"><span class="identifier">less_than_selector</span></code>.
+ </p></li>
+<li class="listitem"><p>
+ Added the <code class="computeroutput"><span class="identifier">has_front_not_top_member_function_selector</span></code>
+ introspection metafunction.
+ </p></li>
+</ul></div>
+<h4>
+<a name="container_gen.changelog.h4"></a>
+ <span class="phrase"><a name="container_gen.changelog.from_0_5_to_0_6"></a></span><a class="link" href="changelog.html#container_gen.changelog.from_0_5_to_0_6">From
+ 0.5 to 0.6</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+ Added the <a class="link" href="reference/push_range_function_gen.html" title="push_range_function_gen"><code class="computeroutput"><span class="identifier">push_range_function_gen</span></code></a>, <a class="link" href="reference/insert_range_function_gen.html" title="insert_range_function_gen"><code class="computeroutput"><span class="identifier">insert_range_function_gen</span></code></a>, <a class="link" href="reference/splice_function_gen.html" title="splice_function_gen"><code class="computeroutput"><span class="identifier">splice_function_gen</span></code></a>,
+ and <a class="link" href="reference/insert_range_function_gen.html" title="insert_range_function_gen"><code class="computeroutput"><span class="identifier">insert_range_function_gen</span></code></a> type-generating
+ metafunctions.
+ </p></li></ul></div>
+<h4>
+<a name="container_gen.changelog.h5"></a>
+ <span class="phrase"><a name="container_gen.changelog.from_0_4_to_0_5"></a></span><a class="link" href="changelog.html#container_gen.changelog.from_0_4_to_0_5">From
+ 0.4 to 0.5</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Added the <a class="link" href="reference/is_reversible_selector.html" title="is_reversible_selector"><code class="computeroutput"><span class="identifier">is_reversible_selector</span></code></a> introspection
+ metafunction.
+ </p></li>
+<li class="listitem"><p>
+ Moved Boost.Typeof
+ registration header files for selectors.
+ </p></li>
+</ul></div>
+<h4>
+<a name="container_gen.changelog.h6"></a>
+ <span class="phrase"><a name="container_gen.changelog.from_0_3_to_0_4"></a></span><a class="link" href="changelog.html#container_gen.changelog.from_0_3_to_0_4">From
+ 0.3 to 0.4</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+ Added the <code class="computeroutput"><span class="identifier">c_str_equivalence_selector</span></code>
+ and <code class="computeroutput"><span class="identifier">c_str_ordering_selector</span></code>
+ types.
+ </p></li></ul></div>
+<h4>
+<a name="container_gen.changelog.h7"></a>
+ <span class="phrase"><a name="container_gen.changelog.from_0_2_to_0_3"></a></span><a class="link" href="changelog.html#container_gen.changelog.from_0_2_to_0_3">From
+ 0.2 to 0.3</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Moved from Boost.Utility
+ to top level.
+ </p></li>
+<li class="listitem"><p>
+ Removed the <code class="computeroutput"><span class="identifier">ptr_container_gen</span></code>
+ metafunction and the <code class="computeroutput"><span class="identifier">associative_container_gen</span></code>
+ and <code class="computeroutput"><span class="identifier">ptr_associative_container_gen</span></code>
+ metafunction classes.
+ </p></li>
+<li class="listitem"><p>
+ Added selector templates. See <a class="link" href="reference/selectors.html" title="Selectors"><span class="bold"><strong>Selectors</strong></span></a>.
+ </p></li>
+<li class="listitem"><p>
+ Added the <a class="link" href="reference/emplace_function_gen.html" title="emplace_function_gen"><code class="computeroutput"><span class="identifier">emplace_function_gen</span></code></a> and <a class="link" href="reference/emplace_assoc_function_gen.html" title="emplace_associative_function_gen"><code class="computeroutput"><span class="identifier">emplace_associative_function_gen</span></code></a>
+ type-generating metafunctions.
+ </p></li>
+<li class="listitem"><p>
+ Added the <a class="link" href="reference/is_flat_assoc_selector.html" title="is_flat_associative_selector"><code class="computeroutput"><span class="identifier">is_flat_associative_selector</span></code></a>,
+ <a class="link" href="reference/is_ptr_selector.html" title="is_ptr_selector"><code class="computeroutput"><span class="identifier">is_ptr_selector</span></code></a>,
+ <a class="link" href="reference/is_recursive_selector.html" title="is_recursive_selector"><code class="computeroutput"><span class="identifier">is_recursive_selector</span></code></a>, <a class="link" href="reference/is_tr1_selector.html" title="is_tr1_selector"><code class="computeroutput"><span class="identifier">is_tr1_selector</span></code></a>, and <a class="link" href="reference/has_emplace_mfunc_selector.html" title="has_emplace_member_function_selector"><code class="computeroutput"><span class="identifier">has_emplace_member_function_selector</span></code></a>
+ introspection metafunctions.
+ </p></li>
+<li class="listitem"><p>
+ Renamed <code class="computeroutput"><span class="identifier">is_unordered_selector</span></code>
+ to <a class="link" href="reference/is_hashed_assoc_selector.html" title="is_hashed_associative_selector"><code class="computeroutput"><span class="identifier">is_hashed_associative_selector</span></code></a>.
+ </p></li>
+<li class="listitem"><p>
+ Removed the <code class="computeroutput"><span class="identifier">boost_vecS</span></code>,
+ <code class="computeroutput"><span class="identifier">boost_dequeS</span></code>, <code class="computeroutput"><span class="identifier">boost_listS</span></code>, <code class="computeroutput"><span class="identifier">boost_slistS</span></code>,
+ <code class="computeroutput"><span class="identifier">boost_setS</span></code>, <code class="computeroutput"><span class="identifier">boost_mapS</span></code>, <code class="computeroutput"><span class="identifier">boost_multisetS</span></code>,
+ and <code class="computeroutput"><span class="identifier">boost_multimapS</span></code> selector
+ type definitions.
+ </p></li>
+<li class="listitem"><p>
+ Modified boost::adjacency_list so that it also
+ recognizes new selector types (except when <a class="link" href="reference/is_ptr_selector.html" title="is_ptr_selector"><code class="computeroutput"><span class="identifier">is_ptr_selector</span></code></a> evaluates to
+ boost::mpl::true_).
+ </p></li>
+</ul></div>
+<h4>
+<a name="container_gen.changelog.h8"></a>
+ <span class="phrase"><a name="container_gen.changelog.from_0_1_to_0_2"></a></span><a class="link" href="changelog.html#container_gen.changelog.from_0_1_to_0_2">From
+ 0.1 to 0.2</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ Added the <code class="computeroutput"><span class="identifier">boost_vecS</span></code>,
+ <code class="computeroutput"><span class="identifier">stable_vecS</span></code>, <code class="computeroutput"><span class="identifier">boost_dequeS</span></code>, <code class="computeroutput"><span class="identifier">boost_listS</span></code>,
+ <code class="computeroutput"><span class="identifier">boost_slistS</span></code>, <code class="computeroutput"><span class="identifier">boost_setS</span></code>, <code class="computeroutput"><span class="identifier">boost_mapS</span></code>,
+ <code class="computeroutput"><span class="identifier">boost_multisetS</span></code>, <code class="computeroutput"><span class="identifier">boost_multimapS</span></code>, <code class="computeroutput"><span class="identifier">flat_setS</span></code>,
+ <code class="computeroutput"><span class="identifier">flat_mapS</span></code>, <code class="computeroutput"><span class="identifier">flat_multisetS</span></code>, and <code class="computeroutput"><span class="identifier">flat_multimapS</span></code>
+ selector types.
+ </p></li>
+<li class="listitem"><p>
+ Added the <a class="link" href="reference/is_associative_selector.html" title="is_associative_selector"><code class="computeroutput"><span class="identifier">is_associative_selector</span></code></a>, <a class="link" href="reference/is_multiple_assoc_selector.html" title="is_multiple_associative_selector"><code class="computeroutput"><span class="identifier">is_multiple_associative_selector</span></code></a>,
+ <code class="computeroutput"><span class="identifier">is_unordered_selector</span></code>,
+ and <a class="link" href="reference/has_stable_iters_selector.html" title="has_stable_iterators_selector"><code class="computeroutput"><span class="identifier">has_stable_iterators_selector</span></code></a>
+ introspection metafunctions.
+ </p></li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/has_emplace_mfunc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,147 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Reference</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="prev" href="../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="next" href="reference/selectors.html" title="Selectors">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/selectors.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="container_gen.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
+</h2></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+ <a class="link" href="reference/selectors.html" title="Selectors"><span class="bold"><strong>Selectors</strong></span></a>
+ </p></li></ul></div>
+<h4>
+<a name="container_gen.reference.h0"></a>
+ <span class="phrase"><a name="container_gen.reference.type_generation_metafunctions"></a></span><a class="link" href="reference.html#container_gen.reference.type_generation_metafunctions">Type
+ Generation Metafunctions</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ <a class="link" href="reference/container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/emplace_function_gen.html" title="emplace_function_gen"><code class="computeroutput"><span class="identifier">emplace_function_gen</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/emplace_assoc_function_gen.html" title="emplace_associative_function_gen"><code class="computeroutput"><span class="identifier">emplace_associative_function_gen</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/push_range_function_gen.html" title="push_range_function_gen"><code class="computeroutput"><span class="identifier">push_range_function_gen</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/insert_range_function_gen.html" title="insert_range_function_gen"><code class="computeroutput"><span class="identifier">insert_range_function_gen</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/splice_function_gen.html" title="splice_function_gen"><code class="computeroutput"><span class="identifier">splice_function_gen</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/insert_range_result_gen.html" title="insert_range_result_gen"><code class="computeroutput"><span class="identifier">insert_range_result_gen</span></code></a>
+ </p></li>
+</ul></div>
+<h4>
+<a name="container_gen.reference.h1"></a>
+ <span class="phrase"><a name="container_gen.reference.selector_introspection_metafunct"></a></span><a class="link" href="reference.html#container_gen.reference.selector_introspection_metafunct">Selector
+ Introspection Metafunctions</a>
+ </h4>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ <a class="link" href="reference/is_container_selector.html" title="is_container_selector"><code class="computeroutput"><span class="identifier">is_container_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_compare_selector.html" title="is_compare_selector"><code class="computeroutput"><span class="identifier">is_compare_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_hasher_selector.html" title="is_hasher_selector"><code class="computeroutput"><span class="identifier">is_hasher_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_allocator_selector.html" title="is_allocator_selector"><code class="computeroutput"><span class="identifier">is_allocator_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_reversible_selector.html" title="is_reversible_selector"><code class="computeroutput"><span class="identifier">is_reversible_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_random_access_selector.html" title="is_random_access_selector"><code class="computeroutput"><span class="identifier">is_random_access_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_associative_selector.html" title="is_associative_selector"><code class="computeroutput"><span class="identifier">is_associative_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_unique_assoc_selector.html" title="is_unique_associative_selector"><code class="computeroutput"><span class="identifier">is_unique_associative_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_multiple_assoc_selector.html" title="is_multiple_associative_selector"><code class="computeroutput"><span class="identifier">is_multiple_associative_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_flat_assoc_selector.html" title="is_flat_associative_selector"><code class="computeroutput"><span class="identifier">is_flat_associative_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_hashed_assoc_selector.html" title="is_hashed_associative_selector"><code class="computeroutput"><span class="identifier">is_hashed_associative_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_tr1_selector.html" title="is_tr1_selector"><code class="computeroutput"><span class="identifier">is_tr1_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_ptr_selector.html" title="is_ptr_selector"><code class="computeroutput"><span class="identifier">is_ptr_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_queue_selector.html" title="is_queue_selector"><code class="computeroutput"><span class="identifier">is_queue_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_stack_selector.html" title="is_stack_selector"><code class="computeroutput"><span class="identifier">is_stack_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_std_heap_selector.html" title="is_std_heap_selector"><code class="computeroutput"><span class="identifier">is_std_heap_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_heap_selector.html" title="is_heap_selector"><code class="computeroutput"><span class="identifier">is_heap_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_iter_heap_selector.html" title="is_iteratable_heap_selector"><code class="computeroutput"><span class="identifier">is_iteratable_heap_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_ord_iter_heap_selector.html" title="is_order_iteratable_heap_selector"><code class="computeroutput"><span class="identifier">is_order_iteratable_heap_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_mutable_heap_selector.html" title="is_mutable_heap_selector"><code class="computeroutput"><span class="identifier">is_mutable_heap_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_mergeable_heap_selector.html" title="is_mergeable_heap_selector"><code class="computeroutput"><span class="identifier">is_mergeable_heap_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/is_recursive_selector.html" title="is_recursive_selector"><code class="computeroutput"><span class="identifier">is_recursive_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/has_stable_iters_selector.html" title="has_stable_iterators_selector"><code class="computeroutput"><span class="identifier">has_stable_iterators_selector</span></code></a>
+ </p></li>
+<li class="listitem"><p>
+ <a class="link" href="reference/has_emplace_mfunc_selector.html" title="has_emplace_member_function_selector"><code class="computeroutput"><span class="identifier">has_emplace_member_function_selector</span></code></a>
+ </p></li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/selectors.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/container_gen.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/container_gen.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,400 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>container_gen</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="selectors.html" title="Selectors">
+<link rel="next" href="emplace_function_gen.html" title="emplace_function_gen">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="selectors.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.container_gen"></a><a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.container_gen.synopsis"></a><a class="link" href="container_gen.html#container_gen.reference.container_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">container_gen</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.container_gen.description"></a><a class="link" href="container_gen.html#container_gen.reference.container_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The boost::adjacency_list class template
+ uses this metafunction to map the <code class="computeroutput"><span class="identifier">OutEdgeList</span></code>
+ and <code class="computeroutput"><span class="identifier">VertexList</span></code> selectors
+ to the actual container types used for the graph storage. You can also
+ use this metafunction to determine the appropriate associative container
+ type given the specified selector. The example routine below uses the
+ <code class="computeroutput"><span class="identifier">container_gen</span></code> return type
+ to associate each distinct string character with the number of times it
+ appears in the string.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">output_char_tallies</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">str</span><span class="special">,</span> <span class="identifier">Selector</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="keyword">char</span><span class="special">,</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">FrequencyTable</span><span class="special">;</span>
+
+ <span class="identifier">FrequencyTable</span> <span class="identifier">freq_table</span><span class="special">;</span>
+
+ <span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">typename</span> <span class="identifier">FrequencyTable</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">ft_itr</span> <span class="special">=</span> <span class="identifier">freq_table</span><span class="special">.</span><span class="identifier">find</span><span class="special">(</span><span class="identifier">str</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">ft_itr</span> <span class="special">==</span> <span class="identifier">freq_table</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span>
+ <span class="special">{</span>
+ <span class="identifier">freq_table</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">FrequencyTable</span><span class="special">::</span><span class="identifier">value_type</span><span class="special">(</span><span class="identifier">str</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="number">1</span><span class="special">));</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span>
+ <span class="special">{</span>
+ <span class="special">++</span><span class="identifier">ft_itr</span><span class="special">-&gt;</span><span class="identifier">second</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+
+ <span class="keyword">for</span> <span class="special">(</span>
+ <span class="keyword">typename</span> <span class="identifier">FrequencyTable</span><span class="special">::</span><span class="identifier">const_iterator</span> <span class="identifier">ft_itr</span> <span class="special">=</span> <span class="identifier">freq_table</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+ <span class="identifier">ft_itr</span> <span class="special">!=</span> <span class="identifier">freq_table</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+ <span class="special">++</span><span class="identifier">ft_itr</span>
+ <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">ft_itr</span><span class="special">-&gt;</span><span class="identifier">first</span> <span class="special">&lt;&lt;</span> <span class="string">": "</span> <span class="special">&lt;&lt;</span> <span class="identifier">ft_itr</span><span class="special">-&gt;</span><span class="identifier">second</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This library provides specializations of this metafunction class for each
+ selector it provides whose resulting storage type models the STL Container concept. Here, two such selectors
+ are passed in calls to the example routine.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">**)</span>
+<span class="special">{</span>
+ <span class="identifier">output_char_tallies</span><span class="special">(</span><span class="string">"abacadabra"</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">());</span>
+ <span class="identifier">output_char_tallies</span><span class="special">(</span><span class="string">"loolapalooza"</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">());</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">container_gen</span></code> specialization
+ for the <code class="computeroutput"><span class="identifier">stable_vector_selector</span></code>
+ template is shown here.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">ValueType</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">container_gen</span><span class="special">&lt;</span>
+ <span class="identifier">stable_vector_selector</span><span class="special">&lt;</span><span class="identifier">AllocatorSelector</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="identifier">ValueType</span>
+ <span class="special">,</span> <span class="keyword">void</span>
+ <span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">stable_vector</span><span class="special">&lt;</span>
+ <span class="identifier">ValueType</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap1</span><span class="special">&lt;</span>
+ <span class="identifier">AllocatorSelector</span>
+ <span class="special">,</span> <span class="identifier">ValueType</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">&gt;</span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">ConstantCapacity</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">ValueType</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">container_gen</span><span class="special">&lt;</span>
+ <span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">ConstantCapacity</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="identifier">ValueType</span>
+ <span class="special">,</span> <span class="keyword">void</span>
+ <span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">static_vector</span><span class="special">&lt;</span>
+ <span class="identifier">ValueType</span>
+ <span class="special">,</span> <span class="identifier">ConstantCapacity</span><span class="special">::</span><span class="identifier">value</span>
+ <span class="special">&gt;</span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+<p>
+ You can use <code class="computeroutput"><span class="identifier">container_gen</span></code>
+ to easily select an appropriate Boost.PointerContainer type. Pointer containers
+ are ideal for storing heterogeneous items with a common base type, e.g.
+ shapes:
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_shape</span>
+<span class="special">{</span>
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">my_shape</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">virtual</span> <span class="keyword">double</span> <span class="identifier">compute_perimeter</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+
+ <span class="keyword">virtual</span> <span class="keyword">double</span> <span class="identifier">compute_area</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">your_square</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">my_shape</span>
+<span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">length</span><span class="special">;</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">explicit</span> <span class="identifier">your_square</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">s</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">length</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">double</span> <span class="identifier">compute_perimeter</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">length</span> <span class="special">*</span> <span class="number">4.0</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">double</span> <span class="identifier">compute_area</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">length</span> <span class="special">*</span> <span class="identifier">length</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">your_circle</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">my_shape</span>
+<span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">radius</span><span class="special">;</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">explicit</span> <span class="identifier">your_circle</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">r</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">radius</span><span class="special">(</span><span class="identifier">r</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">double</span> <span class="identifier">compute_perimeter</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;()</span> <span class="special">*</span> <span class="identifier">radius</span> <span class="special">*</span> <span class="number">2.0</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">double</span> <span class="identifier">compute_area</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;()</span> <span class="special">*</span> <span class="identifier">radius</span> <span class="special">*</span> <span class="identifier">radius</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">class</span> <span class="identifier">some_right_triangle</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">my_shape</span>
+<span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">base</span><span class="special">;</span>
+ <span class="keyword">double</span> <span class="identifier">height</span><span class="special">;</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">some_right_triangle</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">b</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">h</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">base</span><span class="special">(</span><span class="identifier">b</span><span class="special">),</span> <span class="identifier">height</span><span class="special">(</span><span class="identifier">h</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="identifier">some_right_triangle</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">base</span><span class="special">(</span><span class="number">1.0</span><span class="special">),</span> <span class="identifier">height</span><span class="special">(</span><span class="number">1.0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">double</span> <span class="identifier">compute_perimeter</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">base</span> <span class="special">*</span> <span class="identifier">base</span> <span class="special">+</span> <span class="identifier">height</span> <span class="special">*</span> <span class="identifier">height</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">base</span> <span class="special">+</span> <span class="identifier">height</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">double</span> <span class="identifier">compute_area</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">half</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;()</span> <span class="special">*</span> <span class="identifier">base</span> <span class="special">*</span> <span class="identifier">height</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ Many algorithms that work on the standard containers also work on pointer
+ containers out of the box.
+ </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">add_perimeter</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">my_shape</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">shape</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">shape</span><span class="special">.</span><span class="identifier">compute_perimeter</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">value</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">double</span> <span class="identifier">add_area</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">value</span><span class="special">,</span> <span class="identifier">my_shape</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">shape</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">shape</span><span class="special">.</span><span class="identifier">compute_area</span><span class="special">()</span> <span class="special">+</span> <span class="identifier">value</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Shapes</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">output_shape_stats</span><span class="special">(</span><span class="identifier">Shapes</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">shapes</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Total perimeter length = "</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulate</span><span class="special">(</span>
+ <span class="identifier">shapes</span>
+ <span class="special">,</span> <span class="number">0.0</span>
+ <span class="special">,</span> <span class="identifier">add_perimeter</span>
+ <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Total area = "</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulate</span><span class="special">(</span>
+ <span class="identifier">shapes</span>
+ <span class="special">,</span> <span class="number">0.0</span>
+ <span class="special">,</span> <span class="identifier">add_area</span>
+ <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">container_gen</span></code> metafunction
+ allows you to programmatically swap out different pointer container types
+ using type selectors.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">**)</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">,</span><span class="identifier">my_shape</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">shapes</span><span class="special">;</span>
+
+ <span class="identifier">shapes</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">your_square</span><span class="special">());</span>
+ <span class="identifier">shapes</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">your_circle</span><span class="special">());</span>
+ <span class="identifier">shapes</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="keyword">new</span> <span class="identifier">some_right_triangle</span><span class="special">());</span>
+
+ <span class="identifier">output_shape_stats</span><span class="special">(</span><span class="identifier">shapes</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ You can also use <code class="computeroutput"><span class="identifier">container_gen</span></code>
+ to select an appropriate STL container adaptor or Boost.Heap data structure. Stacks and priority
+ queues work well for reordering items stored in other containers.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Buffer</span><span class="special">&gt;</span>
+<span class="identifier">Value</span> <span class="identifier">output_next</span><span class="special">(</span><span class="identifier">Buffer</span><span class="special">&amp;</span> <span class="identifier">buffer</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">buffer</span><span class="special">.</span><span class="identifier">front</span><span class="special">();</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Buffer</span><span class="special">&gt;</span>
+<span class="identifier">Value</span> <span class="identifier">output_next</span><span class="special">(</span><span class="identifier">Buffer</span><span class="special">&amp;</span> <span class="identifier">buffer</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">buffer</span><span class="special">.</span><span class="identifier">top</span><span class="special">();</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Itr</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">output_rearrangement</span><span class="special">(</span><span class="identifier">Itr</span> <span class="identifier">itr</span><span class="special">,</span> <span class="identifier">Itr</span> <span class="identifier">itr_end</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_value</span><span class="special">&lt;</span><span class="identifier">Itr</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">Value</span><span class="special">;</span>
+
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Value</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">buffer</span><span class="special">;</span>
+
+ <span class="keyword">for</span> <span class="special">(;</span> <span class="identifier">itr</span> <span class="special">!=</span> <span class="identifier">itr_end</span><span class="special">;</span> <span class="special">++</span><span class="identifier">itr</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">buffer</span><span class="special">.</span><span class="identifier">push</span><span class="special">(*</span><span class="identifier">itr</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">for</span> <span class="special">(;</span> <span class="special">!</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">empty</span><span class="special">();</span> <span class="identifier">buffer</span><span class="special">.</span><span class="identifier">pop</span><span class="special">())</span>
+ <span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">" "</span> <span class="special">&lt;&lt;</span> <span class="identifier">output_next</span><span class="special">&lt;</span><span class="identifier">Value</span><span class="special">&gt;(</span>
+ <span class="identifier">buffer</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;()</span>
+ <span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Again, thanks to the <code class="computeroutput"><span class="identifier">container_gen</span></code>
+ metafunction, you can use type selectors to swap out different container
+ adaptor and heap types.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">**)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">int_list</span><span class="special">;</span>
+
+ <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
+ <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">3</span><span class="special">);</span>
+ <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Original list:"</span><span class="special">;</span>
+ <span class="identifier">output_rearrangement</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;(</span><span class="identifier">int_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"In reverse:"</span><span class="special">;</span>
+ <span class="identifier">output_rearrangement</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;(</span><span class="identifier">int_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"With STL priority_queue:"</span><span class="special">;</span>
+ <span class="identifier">output_rearrangement</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">&gt;(</span><span class="identifier">int_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"With Boost priority_queue:"</span><span class="special">;</span>
+ <span class="identifier">output_rearrangement</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">&gt;(</span><span class="identifier">int_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"With 4-ary heap sort:"</span><span class="special">;</span>
+ <span class="identifier">output_rearrangement</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span> <span class="comment">// deduced Boost.Parameter tpl-arg</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="comment">// explicit Boost.Parameter tpl-arg</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;(</span><span class="identifier">int_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"With binomial heap sort:"</span><span class="special">;</span>
+ <span class="identifier">output_rearrangement</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">&gt;(</span><span class="identifier">int_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"With Fibonacci heap sort:"</span><span class="special">;</span>
+ <span class="identifier">output_rearrangement</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">&gt;(</span><span class="identifier">int_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"With pairing heap sort:"</span><span class="special">;</span>
+ <span class="identifier">output_rearrangement</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">&gt;(</span><span class="identifier">int_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"With skew heap sort:"</span><span class="special">;</span>
+ <span class="identifier">output_rearrangement</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">&gt;(</span><span class="identifier">int_list</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">int_list</span><span class="special">.</span><span class="identifier">end</span><span class="special">());</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ It is possible to nest associative containers via <code class="computeroutput"><span class="identifier">container_gen</span></code>,
+ e.g.:
+ </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">container_gen</span><span class="special">&lt;</span>
+ <span class="identifier">mapS</span>
+ <span class="special">,</span> <span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">setS</span><span class="special">,</span><span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">,</span> std::string
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">MapOfCharSets2Strings</span><span class="special">;</span>
+</pre>
+<p>
+ Finally, to use some other container of your choice, define a selector
+ class and then specialize this metafunction for your selector.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.container_gen.definition"></a><a class="link" href="container_gen.html#container_gen.reference.container_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/container_gen.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ Forward declaration:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/container_gen_fwd.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="selectors.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/emplace_assoc_function_gen.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/emplace_assoc_function_gen.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,121 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>emplace_associative_function_gen</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="emplace_function_gen.html" title="emplace_function_gen">
+<link rel="next" href="push_range_function_gen.html" title="push_range_function_gen">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="push_range_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.emplace_assoc_function_gen"></a><a class="link" href="emplace_assoc_function_gen.html" title="emplace_associative_function_gen"><code class="computeroutput"><span class="identifier">emplace_associative_function_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.emplace_assoc_function_gen.synopsis"></a><a class="link" href="emplace_assoc_function_gen.html#container_gen.reference.emplace_assoc_function_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">emplace_associative_function_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.emplace_assoc_function_gen.description"></a><a class="link" href="emplace_assoc_function_gen.html#container_gen.reference.emplace_assoc_function_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Returns a Default Constructible n-ary function object
+ type whose first argument type is a reference to an Associative Container and whose second argument
+ type is convertible to the container's key type. In practice, the type
+ of this container must be produced by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> when given the same
+ selector template argument. The rest of the function object's arguments,
+ if any, will be forwarded either to the container's emplacement method
+ (if <a class="link" href="has_emplace_mfunc_selector.html" title="has_emplace_member_function_selector"><code class="computeroutput"><span class="identifier">has_emplace_member_function_selector</span></code></a>
+ returns boost::mpl::true_ for the given selector)
+ or to the mapped type's matching constructor. The call operator's return
+ value is a std::pair whose second element evaluates
+ to <code class="computeroutput"><span class="keyword">true</span></code> upon successful insertion
+ and whose first element is an iterator pointing to the key-value pair inserted.
+ </p>
+<p>
+ The return type of this metafunction also defines an indexing operator
+ that accepts a reference to a container and returns a proxy object that
+ allows emplacement function calls to be chained together, much like Boost.Assign.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.emplace_assoc_function_gen.definition"></a><a class="link" href="emplace_assoc_function_gen.html#container_gen.reference.emplace_assoc_function_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/emplace_assoc_function_gen.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.emplace_assoc_function_gen.example"></a><a class="link" href="emplace_assoc_function_gen.html#container_gen.reference.emplace_assoc_function_gen.example" title="Example">Example</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">example</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typename</span> <a class="link" href="container_gen.html" title="container_gen">container_gen</a><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="keyword">int</span><span class="special">,</span>std::string<span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">c1</span><span class="special">,</span> <span class="identifier">c2</span><span class="special">,</span> <span class="identifier">c3</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">emplace_associative_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">emplacer</span><span class="special">;</span>
+
+ BOOST_AUTO_TPL<span class="special">(</span><span class="identifier">result1</span><span class="special">,</span> <span class="identifier">emplacer</span><span class="special">(</span><span class="identifier">c1</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">,</span> <span class="string">"Hello,"</span><span class="special">));</span>
+ BOOST_AUTO_TPL<span class="special">(</span><span class="identifier">result2</span><span class="special">,</span> <span class="identifier">emplacer</span><span class="special">(</span><span class="identifier">c2</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">,</span> <span class="string">"Hello,"</span><span class="special">));</span>
+ BOOST_ASSERT<span class="special">(</span><span class="identifier">result1</span> <span class="special">==</span> <span class="identifier">result2</span><span class="special">);</span>
+
+ <span class="identifier">result1</span> <span class="special">=</span> <span class="identifier">emplacer</span><span class="special">(</span><span class="identifier">c1</span><span class="special">,</span> <span class="number">42</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">);</span>
+ <span class="identifier">result2</span> <span class="special">=</span> <span class="identifier">emplacer</span><span class="special">(</span><span class="identifier">c2</span><span class="special">,</span> <span class="number">42</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">);</span>
+ BOOST_ASSERT<span class="special">(</span><span class="identifier">result1</span> <span class="special">==</span> <span class="identifier">result2</span><span class="special">);</span>
+ BOOST_ASSERT<span class="special">(</span>boost::range::equal<span class="special">(</span><span class="identifier">c1</span><span class="special">,</span> <span class="identifier">c2</span><span class="special">));</span>
+
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">c3</span><span class="special">](-</span><span class="number">1</span><span class="special">,</span> <span class="string">"Hello,"</span><span class="special">)(</span><span class="number">42</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">);</span>
+ BOOST_ASSERT<span class="special">(</span>boost::range::equal<span class="special">(</span><span class="identifier">c1</span><span class="special">,</span> <span class="identifier">c3</span><span class="special">));</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">example</span><span class="special">&lt;</span><a class="link" href="selectors.html" title="Selectors">boost::map_selector</a><span class="special">&lt;</span>boost::mpl::true_<span class="special">&gt;</span> <span class="special">&gt;();</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.emplace_assoc_function_gen.test"></a><a class="link" href="emplace_assoc_function_gen.html#container_gen.reference.emplace_assoc_function_gen.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/emplace_assoc_function_gen.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="push_range_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/emplace_function_gen.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/emplace_function_gen.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,126 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>emplace_function_gen</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="container_gen.html" title="container_gen">
+<link rel="next" href="emplace_assoc_function_gen.html" title="emplace_associative_function_gen">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="container_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_assoc_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.emplace_function_gen"></a><a class="link" href="emplace_function_gen.html" title="emplace_function_gen"><code class="computeroutput"><span class="identifier">emplace_function_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.emplace_function_gen.synopsis"></a><a class="link" href="emplace_function_gen.html#container_gen.reference.emplace_function_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">emplace_function_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.emplace_function_gen.description"></a><a class="link" href="emplace_function_gen.html#container_gen.reference.emplace_function_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Returns a Default Constructible n-ary function object
+ type whose first argument type is a reference to a container. In practice,
+ the type of this container must be produced by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> when given the same
+ selector template argument. The rest of the function object's arguments,
+ if any, will be forwarded either to the container's emplacement method
+ (if <a class="link" href="has_emplace_mfunc_selector.html" title="has_emplace_member_function_selector"><code class="computeroutput"><span class="identifier">has_emplace_member_function_selector</span></code></a>
+ returns boost::mpl::true_ for the given selector)
+ or to the value type's matching constructor.
+ </p>
+<p>
+ If the container is a mutable Boost.Heap object, then the call operator's
+ return value is the handle returned by the container's emplacement function
+ call. If the container is a Boost.Heap object that is not mutable, then
+ the call operator's return type is <code class="computeroutput"><span class="keyword">void</span></code>.
+ Otherwise, the call operator's return value is a std::pair whose second element evaluates
+ to <code class="computeroutput"><span class="keyword">true</span></code> upon successful insertion
+ and whose first element is an iterator pointing to the element inserted.
+ </p>
+<p>
+ The return type of this metafunction also defines an indexing operator
+ that accepts a reference to a container and returns a proxy object that
+ allows emplacement function calls to be chained together, much like Boost.Assign.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.emplace_function_gen.definition"></a><a class="link" href="emplace_function_gen.html#container_gen.reference.emplace_function_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/emplace_function_gen.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.emplace_function_gen.example"></a><a class="link" href="emplace_function_gen.html#container_gen.reference.emplace_function_gen.example" title="Example">Example</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">example</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typename</span> <a class="link" href="container_gen.html" title="container_gen">container_gen</a><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span>std::string<span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">c1</span><span class="special">,</span> <span class="identifier">c2</span><span class="special">,</span> <span class="identifier">c3</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">emplacer</span><span class="special">;</span>
+
+ BOOST_AUTO_TPL<span class="special">(</span><span class="identifier">result1</span><span class="special">,</span> <span class="identifier">emplacer</span><span class="special">(</span><span class="identifier">c1</span><span class="special">,</span> <span class="string">"Hello,"</span><span class="special">));</span>
+ BOOST_AUTO_TPL<span class="special">(</span><span class="identifier">result2</span><span class="special">,</span> <span class="identifier">emplacer</span><span class="special">(</span><span class="identifier">c2</span><span class="special">,</span> <span class="string">"Hello,"</span><span class="special">));</span>
+ BOOST_ASSERT<span class="special">(</span><span class="identifier">result1</span> <span class="special">==</span> <span class="identifier">result2</span><span class="special">);</span>
+
+ <span class="identifier">result1</span> <span class="special">=</span> <span class="identifier">emplacer</span><span class="special">(</span><span class="identifier">c1</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">);</span>
+ <span class="identifier">result2</span> <span class="special">=</span> <span class="identifier">emplacer</span><span class="special">(</span><span class="identifier">c2</span><span class="special">,</span> <span class="string">"world!"</span><span class="special">);</span>
+ BOOST_ASSERT<span class="special">(</span><span class="identifier">result1</span> <span class="special">==</span> <span class="identifier">result2</span><span class="special">);</span>
+ BOOST_ASSERT<span class="special">(</span>boost::range::equal<span class="special">(</span><span class="identifier">c1</span><span class="special">,</span> <span class="identifier">c2</span><span class="special">));</span>
+
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">c3</span><span class="special">](</span><span class="string">"Hello,"</span><span class="special">)(</span><span class="string">"world!"</span><span class="special">);</span>
+ BOOST_ASSERT<span class="special">(</span>boost::range::equal<span class="special">(</span><span class="identifier">c1</span><span class="special">,</span> <span class="identifier">c3</span><span class="special">));</span>
+<span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">example</span><span class="special">&lt;</span><a class="link" href="selectors.html" title="Selectors">boost::vector_selector</a><span class="special">&lt;</span>boost::mpl::true_<span class="special">&gt;</span> <span class="special">&gt;();</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.emplace_function_gen.test"></a><a class="link" href="emplace_function_gen.html#container_gen.reference.emplace_function_gen.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/emplace_function_gen.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="container_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_assoc_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/has_emplace_mfunc_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/has_emplace_mfunc_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,110 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>has_emplace_member_function_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="has_stable_iters_selector.html" title="has_stable_iterators_selector">
+<link rel="next" href="../changelog.html" title="Changelog">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_stable_iters_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../changelog.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.has_emplace_mfunc_selector"></a><a class="link" href="has_emplace_mfunc_selector.html" title="has_emplace_member_function_selector"><code class="computeroutput"><span class="identifier">has_emplace_member_function_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.has_emplace_mfunc_selector.synopsis"></a><a class="link" href="has_emplace_mfunc_selector.html#container_gen.reference.has_emplace_mfunc_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">has_emplace_member_function_selector</span>
+ <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special">&lt;</span>
+ <span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special">&lt;</span>
+ <span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">,</span> <span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">has_emplace_member_function_selector</span><span class="special">&lt;</span>
+ <span class="identifier">stable_vector_selector</span><span class="special">&lt;</span><span class="identifier">AllocatorSelector</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span> <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">ConstantCapacity</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">has_emplace_member_function_selector</span><span class="special">&lt;</span>
+ <span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">ConstantCapacity</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span> <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">has_emplace_member_function_selector</span><span class="special">&lt;</span>
+ <span class="identifier">slist_selector</span><span class="special">&lt;</span><span class="identifier">AllocatorSelector</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span> <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="comment">// More metafunction specializations...</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.has_emplace_mfunc_selector.description"></a><a class="link" href="has_emplace_mfunc_selector.html#container_gen.reference.has_emplace_mfunc_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> supports emplacement
+ construction of its elements; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ The current implementation inherits from boost::mpl::true_ when passed in selectors
+ for which <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will return a Boost.Container
+ model type, a Boost.Unordered
+ container type, or a Boost.Heap
+ model type; it will inherit from boost::mpl::false_ for all other types of
+ selectors. Specialize this metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> supports emplacement
+ construction of its elements.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.has_emplace_mfunc_selector.definition"></a><a class="link" href="has_emplace_mfunc_selector.html#container_gen.reference.has_emplace_mfunc_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/has_emplace_mfunc_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_stable_iters_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../changelog.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/has_stable_iters_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/has_stable_iters_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,331 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>has_stable_iterators_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_recursive_selector.html" title="is_recursive_selector">
+<link rel="next" href="has_emplace_mfunc_selector.html" title="has_emplace_member_function_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_recursive_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="has_emplace_mfunc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.has_stable_iters_selector"></a><a class="link" href="has_stable_iters_selector.html" title="has_stable_iterators_selector"><code class="computeroutput"><span class="identifier">has_stable_iterators_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.has_stable_iters_selector.synopsis"></a><a class="link" href="has_stable_iters_selector.html#container_gen.reference.has_stable_iters_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">has_stable_iterators_selector</span>
+ <span class="special">:</span> <span class="identifier">BooleanIntegralConstant</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.has_stable_iters_selector.description"></a><a class="link" href="has_stable_iters_selector.html#container_gen.reference.has_stable_iters_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> does not invalidate
+ any iterators while invoking a member function that structurally modifies
+ an instance of the container type, other than any iterator argument that
+ the member function takes in; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ The current implementation inherits from boost::mpl::false_ when passed in selectors
+ for which <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will return a Boost.Heap
+ model type, a Hashed Associative Container model type,
+ a Flat Associative Container model type, or
+ a Random Access Container model type other
+ than boost::array
+ or boost::container::stable_vector; it will inherit
+ from boost::mpl::true_ for all other types of
+ selectors. Specialize this metafunction to inherit from boost::mpl::false_ for your custom selector
+ if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> invalidates iterators
+ other than the argument during a structurally modifying member function
+ call.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.has_stable_iters_selector.definition"></a><a class="link" href="has_stable_iters_selector.html#container_gen.reference.has_stable_iters_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/has_stable_iters_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.has_stable_iters_selector.test"></a><a class="link" href="has_stable_iters_selector.html#container_gen.reference.has_stable_iters_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_stable_iterators_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_recursive_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="has_emplace_mfunc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/insert_range_function_gen.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/insert_range_function_gen.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,195 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>insert_range_function_gen</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="push_range_function_gen.html" title="push_range_function_gen">
+<link rel="next" href="splice_function_gen.html" title="splice_function_gen">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="push_range_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="splice_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.insert_range_function_gen"></a><a class="link" href="insert_range_function_gen.html" title="insert_range_function_gen"><code class="computeroutput"><span class="identifier">insert_range_function_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.insert_range_function_gen.synopsis"></a><a class="link" href="insert_range_function_gen.html#container_gen.reference.insert_range_function_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">insert_range_function_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.insert_range_function_gen.description"></a><a class="link" href="insert_range_function_gen.html#container_gen.reference.insert_range_function_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Returns a Default Constructible function object type
+ whose call operator will take in a reference to a container, a valid iterator
+ representing the point of insertion, and either two Input Iterator arguments or a Single Pass Range argument. In practice,
+ the container type must be produced by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> when given the same
+ selector template argument.
+ </p>
+<p>
+ If the container type models the Sequence concept, then the function object
+ will forward the other argument(s) to the container's range insertion method;
+ the call operator's return value will be a Single Pass Range over the elements inserted
+ in the container.
+ </p>
+<p>
+ If the container type models the Associative Container concept, then the
+ function object will forward each element in the specified range to the
+ container's insertion method. If <a class="link" href="has_stable_iters_selector.html" title="has_stable_iterators_selector"><code class="computeroutput"><span class="identifier">has_stable_iterators_selector</span></code></a>
+ evaluates to boost::mpl::true_ for the specified selector,
+ then the call operator's return value will be a Single Pass Range of iterators pointing
+ to each of the elements that were successfully inserted in the container.
+ </p>
+<p>
+ The return type of this metafunction also defines an indexing operator
+ that accepts a reference to a container and returns a proxy object that
+ allows range insertion function calls to be chained together, much like
+ Boost.Assign.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.insert_range_function_gen.definition"></a><a class="link" href="insert_range_function_gen.html#container_gen.reference.insert_range_function_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/insert_range_function_gen.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.insert_range_function_gen.example"></a><a class="link" href="insert_range_function_gen.html#container_gen.reference.insert_range_function_gen.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ Use the boost::range::equal()
+ algorithm to test two ranges for equality. To handle the case where the
+ range returned from a call to the <code class="computeroutput"><span class="identifier">insert_range_function_gen</span></code>
+ return function type is a Single Pass Range of iterators, use boost::adaptors::indirect().
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">ResultRange</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AddedContainer</span><span class="special">&gt;</span>
+<span class="keyword">bool</span>
+ <span class="identifier">test_result_range</span><span class="special">(</span>
+ <span class="identifier">ResultRange</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span>
+ <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">c</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">indirect</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">ResultRange</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AddedContainer</span><span class="special">&gt;</span>
+<span class="keyword">bool</span>
+ <span class="identifier">test_result_range</span><span class="special">(</span>
+ <span class="identifier">ResultRange</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span>
+ <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">c</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Use the <a class="link" href="emplace_function_gen.html" title="emplace_function_gen"><code class="computeroutput"><span class="identifier">emplace_function_gen</span></code></a> metafunction
+ to construct containers using individual elements, then use this metafunction
+ to append the elements of one container to another in a single step. Use
+ the <a class="link" href="insert_range_result_gen.html" title="insert_range_result_gen"><code class="computeroutput"><span class="identifier">insert_range_result_gen</span></code></a> metafunction
+ to store the result of the operation.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AddedContainer</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_insert_range_function_gen</span><span class="special">(</span><span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">added_container</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">example_container</span><span class="special">,</span> <span class="identifier">test_container</span><span class="special">,</span> <span class="identifier">input_container</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">emplacer</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">insert_range_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">range_inserter</span><span class="special">;</span>
+
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">example_container</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"easy"</span><span class="special">)</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">)</span>
+ <span class="special">(</span><span class="string">"baker"</span><span class="special">)(</span><span class="string">"charlie"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">test_container</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"easy"</span><span class="special">)(</span><span class="string">"baker"</span><span class="special">)(</span><span class="string">"charlie"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">input_container</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">insert_range_result_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">insert_range_result</span> <span class="special">=</span> <span class="identifier">range_inserter</span><span class="special">(</span>
+ <span class="identifier">test_container</span>
+ <span class="special">,</span> <span class="special">++++++</span><span class="identifier">test_container</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">,</span> <span class="identifier">input_container</span>
+ <span class="special">);</span>
+
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span>
+ <span class="identifier">test_result_range</span><span class="special">(</span>
+ <span class="identifier">insert_range_result</span>
+ <span class="special">,</span> <span class="identifier">added_container</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;()</span>
+ <span class="special">)</span>
+ <span class="special">);</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">6</span> <span class="special">==</span> <span class="identifier">input_container</span><span class="special">.</span><span class="identifier">size</span><span class="special">());</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">test_container</span><span class="special">,</span> <span class="identifier">example_container</span><span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Test this metafunction across a wide variety of selector types.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">test_main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">**</span> <span class="identifier">argv</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">added_container</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">emplacer</span><span class="special">;</span>
+
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">added_container</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">test_insert_range_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;(</span><span class="identifier">added_container</span><span class="special">);</span>
+ <span class="identifier">test_insert_range_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;(</span><span class="identifier">added_container</span><span class="special">);</span>
+ <span class="identifier">test_insert_range_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;(</span><span class="identifier">added_container</span><span class="special">);</span>
+ <span class="comment">// ...</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The complete test program spans the following source files:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ <test/result_range.hpp>
+ </p></li>
+<li class="listitem"><p>
+ <test/insert_range_function_gen.cpp>
+ </p></li>
+</ul></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="push_range_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="splice_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/insert_range_result_gen.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/insert_range_result_gen.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>insert_range_result_gen</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="splice_function_gen.html" title="splice_function_gen">
+<link rel="next" href="is_compare_selector.html" title="is_compare_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="splice_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_compare_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.insert_range_result_gen"></a><a class="link" href="insert_range_result_gen.html" title="insert_range_result_gen"><code class="computeroutput"><span class="identifier">insert_range_result_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.insert_range_result_gen.synopsis"></a><a class="link" href="insert_range_result_gen.html#container_gen.reference.insert_range_result_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">insert_range_result_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.insert_range_result_gen.description"></a><a class="link" href="insert_range_result_gen.html#container_gen.reference.insert_range_result_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Determines the result type of the function object type returned by either
+ <a class="link" href="push_range_function_gen.html" title="push_range_function_gen"><code class="computeroutput"><span class="identifier">push_range_function_gen</span></code></a> or <a class="link" href="insert_range_function_gen.html" title="insert_range_function_gen"><code class="computeroutput"><span class="identifier">insert_range_function_gen</span></code></a>, using
+ the return type of <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> as the function
+ object's container argument type. If the container type models the Sequence
+ concept, then the result type will be a Single Pass Range whose element type is
+ <code class="computeroutput"><span class="identifier">T</span></code>. If the container type
+ models the Associative Container concept, then the
+ result type will be a Single Pass Range whose element type is
+ the container's iterator type.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.insert_range_result_gen.definition"></a><a class="link" href="insert_range_result_gen.html#container_gen.reference.insert_range_result_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/insert_range_result_gen.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="splice_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_compare_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_allocator_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_allocator_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,278 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_allocator_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_hasher_selector.html" title="is_hasher_selector">
+<link rel="next" href="is_container_selector.html" title="is_container_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_hasher_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_container_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_allocator_selector"></a><a class="link" href="is_allocator_selector.html" title="is_allocator_selector"><code class="computeroutput"><span class="identifier">is_allocator_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_allocator_selector.synopsis"></a><a class="link" href="is_allocator_selector.html#container_gen.reference.is_allocator_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_allocator_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_allocator_selector.description"></a><a class="link" href="is_allocator_selector.html#container_gen.reference.is_allocator_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ is a metafunction class that takes in a value type and returns an allocator
+ model; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ If either BOOST_MPL_CFG_NO_HAS_XXX or
+ BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+ are defined, then you must specialize this metafunction to inherit from
+ boost::mpl::true_
+ for your custom selector.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_allocator_selector.definition"></a><a class="link" href="is_allocator_selector.html#container_gen.reference.is_allocator_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_allocator_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_allocator_selector.test"></a><a class="link" href="is_allocator_selector.html#container_gen.reference.is_allocator_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_allocator_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_hasher_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_container_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_associative_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_associative_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,275 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_associative_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_random_access_selector.html" title="is_random_access_selector">
+<link rel="next" href="is_unique_assoc_selector.html" title="is_unique_associative_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_random_access_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_unique_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_associative_selector"></a><a class="link" href="is_associative_selector.html" title="is_associative_selector"><code class="computeroutput"><span class="identifier">is_associative_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_associative_selector.synopsis"></a><a class="link" href="is_associative_selector.html#container_gen.reference.is_associative_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_associative_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_associative_selector.description"></a><a class="link" href="is_associative_selector.html#container_gen.reference.is_associative_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will model the
+ Associative Container concept; it evaluates
+ to boost::mpl::false_
+ otherwise.
+ </p>
+<p>
+ If both BOOST_TYPEOF_EMULATION and BOOST_MPL_CFG_NO_HAS_XXX
+ are defined, then you must specialize either the <a class="link" href="is_unique_assoc_selector.html" title="is_unique_associative_selector"><code class="computeroutput"><span class="identifier">is_unique_associative_selector</span></code></a>
+ metafunction or the <a class="link" href="is_multiple_assoc_selector.html" title="is_multiple_associative_selector"><code class="computeroutput"><span class="identifier">is_multiple_associative_selector</span></code></a>
+ metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> return type models
+ the respective concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_associative_selector.definition"></a><a class="link" href="is_associative_selector.html#container_gen.reference.is_associative_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_associative_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_associative_selector.test"></a><a class="link" href="is_associative_selector.html#container_gen.reference.is_associative_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_random_access_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_unique_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_compare_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_compare_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,270 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_compare_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="insert_range_result_gen.html" title="insert_range_result_gen">
+<link rel="next" href="is_hasher_selector.html" title="is_hasher_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_range_result_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_hasher_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_compare_selector"></a><a class="link" href="is_compare_selector.html" title="is_compare_selector"><code class="computeroutput"><span class="identifier">is_compare_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_compare_selector.synopsis"></a><a class="link" href="is_compare_selector.html#container_gen.reference.is_compare_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_compare_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_compare_selector.description"></a><a class="link" href="is_compare_selector.html#container_gen.reference.is_compare_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ is a metafunction class that takes in a value type and returns a <a href="http://www.sgi.com/tech/stl/BinaryPredicate.html" target="_top"><span class="bold"><strong>Binary
+ Predicate</strong></span></a> model; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ If either BOOST_MPL_CFG_NO_HAS_XXX or
+ BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+ are defined, then you must specialize this metafunction to inherit from
+ boost::mpl::true_
+ for your custom selector.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_compare_selector.definition"></a><a class="link" href="is_compare_selector.html#container_gen.reference.is_compare_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_compare_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_compare_selector.test"></a><a class="link" href="is_compare_selector.html#container_gen.reference.is_compare_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_compare_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_range_result_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_hasher_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_container_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_container_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,272 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_container_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_allocator_selector.html" title="is_allocator_selector">
+<link rel="next" href="is_reversible_selector.html" title="is_reversible_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_allocator_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_reversible_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_container_selector"></a><a class="link" href="is_container_selector.html" title="is_container_selector"><code class="computeroutput"><span class="identifier">is_container_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_container_selector.synopsis"></a><a class="link" href="is_container_selector.html#container_gen.reference.is_container_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_container_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_container_selector.description"></a><a class="link" href="is_container_selector.html#container_gen.reference.is_container_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> metafunction has
+ been specialized to return a type given the specified selector type; it
+ evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+ then you must also specialize this metafunction to inherit from boost::mpl::true_
+ for your custom selector.
+ </p>
+<p>
+ This metafunction is useful for facilitating Boost.Parameter-enabled template argument
+ deduction for types that take in <a class="link" href="selectors.html" title="Selectors"><span class="bold"><strong>Selectors</strong></span></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_container_selector.definition"></a><a class="link" href="is_container_selector.html#container_gen.reference.is_container_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_container_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_container_selector.test"></a><a class="link" href="is_container_selector.html#container_gen.reference.is_container_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_container_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_allocator_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_reversible_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_flat_assoc_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_flat_assoc_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,318 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_flat_associative_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_multiple_assoc_selector.html" title="is_multiple_associative_selector">
+<link rel="next" href="is_hashed_assoc_selector.html" title="is_hashed_associative_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_multiple_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_hashed_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_flat_assoc_selector"></a><a class="link" href="is_flat_assoc_selector.html" title="is_flat_associative_selector"><code class="computeroutput"><span class="identifier">is_flat_associative_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_flat_assoc_selector.synopsis"></a><a class="link" href="is_flat_assoc_selector.html#container_gen.reference.is_flat_assoc_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_flat_associative_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_flat_assoc_selector.description"></a><a class="link" href="is_flat_assoc_selector.html#container_gen.reference.is_flat_assoc_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will be a Flat Associative Container -- that is, if
+ it will model the Sorted Associative Container concept and
+ its iterator type will model the Random Access Iterator concept -- boost::mpl::false_
+ otherwise.
+ </p>
+<p>
+ If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+ then you must specialize this metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> is a Flat Associative Container.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_flat_assoc_selector.definition"></a><a class="link" href="is_flat_assoc_selector.html#container_gen.reference.is_flat_assoc_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_flat_assoc_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_flat_assoc_selector.test"></a><a class="link" href="is_flat_assoc_selector.html#container_gen.reference.is_flat_assoc_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_flat_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_multiple_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_hashed_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_hashed_assoc_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_hashed_assoc_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,321 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_hashed_associative_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_flat_assoc_selector.html" title="is_flat_associative_selector">
+<link rel="next" href="is_tr1_selector.html" title="is_tr1_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_flat_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_tr1_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_hashed_assoc_selector"></a><a class="link" href="is_hashed_assoc_selector.html" title="is_hashed_associative_selector"><code class="computeroutput"><span class="identifier">is_hashed_associative_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_hashed_assoc_selector.synopsis"></a><a class="link" href="is_hashed_assoc_selector.html#container_gen.reference.is_hashed_assoc_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_hashed_associative_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_hashed_assoc_selector.description"></a><a class="link" href="is_hashed_assoc_selector.html#container_gen.reference.is_hashed_assoc_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will model the
+ Hashed Associative Container concept; it
+ evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+ then you must specialize this metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> models the Hashed Associative Container concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_hashed_assoc_selector.definition"></a><a class="link" href="is_hashed_assoc_selector.html#container_gen.reference.is_hashed_assoc_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_hashed_assoc_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_hashed_assoc_selector.test"></a><a class="link" href="is_hashed_assoc_selector.html#container_gen.reference.is_hashed_assoc_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_flat_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_tr1_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_hasher_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_hasher_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,271 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_hasher_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_compare_selector.html" title="is_compare_selector">
+<link rel="next" href="is_allocator_selector.html" title="is_allocator_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_compare_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_allocator_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_hasher_selector"></a><a class="link" href="is_hasher_selector.html" title="is_hasher_selector"><code class="computeroutput"><span class="identifier">is_hasher_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_hasher_selector.synopsis"></a><a class="link" href="is_hasher_selector.html#container_gen.reference.is_hasher_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_hasher_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_hasher_selector.description"></a><a class="link" href="is_hasher_selector.html#container_gen.reference.is_hasher_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ is a Unary Metafunction Class that takes in a
+ value type and returns a Hash Function model; it evaluates to boost::mpl::false_
+ otherwise.
+ </p>
+<p>
+ If either BOOST_MPL_CFG_NO_HAS_XXX or
+ BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+ are defined, then you must specialize this metafunction to inherit from
+ boost::mpl::true_
+ for your custom selector.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_hasher_selector.definition"></a><a class="link" href="is_hasher_selector.html#container_gen.reference.is_hasher_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_hasher_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_hasher_selector.test"></a><a class="link" href="is_hasher_selector.html#container_gen.reference.is_hasher_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_hasher_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_compare_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_allocator_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_heap_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_heap_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,268 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_heap_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_std_heap_selector.html" title="is_std_heap_selector">
+<link rel="next" href="is_iter_heap_selector.html" title="is_iteratable_heap_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_std_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_iter_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_heap_selector"></a><a class="link" href="is_heap_selector.html" title="is_heap_selector"><code class="computeroutput"><span class="identifier">is_heap_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_heap_selector.synopsis"></a><a class="link" href="is_heap_selector.html#container_gen.reference.is_heap_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_heap_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_heap_selector.description"></a><a class="link" href="is_heap_selector.html#container_gen.reference.is_heap_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ will cause <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return a Boost.Heap
+ model type; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+ then you must specialize this metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> is a Boost.Heap model type.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_heap_selector.definition"></a><a class="link" href="is_heap_selector.html#container_gen.reference.is_heap_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_heap_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_heap_selector.test"></a><a class="link" href="is_heap_selector.html#container_gen.reference.is_heap_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_std_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_iter_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_iter_heap_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_iter_heap_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,319 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_iteratable_heap_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_heap_selector.html" title="is_heap_selector">
+<link rel="next" href="is_ord_iter_heap_selector.html" title="is_order_iteratable_heap_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_ord_iter_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_iter_heap_selector"></a><a class="link" href="is_iter_heap_selector.html" title="is_iteratable_heap_selector"><code class="computeroutput"><span class="identifier">is_iteratable_heap_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_iter_heap_selector.synopsis"></a><a class="link" href="is_iter_heap_selector.html#container_gen.reference.is_iter_heap_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_iteratable_heap_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_iter_heap_selector.description"></a><a class="link" href="is_iter_heap_selector.html#container_gen.reference.is_iter_heap_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ will cause <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return an iteratable
+ Boost.Heap
+ model type; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+ then you must specialize this metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> is an iteratable
+ Boost.Heap
+ model type.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_iter_heap_selector.definition"></a><a class="link" href="is_iter_heap_selector.html#container_gen.reference.is_iter_heap_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_iteratable_heap_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_iter_heap_selector.test"></a><a class="link" href="is_iter_heap_selector.html#container_gen.reference.is_iter_heap_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_ord_iter_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_mergeable_heap_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_mergeable_heap_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,396 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_mergeable_heap_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_mutable_heap_selector.html" title="is_mutable_heap_selector">
+<link rel="next" href="is_recursive_selector.html" title="is_recursive_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_mutable_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_recursive_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_mergeable_heap_selector"></a><a class="link" href="is_mergeable_heap_selector.html" title="is_mergeable_heap_selector"><code class="computeroutput"><span class="identifier">is_mergeable_heap_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_mergeable_heap_selector.synopsis"></a><a class="link" href="is_mergeable_heap_selector.html#container_gen.reference.is_mergeable_heap_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_mergeable_heap_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_mergeable_heap_selector.description"></a><a class="link" href="is_mergeable_heap_selector.html#container_gen.reference.is_mergeable_heap_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ A Boost.Heap
+ model type is <span class="bold"><strong>mergeable</strong></span> if and only if
+ it defines a member function <code class="computeroutput"><span class="identifier">merge</span><span class="special">()</span></code> that takes in a reference-to-non-<code class="computeroutput"><span class="keyword">const</span></code> object of its own type and returns
+ <code class="computeroutput"><span class="keyword">void</span></code>. This metafunction evaluates
+ to boost::mpl::true_
+ if the specified selector will cause <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return a mergeable
+ Boost.Heap
+ model type; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+ then you must specialize this metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> is a mergeable
+ Boost.Heap
+ model type.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_mergeable_heap_selector.definition"></a><a class="link" href="is_mergeable_heap_selector.html#container_gen.reference.is_mergeable_heap_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_mergeable_heap_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_mergeable_heap_selector.example"></a><a class="link" href="is_mergeable_heap_selector.html#container_gen.reference.is_mergeable_heap_selector.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ The boost::heap::heap_merge()
+ function is the only way to merge two objects of different Boost.Heap model types or of the same Boost.Heap
+ model type that is otherwise not mergeable.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Heap</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_heap_merge</span><span class="special">(</span><span class="identifier">Heap</span><span class="special">&amp;</span> <span class="identifier">heap1</span><span class="special">,</span> <span class="identifier">Heap</span><span class="special">&amp;</span> <span class="identifier">heap2</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">heap_merge</span><span class="special">(</span><span class="identifier">heap1</span><span class="special">,</span> <span class="identifier">heap2</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ However, the boost::heap::heap_merge()
+ function may be less efficient than the <code class="computeroutput"><span class="identifier">merge</span><span class="special">()</span></code> member function of mergeable Boost.Heap model types.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Heap</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_heap_merge</span><span class="special">(</span><span class="identifier">Heap</span><span class="special">&amp;</span> <span class="identifier">heap1</span><span class="special">,</span> <span class="identifier">Heap</span><span class="special">&amp;</span> <span class="identifier">heap2</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">heap1</span><span class="special">.</span><span class="identifier">merge</span><span class="special">(</span><span class="identifier">heap2</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Use this metafunction to choose the correct and most efficient merge implementation.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_heap_merge</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">heap_1</span><span class="special">,</span> <span class="identifier">heap_2</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">pusher</span><span class="special">;</span>
+
+ <span class="identifier">pusher</span><span class="special">[</span><span class="identifier">heap_1</span><span class="special">](</span><span class="number">3</span><span class="special">)(</span><span class="number">5</span><span class="special">)(</span><span class="number">1</span><span class="special">);</span>
+ <span class="identifier">pusher</span><span class="special">[</span><span class="identifier">heap_2</span><span class="special">](</span><span class="number">2</span><span class="special">)(</span><span class="number">4</span><span class="special">)(</span><span class="number">0</span><span class="special">);</span>
+ <span class="identifier">test_heap_merge</span><span class="special">(</span>
+ <span class="identifier">heap_1</span>
+ <span class="special">,</span> <span class="identifier">heap_2</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;()</span>
+ <span class="special">);</span>
+
+ <span class="keyword">for</span> <span class="special">(</span><span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">heap_2</span><span class="special">.</span><span class="identifier">empty</span><span class="special">());</span> <span class="special">!</span><span class="identifier">heap_2</span><span class="special">.</span><span class="identifier">empty</span><span class="special">();</span> <span class="identifier">heap_2</span><span class="special">.</span><span class="identifier">pop</span><span class="special">())</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">5</span> <span class="special">==</span> <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">4</span> <span class="special">==</span> <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">3</span> <span class="special">==</span> <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">2</span> <span class="special">==</span> <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">1</span> <span class="special">==</span> <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">0</span> <span class="special">==</span> <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">heap_1</span><span class="special">.</span><span class="identifier">empty</span><span class="special">());</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_mergeable_heap_selector.test"></a><a class="link" href="is_mergeable_heap_selector.html#container_gen.reference.is_mergeable_heap_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">mutable_</span><span class="special">&lt;</span><span class="keyword">true</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">mutable_</span><span class="special">&lt;</span><span class="keyword">true</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mergeable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_mutable_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_recursive_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_multiple_assoc_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_multiple_assoc_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,327 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_multiple_associative_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_unique_assoc_selector.html" title="is_unique_associative_selector">
+<link rel="next" href="is_flat_assoc_selector.html" title="is_flat_associative_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_unique_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_flat_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_multiple_assoc_selector"></a><a class="link" href="is_multiple_assoc_selector.html" title="is_multiple_associative_selector"><code class="computeroutput"><span class="identifier">is_multiple_associative_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_multiple_assoc_selector.synopsis"></a><a class="link" href="is_multiple_assoc_selector.html#container_gen.reference.is_multiple_assoc_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_multiple_associative_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_multiple_assoc_selector.description"></a><a class="link" href="is_multiple_assoc_selector.html#container_gen.reference.is_multiple_assoc_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will model the
+ Multiple Associative Container concept;
+ it evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ If both BOOST_TYPEOF_EMULATION and BOOST_MPL_CFG_NO_HAS_XXX
+ are defined, then you must specialize this metafunction to inherit from
+ boost::mpl::true_
+ for your custom selector if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a>
+ models the Multiple Associative Container concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_multiple_assoc_selector.definition"></a><a class="link" href="is_multiple_assoc_selector.html#container_gen.reference.is_multiple_assoc_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_multiple_assoc_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_multiple_assoc_selector.test"></a><a class="link" href="is_multiple_assoc_selector.html#container_gen.reference.is_multiple_assoc_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_multiple_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_unique_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_flat_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_mutable_heap_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_mutable_heap_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,433 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_mutable_heap_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_ord_iter_heap_selector.html" title="is_order_iteratable_heap_selector">
+<link rel="next" href="is_mergeable_heap_selector.html" title="is_mergeable_heap_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_ord_iter_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_mergeable_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_mutable_heap_selector"></a><a class="link" href="is_mutable_heap_selector.html" title="is_mutable_heap_selector"><code class="computeroutput"><span class="identifier">is_mutable_heap_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_mutable_heap_selector.synopsis"></a><a class="link" href="is_mutable_heap_selector.html#container_gen.reference.is_mutable_heap_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_mutable_heap_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_mutable_heap_selector.description"></a><a class="link" href="is_mutable_heap_selector.html#container_gen.reference.is_mutable_heap_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ A Boost.Heap
+ model type is <span class="bold"><strong>mutable</strong></span> if and only if:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ It defines a nested <code class="computeroutput"><span class="identifier">handle_type</span></code>
+ type.
+ </p></li>
+<li class="listitem"><p>
+ Its <code class="computeroutput"><span class="identifier">push</span><span class="special">()</span></code>
+ member function returns an object of type <code class="computeroutput"><span class="identifier">handle_type</span></code>.
+ </p></li>
+<li class="listitem"><p>
+ It defines two <code class="computeroutput"><span class="identifier">update</span><span class="special">()</span></code> member function overloads--one taking
+ in only a reference-to-<code class="computeroutput"><span class="keyword">const</span></code>
+ <code class="computeroutput"><span class="identifier">handle_type</span></code>, the other
+ also taking in a reference-to-<code class="computeroutput"><span class="keyword">const</span></code>
+ <code class="computeroutput"><span class="identifier">value_type</span></code>--both of
+ which update the invoking heap to reflect the change in priority.
+ </p></li>
+<li class="listitem"><p>
+ It defines two <code class="computeroutput"><span class="identifier">increase</span><span class="special">()</span></code> member function overloads--one taking
+ in only a reference-to-<code class="computeroutput"><span class="keyword">const</span></code>
+ <code class="computeroutput"><span class="identifier">handle_type</span></code>, the other
+ also taking in a reference-to-<code class="computeroutput"><span class="keyword">const</span></code>
+ <code class="computeroutput"><span class="identifier">value_type</span></code>--both of
+ which update the invoking heap to reflect the change in priority.
+ </p></li>
+<li class="listitem"><p>
+ It defines two <code class="computeroutput"><span class="identifier">decrease</span><span class="special">()</span></code> member function overloads--one taking
+ in only a reference-to-<code class="computeroutput"><span class="keyword">const</span></code>
+ <code class="computeroutput"><span class="identifier">handle_type</span></code>, the other
+ also taking in a reference-to-<code class="computeroutput"><span class="keyword">const</span></code>
+ <code class="computeroutput"><span class="identifier">value_type</span></code>--both of
+ which update the invoking heap to reflect the change in priority.
+ </p></li>
+</ul></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ will cause <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return a mutable
+ Boost.Heap
+ model type; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+ then you must specialize this metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> is a mutable Boost.Heap
+ model type.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_mutable_heap_selector.definition"></a><a class="link" href="is_mutable_heap_selector.html#container_gen.reference.is_mutable_heap_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_mutable_heap_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_mutable_heap_selector.example"></a><a class="link" href="is_mutable_heap_selector.html#container_gen.reference.is_mutable_heap_selector.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ Boost.Heap
+ model types that are mutable can be used by sorting algorithms that need
+ to handle changing priority values, e.g. weighted pathfinding.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_emplace_heap</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">Heap</span><span class="special">;</span>
+
+ <span class="identifier">Heap</span> <span class="identifier">heap</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">pusher</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">Heap</span><span class="special">::</span><span class="identifier">handle_type</span> <span class="identifier">handle_1</span> <span class="special">=</span> <span class="identifier">pusher</span><span class="special">(</span><span class="identifier">heap</span><span class="special">,</span> <span class="number">3</span><span class="special">);</span>
+ <span class="keyword">typename</span> <span class="identifier">Heap</span><span class="special">::</span><span class="identifier">handle_type</span> <span class="identifier">handle_2</span> <span class="special">=</span> <span class="identifier">pusher</span><span class="special">(</span><span class="identifier">heap</span><span class="special">,</span> <span class="number">5</span><span class="special">);</span>
+ <span class="keyword">typename</span> <span class="identifier">Heap</span><span class="special">::</span><span class="identifier">handle_type</span> <span class="identifier">handle_3</span> <span class="special">=</span> <span class="identifier">pusher</span><span class="special">(</span><span class="identifier">heap</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
+
+ <span class="identifier">heap</span><span class="special">.</span><span class="identifier">update</span><span class="special">(</span><span class="identifier">handle_1</span><span class="special">,</span> <span class="number">4</span><span class="special">);</span>
+ <span class="identifier">heap</span><span class="special">.</span><span class="identifier">increase</span><span class="special">(</span><span class="identifier">handle_2</span><span class="special">,</span> <span class="number">7</span><span class="special">);</span>
+ <span class="identifier">heap</span><span class="special">.</span><span class="identifier">decrease</span><span class="special">(</span><span class="identifier">handle_3</span><span class="special">,</span> <span class="number">0</span><span class="special">);</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">7</span> <span class="special">==</span> <span class="identifier">heap</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">4</span> <span class="special">==</span> <span class="identifier">heap</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">0</span> <span class="special">==</span> <span class="identifier">heap</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">heap</span><span class="special">.</span><span class="identifier">empty</span><span class="special">());</span>
+<span class="special">}</span>
+</pre>
+<p>
+ On the other hand, Boost.Heap
+ model types that are not mutable are more lightweight for simpler sorting
+ algorithms.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_emplace_heap</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">heap</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">pusher</span><span class="special">;</span>
+
+ <span class="identifier">pusher</span><span class="special">[</span><span class="identifier">heap</span><span class="special">](</span><span class="number">2</span><span class="special">)(</span><span class="number">4</span><span class="special">)(</span><span class="number">0</span><span class="special">);</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">4</span> <span class="special">==</span> <span class="identifier">heap</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">2</span> <span class="special">==</span> <span class="identifier">heap</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="number">0</span> <span class="special">==</span> <span class="identifier">heap</span><span class="special">.</span><span class="identifier">top</span><span class="special">());</span>
+ <span class="identifier">heap</span><span class="special">.</span><span class="identifier">pop</span><span class="special">();</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">heap</span><span class="special">.</span><span class="identifier">empty</span><span class="special">());</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This metafunction differentiates between the two categories.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_emplace_heap</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">test_emplace_heap</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;(</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;()</span>
+ <span class="special">);</span>
+ <span class="comment">// ...</span>
+<span class="special">}</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_mutable_heap_selector.test"></a><a class="link" href="is_mutable_heap_selector.html#container_gen.reference.is_mutable_heap_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">mutable_</span><span class="special">&lt;</span><span class="keyword">true</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">mutable_</span><span class="special">&lt;</span><span class="keyword">true</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_mutable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_ord_iter_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_mergeable_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_ord_iter_heap_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_ord_iter_heap_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,325 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_order_iteratable_heap_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_iter_heap_selector.html" title="is_iteratable_heap_selector">
+<link rel="next" href="is_mutable_heap_selector.html" title="is_mutable_heap_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_iter_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_mutable_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_ord_iter_heap_selector"></a><a class="link" href="is_ord_iter_heap_selector.html" title="is_order_iteratable_heap_selector"><code class="computeroutput"><span class="identifier">is_order_iteratable_heap_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_ord_iter_heap_selector.synopsis"></a><a class="link" href="is_ord_iter_heap_selector.html#container_gen.reference.is_ord_iter_heap_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_order_iteratable_heap_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_ord_iter_heap_selector.description"></a><a class="link" href="is_ord_iter_heap_selector.html#container_gen.reference.is_ord_iter_heap_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> is a Boost.Heap model type that supports ordered
+ iterators; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+<p>
+ If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+ then you must specialize this metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> is a Boost.Heap model type that supports ordered
+ iterators.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_ord_iter_heap_selector.definition"></a><a class="link" href="is_ord_iter_heap_selector.html#container_gen.reference.is_ord_iter_heap_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_order_iter_heap_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_ord_iter_heap_selector.test"></a><a class="link" href="is_ord_iter_heap_selector.html#container_gen.reference.is_ord_iter_heap_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_order_iteratable_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_iter_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_mutable_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_ptr_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_ptr_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,263 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_ptr_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_tr1_selector.html" title="is_tr1_selector">
+<link rel="next" href="is_queue_selector.html" title="is_queue_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_tr1_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_queue_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_ptr_selector"></a><a class="link" href="is_ptr_selector.html" title="is_ptr_selector"><code class="computeroutput"><span class="identifier">is_ptr_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_ptr_selector.synopsis"></a><a class="link" href="is_ptr_selector.html#container_gen.reference.is_ptr_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_ptr_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_ptr_selector.description"></a><a class="link" href="is_ptr_selector.html#container_gen.reference.is_ptr_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ will cause <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return a Boost.PointerContainer
+ type; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_ptr_selector.definition"></a><a class="link" href="is_ptr_selector.html#container_gen.reference.is_ptr_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_ptr_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_ptr_selector.test"></a><a class="link" href="is_ptr_selector.html#container_gen.reference.is_ptr_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_tr1_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_queue_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_queue_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_queue_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,263 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_queue_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_ptr_selector.html" title="is_ptr_selector">
+<link rel="next" href="is_stack_selector.html" title="is_stack_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_ptr_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_stack_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_queue_selector"></a><a class="link" href="is_queue_selector.html" title="is_queue_selector"><code class="computeroutput"><span class="identifier">is_queue_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_queue_selector.synopsis"></a><a class="link" href="is_queue_selector.html#container_gen.reference.is_queue_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_queue_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_queue_selector.description"></a><a class="link" href="is_queue_selector.html#container_gen.reference.is_queue_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ will cause <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return a std::queue
+ template instantiation; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_queue_selector.definition"></a><a class="link" href="is_queue_selector.html#container_gen.reference.is_queue_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_queue_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_queue_selector.test"></a><a class="link" href="is_queue_selector.html#container_gen.reference.is_queue_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_queue_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_ptr_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_stack_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_random_access_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_random_access_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,304 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_random_access_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_reversible_selector.html" title="is_reversible_selector">
+<link rel="next" href="is_associative_selector.html" title="is_associative_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_reversible_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_associative_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_random_access_selector"></a><a class="link" href="is_random_access_selector.html" title="is_random_access_selector"><code class="computeroutput"><span class="identifier">is_random_access_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_random_access_selector.synopsis"></a><a class="link" href="is_random_access_selector.html#container_gen.reference.is_random_access_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_random_access_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_random_access_selector.description"></a><a class="link" href="is_random_access_selector.html#container_gen.reference.is_random_access_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The boost::adjacency_list class template
+ uses this metafunction to determine whether or not it will provide an internal
+ property map that associates its vertex descriptors with unique indices.
+ This metafunction evaluates to boost::mpl::true_ if the type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will model the
+ Random Access Container concept; it evaluates
+ to boost::mpl::false_
+ otherwise.
+ </p>
+<p>
+ If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+ then you must specialize this metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> return type models
+ the Random Access Container concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_random_access_selector.definition"></a><a class="link" href="is_random_access_selector.html#container_gen.reference.is_random_access_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_random_access_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_random_access_selector.test"></a><a class="link" href="is_random_access_selector.html#container_gen.reference.is_random_access_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_random_access_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_reversible_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_associative_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_recursive_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_recursive_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,97 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_recursive_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_mergeable_heap_selector.html" title="is_mergeable_heap_selector">
+<link rel="next" href="has_stable_iters_selector.html" title="has_stable_iterators_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_mergeable_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="has_stable_iters_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_recursive_selector"></a><a class="link" href="is_recursive_selector.html" title="is_recursive_selector"><code class="computeroutput"><span class="identifier">is_recursive_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_recursive_selector.synopsis"></a><a class="link" href="is_recursive_selector.html#container_gen.reference.is_recursive_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_recursive_selector</span>
+ <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special">&lt;</span>
+ <span class="identifier">is_ptr_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">,</span> <span class="identifier">is_hashed_associative_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_recursive_selector</span><span class="special">&lt;</span><span class="identifier">stable_vector_selector</span><span class="special">&lt;</span><span class="identifier">AllocatorSelector</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_recursive_selector</span><span class="special">&lt;</span><span class="identifier">slist_selector</span><span class="special">&lt;</span><span class="identifier">AllocatorSelector</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="comment">// More metafunction specializations...</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_recursive_selector.description"></a><a class="link" href="is_recursive_selector.html#container_gen.reference.is_recursive_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> can be used to define
+ a Recursive Container; it evalutes to boost::mpl::false_
+ otherwise.
+ </p>
+<p>
+ The current implementation inherits from boost::mpl::true_ when passed in selectors
+ for which <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will return a Boost.Unordered
+ container type, a Boost.PointerContainer type, or a Boost.Container
+ type (except for boost::container::static_vector); it will inherit
+ from boost::mpl::false_ for all other types of
+ selectors. Specialize this metafunction to inherit from boost::mpl::true_ for your custom selector
+ if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> supports recursive data types.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_recursive_selector.definition"></a><a class="link" href="is_recursive_selector.html#container_gen.reference.is_recursive_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_recursive_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_mergeable_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="has_stable_iters_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_reversible_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_reversible_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,279 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_reversible_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_container_selector.html" title="is_container_selector">
+<link rel="next" href="is_random_access_selector.html" title="is_random_access_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_container_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_random_access_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_reversible_selector"></a><a class="link" href="is_reversible_selector.html" title="is_reversible_selector"><code class="computeroutput"><span class="identifier">is_reversible_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_reversible_selector.synopsis"></a><a class="link" href="is_reversible_selector.html#container_gen.reference.is_reversible_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_reversible_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_reversible_selector.description"></a><a class="link" href="is_reversible_selector.html#container_gen.reference.is_reversible_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will model the
+ Reversible Container concept; it evaluates
+ to boost::mpl::false_
+ otherwise.
+ </p>
+<p>
+ If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+ then you must specialize this metafunction to inherit from boost::mpl::false_ for your custom selector
+ if and only if the <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> return type does
+ <span class="bold"><strong>not</strong></span> model the Reversible Container concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_reversible_selector.definition"></a><a class="link" href="is_reversible_selector.html#container_gen.reference.is_reversible_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_reversible_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_reversible_selector.test"></a><a class="link" href="is_reversible_selector.html#container_gen.reference.is_reversible_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_reversible_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_container_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_random_access_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_stack_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_stack_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,268 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_stack_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_queue_selector.html" title="is_queue_selector">
+<link rel="next" href="is_std_heap_selector.html" title="is_std_heap_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_queue_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_std_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_stack_selector"></a><a class="link" href="is_stack_selector.html" title="is_stack_selector"><code class="computeroutput"><span class="identifier">is_stack_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_stack_selector.synopsis"></a><a class="link" href="is_stack_selector.html#container_gen.reference.is_stack_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_stack_selector</span> <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">SequenceSelector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">stack_selector</span><span class="special">&lt;</span><span class="identifier">SequenceSelector</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_stack_selector.description"></a><a class="link" href="is_stack_selector.html#container_gen.reference.is_stack_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ will cause <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return a std::stack
+ template instantiation; it evaluates to boost::mpl::false_ otherwise.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_stack_selector.definition"></a><a class="link" href="is_stack_selector.html#container_gen.reference.is_stack_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_stack_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_stack_selector.test"></a><a class="link" href="is_stack_selector.html#container_gen.reference.is_stack_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_stack_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_queue_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_std_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_std_heap_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_std_heap_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,269 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_std_heap_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_stack_selector.html" title="is_stack_selector">
+<link rel="next" href="is_heap_selector.html" title="is_heap_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_stack_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_std_heap_selector"></a><a class="link" href="is_std_heap_selector.html" title="is_std_heap_selector"><code class="computeroutput"><span class="identifier">is_std_heap_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_std_heap_selector.synopsis"></a><a class="link" href="is_std_heap_selector.html#container_gen.reference.is_std_heap_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_std_heap_selector</span> <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CompareSelector</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SequenceSelector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">std_heap_selector</span><span class="special">&lt;</span><span class="identifier">CompareSelector</span><span class="special">,</span><span class="identifier">SequenceSelector</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span> <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_std_heap_selector.description"></a><a class="link" href="is_std_heap_selector.html#container_gen.reference.is_std_heap_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ will cause <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return a std::priority_queue
+ type; it evalutes to boost::mpl::false_ otherwise.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_std_heap_selector.definition"></a><a class="link" href="is_std_heap_selector.html#container_gen.reference.is_std_heap_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_std_heap_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_std_heap_selector.test"></a><a class="link" href="is_std_heap_selector.html#container_gen.reference.is_std_heap_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_std_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_stack_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_heap_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_tr1_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_tr1_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,316 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_tr1_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_hashed_assoc_selector.html" title="is_hashed_associative_selector">
+<link rel="next" href="is_ptr_selector.html" title="is_ptr_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_hashed_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_ptr_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_tr1_selector"></a><a class="link" href="is_tr1_selector.html" title="is_tr1_selector"><code class="computeroutput"><span class="identifier">is_tr1_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_tr1_selector.synopsis"></a><a class="link" href="is_tr1_selector.html#container_gen.reference.is_tr1_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_tr1_selector</span> <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span> <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="comment">// More metafunction specializations...</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_tr1_selector.description"></a><a class="link" href="is_tr1_selector.html#container_gen.reference.is_tr1_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This metafunction evaluates to boost::mpl::true_ if the specified selector
+ type is <code class="computeroutput"><span class="identifier">tr1_hash_selector</span></code>
+ or <code class="computeroutput"><span class="identifier">tr1_binary_predicate_selector</span></code>,
+ or if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> is a std::tr1::array, a std::tr1::unordered_set, a <a href="http://www.boost.org/doc/html/boost_tr1/subject_list.html#boost_tr1.subject_list.unordered_set" target="_top"><code cl
 ass="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">unordered_multiset</span></code></a>, a std::tr1::unordered_map, or a std::tr1::unordered_multimap; it evaluates
+ to boost::mpl::false_
+ otherwise.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_tr1_selector.definition"></a><a class="link" href="is_tr1_selector.html#container_gen.reference.is_tr1_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_tr1_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_tr1_selector.test"></a><a class="link" href="is_tr1_selector.html#container_gen.reference.is_tr1_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_hashed_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_ptr_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_unique_assoc_selector.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_unique_assoc_selector.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,326 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_unique_associative_selector</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_associative_selector.html" title="is_associative_selector">
+<link rel="next" href="is_multiple_assoc_selector.html" title="is_multiple_associative_selector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_associative_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_multiple_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.is_unique_assoc_selector"></a><a class="link" href="is_unique_assoc_selector.html" title="is_unique_associative_selector"><code class="computeroutput"><span class="identifier">is_unique_associative_selector</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_unique_assoc_selector.synopsis"></a><a class="link" href="is_unique_assoc_selector.html#container_gen.reference.is_unique_assoc_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">is_unique_associative_selector</span>
+ <span class="special">:</span> <span class="identifier">implementation_defined</span> Boolean Integral Constant
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_unique_assoc_selector.description"></a><a class="link" href="is_unique_assoc_selector.html#container_gen.reference.is_unique_assoc_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The boost::parallel_edge_traits metafunction
+ uses this metafunction to specify whether or not the storage type returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will allow parallel
+ edges--that is, if the storage type will <span class="bold"><strong>not</strong></span>
+ model the Unique Associative Container concept. Returns
+ boost::mpl::true_
+ if the storage type <span class="bold"><strong>will</strong></span> model the Unique Associative Container concept, boost::mpl::false_
+ otherwise.
+ </p>
+<p>
+ If both BOOST_TYPEOF_EMULATION and BOOST_MPL_CFG_NO_HAS_XXX
+ are defined, then you must specialize this metafunction to return boost::mpl::true_
+ for your custom selector if and only if the type to be returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a>
+ models the Unique Associative Container concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_unique_assoc_selector.definition"></a><a class="link" href="is_unique_assoc_selector.html#container_gen.reference.is_unique_assoc_selector.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/is_unique_assoc_selector.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_unique_assoc_selector.test"></a><a class="link" href="is_unique_assoc_selector.html#container_gen.reference.is_unique_assoc_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="identifier">MPL_TEST_CASE</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special">&lt;</span>
+ <span class="identifier">true_</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">arity</span><span class="special">&lt;</span><span class="number">4</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_binary_predicate_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binary_predicate_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalenceS</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">));</span>
+ <span class="identifier">BOOST_MPL_ASSERT_NOT</span><span class="special">((</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_unique_associative_selector</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span>
+ <span class="special">&gt;</span>
+ <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_associative_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_multiple_assoc_selector.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/push_range_function_gen.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/push_range_function_gen.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,200 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>push_range_function_gen</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="emplace_assoc_function_gen.html" title="emplace_associative_function_gen">
+<link rel="next" href="insert_range_function_gen.html" title="insert_range_function_gen">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_assoc_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_range_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.push_range_function_gen"></a><a class="link" href="push_range_function_gen.html" title="push_range_function_gen"><code class="computeroutput"><span class="identifier">push_range_function_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.push_range_function_gen.synopsis"></a><a class="link" href="push_range_function_gen.html#container_gen.reference.push_range_function_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">push_range_function_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.push_range_function_gen.description"></a><a class="link" href="push_range_function_gen.html#container_gen.reference.push_range_function_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Returns a Default Constructible function object type
+ whose call operator will take in a reference to a container and either
+ two Input Iterator arguments or a Single Pass Range argument. In practice,
+ the type of the container must be produced by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> when given the same
+ selector template argument.
+ </p>
+<p>
+ If the container type models the Random Access Container concept, then the
+ function object will append the range specified by the other argument(s)
+ to the back of the container. The call operator's return value will be
+ a Single Pass Range over the elements inserted
+ in the container.
+ </p>
+<p>
+ If the container type models the Sequence concept, then the function object
+ will forward the other argument(s) to the container's range insertion method;
+ furthermore, if the container type models the Front Insertion Sequence concept, then the
+ point of insertion will be before the beginning; otherwise, if the container
+ type models the Back Insertion Sequence concept, then the
+ point of insertion will be the container's past-the-end iterator. The call
+ operator's return value will be a Single Pass Range over the elements inserted
+ in the container.
+ </p>
+<p>
+ If the container type models the Associative Container concept, then the
+ function object will forward each element in the specified range to the
+ container's insertion method. If <a class="link" href="has_stable_iters_selector.html" title="has_stable_iterators_selector"><code class="computeroutput"><span class="identifier">has_stable_iterators_selector</span></code></a>
+ evaluates to boost::mpl::true_ for the specified selector,
+ then the call operator's return value will be a Single Pass Range of iterators pointing
+ to each of the elements that were successfully inserted in the container.
+ </p>
+<p>
+ The return type of this metafunction also defines an indexing operator
+ that accepts a reference to a container and returns a proxy object that
+ allows range insertion function calls to be chained together, much like
+ Boost.Assign.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.push_range_function_gen.definition"></a><a class="link" href="push_range_function_gen.html#container_gen.reference.push_range_function_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/push_range_function_gen.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.push_range_function_gen.example"></a><a class="link" href="push_range_function_gen.html#container_gen.reference.push_range_function_gen.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ Use the boost::range::equal()
+ algorithm to test two ranges for equality. To handle the case where the
+ range returned from a call to the <code class="computeroutput"><span class="identifier">push_range_function_gen</span></code>
+ return function type is a Single Pass Range of iterators, use boost::adaptors::indirect().
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">ResultRange</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AddedContainer</span><span class="special">&gt;</span>
+<span class="keyword">bool</span>
+ <span class="identifier">test_result_range</span><span class="special">(</span>
+ <span class="identifier">ResultRange</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span>
+ <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">c</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">indirect</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">ResultRange</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AddedContainer</span><span class="special">&gt;</span>
+<span class="keyword">bool</span>
+ <span class="identifier">test_result_range</span><span class="special">(</span>
+ <span class="identifier">ResultRange</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span>
+ <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">c</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Use the <a class="link" href="emplace_function_gen.html" title="emplace_function_gen"><code class="computeroutput"><span class="identifier">emplace_function_gen</span></code></a> metafunction
+ to construct containers using individual elements, then use this metafunction
+ to append the elements of one container to another in a single step. Use
+ the <a class="link" href="insert_range_result_gen.html" title="insert_range_result_gen"><code class="computeroutput"><span class="identifier">insert_range_result_gen</span></code></a> metafunction
+ to store the result of the operation.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AddedContainer</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_push_range_function_gen</span><span class="special">(</span><span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">added_container</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">example_container</span><span class="special">,</span> <span class="identifier">test_container</span><span class="special">,</span> <span class="identifier">input_container</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">emplacer</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">push_range_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">range_pusher</span><span class="special">;</span>
+
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">example_container</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"easy"</span><span class="special">)(</span><span class="string">"baker"</span><span class="special">)(</span><span class="string">"charlie"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">test_container</span> <span class="special">=</span> <span class="identifier">example_container</span><span class="special">;</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">example_container</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">input_container</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">insert_range_result_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">push_range_result</span> <span class="special">=</span> <span class="identifier">range_pusher</span><span class="special">(</span><span class="identifier">test_container</span><span class="special">,</span> <span class="identifier">input_container</span><span class="special">);</span>
+
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span>
+ <span class="identifier">test_result_range</span><span class="special">(</span>
+ <span class="identifier">push_range_result</span>
+ <span class="special">,</span> <span class="identifier">added_container</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;()</span>
+ <span class="special">)</span>
+ <span class="special">);</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">test_container</span><span class="special">,</span> <span class="identifier">example_container</span><span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Test this metafunction across a wide variety of selector types.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">test_main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">**</span> <span class="identifier">argv</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">added_container</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">emplacer</span><span class="special">;</span>
+
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">added_container</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">test_push_range_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;(</span><span class="identifier">added_container</span><span class="special">);</span>
+ <span class="identifier">test_push_range_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;(</span><span class="identifier">added_container</span><span class="special">);</span>
+ <span class="identifier">test_push_range_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;(</span><span class="identifier">added_container</span><span class="special">);</span>
+ <span class="comment">// ...</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The complete test program spans the following source files:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ <test/result_range.hpp>
+ </p></li>
+<li class="listitem"><p>
+ <test/push_range_function_gen.cpp>
+ </p></li>
+</ul></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_assoc_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_range_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/selectors.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/selectors.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,1186 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Selectors</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="container_gen.html" title="container_gen">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="container_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.selectors"></a><a class="link" href="selectors.html" title="Selectors">Selectors</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.selectors.synopsis"></a><a class="link" href="selectors.html#container_gen.reference.selectors.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+ This library provides several selector templates, one for each STL Container model, Boost.Container, Boost.Unordered container, Boost.PointerContainer, STL container adaptor,
+ and Boost.Heap
+ data structure to which it corresponds.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">ConstantSize</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsTR1NotBoost</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">array_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsBoostNotStd</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">vector_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsBoostNotStd</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">deque_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsBoostNotStd</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">list_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">stable_vector_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">ConstantCapacity</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">static_vector_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">slist_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsBoostNotStd</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">set_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsBoostNotStd</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">map_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsBoostNotStd</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">multiset_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsBoostNotStd</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">multimap_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_flat_allocator_selector</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">flat_set_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_flat_allocator_selector</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">flat_map_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_flat_allocator_selector</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">flat_multiset_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_flat_allocator_selector</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">flat_multimap_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">HashSelector</span> <span class="special">=</span> <span class="identifier">boost_hash_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">equal_to_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsTR1NotBoost</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">hash_set_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">HashSelector</span> <span class="special">=</span> <span class="identifier">boost_hash_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">equal_to_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsTR1NotBoost</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">hash_map_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">HashSelector</span> <span class="special">=</span> <span class="identifier">boost_hash_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">equal_to_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsTR1NotBoost</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">hash_multiset_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">HashSelector</span> <span class="special">=</span> <span class="identifier">boost_hash_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">equal_to_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsTR1NotBoost</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">hash_multimap_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">ConstantSize</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_array_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_vector_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_deque_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_list_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_set_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_map_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_multiset_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_multimap_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">HashSelector</span> <span class="special">=</span> <span class="identifier">boost_hash_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">equal_to_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_hash_set_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">HashSelector</span> <span class="special">=</span> <span class="identifier">boost_hash_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">equal_to_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_hash_map_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">HashSelector</span> <span class="special">=</span> <span class="identifier">boost_hash_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">equal_to_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_hash_multiset_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">HashSelector</span> <span class="special">=</span> <span class="identifier">boost_hash_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">equal_to_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CloneAllocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap_clone_allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">*&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">ptr_hash_multimap_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">SequenceSelector</span> <span class="special">=</span> <span class="identifier">deque_selector</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">stack_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">SequenceSelector</span> <span class="special">=</span> <span class="identifier">deque_selector</span><span class="special">&lt;&gt;</span> <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">queue_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">SequenceSelector</span> <span class="special">=</span> <span class="identifier">deque_selector</span><span class="special">&lt;&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">std_heap_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsStable</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stable</span><span class="special">&lt;</span><span class="keyword">false</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">StabilityCounterType</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stability_counter_type</span><span class="special">&lt;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">priority_queue_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">Arity</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsStable</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stable</span><span class="special">&lt;</span><span class="keyword">false</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">StabilityCounterType</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stability_counter_type</span><span class="special">&lt;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+ <span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsMutable</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">mutable_</span><span class="special">&lt;</span><span class="keyword">false</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">d_ary_heap_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsStable</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stable</span><span class="special">&lt;</span><span class="keyword">false</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">StabilityCounterType</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stability_counter_type</span><span class="special">&lt;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+ <span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">binomial_heap_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsStable</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stable</span><span class="special">&lt;</span><span class="keyword">false</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">StabilityCounterType</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stability_counter_type</span><span class="special">&lt;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+ <span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">ConstantTimeSize</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">constant_time_size</span><span class="special">&lt;</span><span class="keyword">true</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">fibonacci_heap_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsStable</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stable</span><span class="special">&lt;</span><span class="keyword">false</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">StabilityCounterType</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stability_counter_type</span><span class="special">&lt;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+ <span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">ConstantTimeSize</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">constant_time_size</span><span class="special">&lt;</span><span class="keyword">true</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">pairing_heap_selector</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">CompareSelector</span> <span class="special">=</span> <span class="identifier">less_than_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsStable</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stable</span><span class="special">&lt;</span><span class="keyword">false</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">StoresParentPointer</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">store_parent_pointer</span><span class="special">&lt;</span>
+ <span class="keyword">false</span>
+ <span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">StabilityCounterType</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">stability_counter_type</span><span class="special">&lt;</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+ <span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">ConstantTimeSize</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">constant_time_size</span><span class="special">&lt;</span><span class="keyword">true</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsMutable</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">heap</span><span class="special">::</span><span class="identifier">mutable_</span><span class="special">&lt;</span><span class="keyword">false</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">skew_heap_selector</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+<p>
+ In turn, some of the default arguments of these selector templates are
+ themselves selector types.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">struct</span> <span class="identifier">equal_to_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined</span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">less_than_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined</span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">greater_than_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined</span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">binary_predicate_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function2</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;,</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;&gt;</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">tr1_binary_predicate_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">function</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;,</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;)&gt;</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">CompareSelector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">equivalence_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equivalence_function_gen</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap1</span><span class="special">&lt;</span><span class="identifier">CompareSelector</span><span class="special">,</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">boost_hash_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">tr1_hash_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">hash</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">std_allocator_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special">&lt;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special">&lt;</span><span class="identifier">T2</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">T1</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">T1</span> <span class="keyword">const</span><span class="special">,</span><span class="identifier">T2</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">std_flat_allocator_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special">&lt;</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special">&lt;</span><span class="identifier">T2</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="identifier">T1</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+<p>
+ To instantiate a model of Associative Container that stores C-style
+ strings as keys, pass the appropriate one of these types as the <code class="computeroutput"><span class="identifier">CompareSelector</span></code> argument to the corresponding
+ container selector template.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">struct</span> <span class="identifier">c_str_equal_to_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">class</span> <span class="identifier">type</span>
+ <span class="special">{</span>
+ <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">bool</span>
+ <span class="identifier">_evaluate</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">true_type</span>
+ <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">!</span><span class="identifier">strcmp</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">bool</span>
+ <span class="identifier">_evaluate</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">false_type</span>
+ <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">!</span><span class="identifier">wcscmp</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">first_argument_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">second_argument_type</span><span class="special">;</span>
+
+ <span class="keyword">inline</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">type</span><span class="special">::</span><span class="identifier">_evaluate</span><span class="special">(</span>
+ <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">rhs</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_cv</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_pointer</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="keyword">char</span>
+ <span class="special">&gt;()</span>
+ <span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">c_str_less_than_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">class</span> <span class="identifier">type</span>
+ <span class="special">{</span>
+ <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">bool</span>
+ <span class="identifier">_evaluate</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">true_type</span>
+ <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">strcmp</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="special">&lt;</span> <span class="number">0</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">bool</span>
+ <span class="identifier">_evaluate</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">false_type</span>
+ <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">wcscmp</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="special">&lt;</span> <span class="number">0</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">first_argument_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">second_argument_type</span><span class="special">;</span>
+
+ <span class="keyword">inline</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">type</span><span class="special">::</span><span class="identifier">_evaluate</span><span class="special">(</span>
+ <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">rhs</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_cv</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_pointer</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="keyword">char</span>
+ <span class="special">&gt;()</span>
+ <span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">c_str_greater_than_selector</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">class</span> <span class="identifier">type</span>
+ <span class="special">{</span>
+ <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">bool</span>
+ <span class="identifier">_evaluate</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">true_type</span>
+ <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="number">0</span> <span class="special">&lt;</span> <span class="identifier">strcmp</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keyword">bool</span>
+ <span class="identifier">_evaluate</span><span class="special">(</span>
+ <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">false_type</span>
+ <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="number">0</span> <span class="special">&lt;</span> <span class="identifier">wcscmp</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">first_argument_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">second_argument_type</span><span class="special">;</span>
+
+ <span class="keyword">inline</span> <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">type</span><span class="special">::</span><span class="identifier">_evaluate</span><span class="special">(</span>
+ <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">rhs</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_cv</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_pointer</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="keyword">char</span>
+ <span class="special">&gt;()</span>
+ <span class="special">);</span>
+ <span class="special">}</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+<p>
+ This library also retains the old selector types and, for completeness,
+ provides type definitions of the selector templates with default arguments.
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">vector_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">vecS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">deque_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">dequeS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">list_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">listS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">slist_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">slistS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">set_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">setS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">map_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">mapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">multiset_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">multisetS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">multimap_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">multimapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">hash_set_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">hash_setS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">hash_map_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">hash_mapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">hash_multiset_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">hash_multisetS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">hash_multimap_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">hash_multimapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_vector_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_vecS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_deque_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_dequeS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_list_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_listS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_set_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_setS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_map_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_mapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_multiset_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_multisetS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_multimap_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_multimapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_hash_set_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_hash_setS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_hash_map_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_hash_mapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_hash_multiset_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_hash_multisetS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">ptr_hash_multimap_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">ptr_hash_multimapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">stable_vector_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">stable_vecS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">flat_set_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">flat_setS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">flat_map_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">flat_mapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">flat_multiset_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">flat_multisetS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">flat_multimap_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">flat_multimapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">stack_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">stackS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">queue_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">queueS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">std_heap_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">std_heapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">priority_queue_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">priority_queueS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">binomial_heap_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">binomial_heapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">fibonacci_heap_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">fibonacci_heapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">pairing_heap_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">pairing_heapS</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">skew_heap_selector</span><span class="special">&lt;&gt;</span> <span class="identifier">skew_heapS</span><span class="special">;</span>
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.selectors.description"></a><a class="link" href="selectors.html#container_gen.reference.selectors.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Selector templates determine the return type of the <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> metafunction. Since
+ the container models are not templatized on just their value types, the
+ selector templates must take in analogous arguments in order to provide
+ maximum flexibility. The following example demonstrates how a std::list with a custom allocator
+ type can become the <code class="computeroutput"><span class="identifier">OutEdgeList</span></code>
+ of a boost::adjacency_list.
+ </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">int_allocator_selector</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">};</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">*[])</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">adjacency_list</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">,</span><span class="identifier">int_allocator_selector</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">directedS</span>
+ <span class="special">&gt;</span> <span class="identifier">g</span><span class="special">(</span><span class="number">5</span><span class="special">);</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">get</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vertex_index</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vertex</span><span class="special">(</span><span class="number">4</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span>
+ <span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Selector templates evaluate each parameter the same way, so the following
+ table will suffice in documenting the parameters. Note that fully qualified
+ template parameters must be explicitly named if required by the container
+ return type or when overriding the default argument type unless the table
+ specifies that the argument types to which they are bound can be deduced.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Boost.Parameter Name
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Deducible?
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ConstantSize</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">constant_size_arg</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ An Integral Constant that determines
+ the size of the boost::array or std::tr1::array type to be returned
+ by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, by boost::is_mpl_integral_constant.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ConstantCapacity</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ N/A
+ </p>
+ </td>
+<td>
+ <p>
+ An Integral Constant that determines
+ the capacity of the boost::container::static_vector to be
+ returned by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ Unnecessary.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsBoostNotStd</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_boost_not_std_arg</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Boolean Integral Constant that
+ determines whether <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will return
+ the appropriate Boost.Container type or the corresponding
+ C++ standard container.
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, by boost::is_mpl_boolean_constant.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsTR1NotBoost</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_tr1_not_boost_arg</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Boolean Integral Constant that
+ determines whether <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> will return
+ the appropriate Boost.TR1 container type or the
+ corresponding Boost container type.
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, by boost::is_mpl_boolean_constant.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AllocatorSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">allocator_selector_arg</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in the value type and returns an allocator model. The return
+ type will become the container template's <code class="computeroutput"><span class="identifier">Allocator</span></code>
+ or boost::heap::allocator argument.
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, by <a class="link" href="is_allocator_selector.html" title="is_allocator_selector"><code class="computeroutput"><span class="identifier">is_allocator_selector</span></code></a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">CompareSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">compare_selector_arg</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ If the selector template causes <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return
+ a Sorted Associative Container model,
+ a std::priority_queue template
+ class, or a Boost.Heap
+ data structure, then a Unary Metafunction Class that
+ takes in the value type and returns a Strict Weak Ordering model. If
+ the selector template causes <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return
+ a Hashed Associative Container model,
+ then a Unary Metafunction Class that
+ takes in the value type and returns a Binary Predicate model. The return
+ type of the selector template will become the container template's
+ <code class="computeroutput"><span class="identifier">Compare</span></code>, <code class="computeroutput"><span class="identifier">Pred</span></code>, or boost::heap::compare argument.
+ </p>
+ <p>
+ If the selector template is <code class="computeroutput"><span class="identifier">equivalence_selector</span></code>,
+ then a Unary Metafunction Class that
+ takes in the argument type and returns a Strict Weak Ordering model. The
+ return type of <code class="computeroutput"><span class="identifier">equivalence_selector</span></code>
+ will be the same as that of boost::equivalence_function_gen
+ passed in the Strict Weak Ordering model.
+ </p>
+ <p>
+ By way of example, as discussed in the <a class="link" href="selectors.html#container_gen.reference.selectors.synopsis" title="Synopsis">synopsis</a>,
+ the <code class="computeroutput"><span class="identifier">c_str_equal_to_selector</span></code>
+ type can be passed as the <code class="computeroutput"><span class="identifier">CompareSelector</span></code>
+ argument to the <code class="computeroutput"><span class="identifier">hash_set_selector</span></code>
+ template, which in turn can be passed to <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return
+ a Hashed Associative Container model
+ that stores C-style strings as keys.
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, by <a class="link" href="is_compare_selector.html" title="is_compare_selector"><code class="computeroutput"><span class="identifier">is_compare_selector</span></code></a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">HashSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hasher_selector_arg</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in the value type and returns a Hash Function model. The return
+ type will become the container template's <code class="computeroutput"><span class="identifier">Hash</span></code>
+ argument.
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, by <a class="link" href="is_hasher_selector.html" title="is_hasher_selector"><code class="computeroutput"><span class="identifier">is_hasher_selector</span></code></a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">SequenceSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">sequence_selector_arg</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in the value type and returns a Sequence model. The return type
+ will become the container adaptor template's <code class="computeroutput"><span class="identifier">Sequence</span></code>
+ argument.
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, by <a class="link" href="is_container_selector.html" title="is_container_selector"><code class="computeroutput"><span class="identifier">is_container_selector</span></code></a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">CloneAllocator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_clone_allocator_arg</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Clone Allocator model that will
+ become the container template's corresponding argument.
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, as long as the BOOST_MPL_CFG_NO_HAS_XXX
+ preprocessor token is not defined.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Allocator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_allocator_arg</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ An allocator model that will become the container template's
+ corresponding argument.
+ </p>
+ </td>
+<td>
+ <p>
+ Yes, as long as the BOOST_MPL_CFG_NO_HAS_XXX
+ preprocessor token is not defined.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsStable</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost::heap::stable
+ </p>
+ </td>
+<td>
+ <p>
+ Causes <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return
+ a Boost.Heap
+ data structure that either orders elements with the same priority
+ according to insertion time or does not, depending on the value
+ of the boolean non-type template argument. The default value
+ is <code class="computeroutput"><span class="keyword">false</span></code>.
+ </p>
+ </td>
+<td>
+ <p>
+ No.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsMutable</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost::heap::mutable_
+ </p>
+ </td>
+<td>
+ <p>
+ Causes <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return
+ a Boost.Heap
+ data structure that either allows the priority of its elements
+ to be changed or does not, depending on the value of the boolean
+ non-type template argument. The default value is <code class="computeroutput"><span class="keyword">false</span></code>.
+ </p>
+ </td>
+<td>
+ <p>
+ No.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">StabilityCounterType</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost::heap::stability_counter_type
+ </p>
+ </td>
+<td>
+ <p>
+ Causes <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return
+ a Boost.Heap
+ data structure that associates an integer version count with
+ each element in order to distinguish between elements with the
+ same priority. The default type is <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span></code>.
+ </p>
+ </td>
+<td>
+ <p>
+ No.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ConstantTimeSize</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost::heap::constant_time_size
+ </p>
+ </td>
+<td>
+ <p>
+ Causes <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return
+ a Boost.Heap
+ data structure whose <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code> member function either has
+ constant time complexity or does not, depending on the value
+ of the boolean non-type template argument. The default value
+ is <code class="computeroutput"><span class="keyword">true</span></code>.
+ </p>
+ </td>
+<td>
+ <p>
+ No.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Arity</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost::heap::arity
+ </p>
+ </td>
+<td>
+ <p>
+ Please consult the class reference of the Boost.Heap data structure which
+ the selector template will cause <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return.
+ </p>
+ </td>
+<td>
+ <p>
+ No.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">StoresParentPointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost::heap::store_parent_pointer
+ </p>
+ </td>
+<td>
+ <p>
+ Please consult the class reference of the Boost.Heap data structure which
+ the selector template will cause <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> to return.
+ </p>
+ </td>
+<td>
+ <p>
+ No.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.selectors.definition"></a><a class="link" href="selectors.html#container_gen.reference.selectors.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+ C-style string comparator selectors:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/c_str_cmp_selectors.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ Forward declarations:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/c_str_cmp_selectors_fwd.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ To register them under Boost.Typeof:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/typeof/boost/container_gen/c_str_cmp_selectors.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ All other selectors and selector templates:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/selectors.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ Forward declarations:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/selectors_fwd.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ To register them under Boost.Typeof:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/typeof/boost/container_gen/selectors.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="container_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/splice_function_gen.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/splice_function_gen.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,316 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>splice_function_gen</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="insert_range_function_gen.html" title="insert_range_function_gen">
+<link rel="next" href="insert_range_result_gen.html" title="insert_range_result_gen">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_range_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_range_result_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="container_gen.reference.splice_function_gen"></a><a class="link" href="splice_function_gen.html" title="splice_function_gen"><code class="computeroutput"><span class="identifier">splice_function_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.splice_function_gen.synopsis"></a><a class="link" href="splice_function_gen.html#container_gen.reference.splice_function_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">splice_function_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+<span class="special">}</span> <span class="comment">// namespace boost</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.splice_function_gen.description"></a><a class="link" href="splice_function_gen.html#container_gen.reference.splice_function_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Returns a Default Constructible function object type
+ whose call operator will take in a reference to the destination container,
+ a valid iterator representing the point of insertion, a reference to the
+ source container, and one of the following:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ A valid iterator representing the point of erasure from the source
+ container.
+ </p></li>
+<li class="listitem"><p>
+ Two Input Iterator arguments representing
+ the source container or a subrange.
+ </p></li>
+</ul></div>
+<p>
+ The container type must model the Sequence concept. In practice, the container
+ type must be produced by <a class="link" href="container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a> when given the same
+ selector template argument.
+ </p>
+<p>
+ The function call operator that takes in a single iterator to the source
+ container will transfer that element to the destination container at the
+ specified point of insertion. The return value will be an iterator pointing
+ to the inserted element. If the points of insertion and erasure are the
+ same, then the operation will have no effect.
+ </p>
+<p>
+ The function call operators that take in a subrange of the source container
+ will transfer the elements in the subrange to the destination container
+ at the specified point of insertion. The return value will be a Single Pass Range over the elements inserted
+ in the container. The source and destination containers can be the same
+ as long as the point of insertion lies outside the subrange. (If the point
+ of insertion is at the beginning or just past-the-end of the subrange,
+ then the operation will have no effect.)
+ </p>
+<p>
+ The return type of this metafunction also defines an indexing operator
+ that accepts a reference to a container and returns a proxy object that
+ allows splice function calls to be chained together, much like Boost.Assign.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.splice_function_gen.definition"></a><a class="link" href="splice_function_gen.html#container_gen.reference.splice_function_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/container_gen/splice_function_gen.hpp<span class="special">&gt;</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.splice_function_gen.example"></a><a class="link" href="splice_function_gen.html#container_gen.reference.splice_function_gen.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ Use the boost::range::equal()
+ algorithm to test two ranges for equality.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">ResultRange</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AddedContainer</span><span class="special">&gt;</span>
+<span class="keyword">bool</span>
+ <span class="identifier">test_result_range</span><span class="special">(</span>
+ <span class="identifier">ResultRange</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span>
+ <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">c</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">adaptors</span><span class="special">::</span><span class="identifier">indirect</span><span class="special">(</span><span class="identifier">r</span><span class="special">),</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">ResultRange</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AddedContainer</span><span class="special">&gt;</span>
+<span class="keyword">bool</span>
+ <span class="identifier">test_result_range</span><span class="special">(</span>
+ <span class="identifier">ResultRange</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">r</span>
+ <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">c</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Use the <a class="link" href="emplace_function_gen.html" title="emplace_function_gen"><code class="computeroutput"><span class="identifier">emplace_function_gen</span></code></a> metafunction
+ to construct containers using individual elements, then use this metafunction
+ to append the elements of one container to another in a single step. Use
+ the <a class="link" href="insert_range_result_gen.html" title="insert_range_result_gen"><code class="computeroutput"><span class="identifier">insert_range_result_gen</span></code></a> metafunction
+ to store the result of the operation.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AddedContainer</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_splice_function_gen</span><span class="special">(</span><span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">added_container</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">test_splice_function_gen_in_place</span><span class="special">(</span><span class="identifier">Selector</span><span class="special">());</span>
+
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">C</span><span class="special">;</span>
+
+ <span class="identifier">C</span> <span class="identifier">ex_seq_1</span><span class="special">,</span> <span class="identifier">ex_seq_2</span><span class="special">,</span> <span class="identifier">test_seq_1</span><span class="special">,</span> <span class="identifier">test_seq_2</span><span class="special">,</span> <span class="identifier">input_seq</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">emplacer</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">splice_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">splicer</span><span class="special">;</span>
+
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">ex_seq_1</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"easy"</span><span class="special">)(</span><span class="string">"kilo"</span><span class="special">)(</span><span class="string">"baker"</span><span class="special">)(</span><span class="string">"charlie"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">ex_seq_2</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"easy"</span><span class="special">)</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">)</span>
+ <span class="special">(</span><span class="string">"baker"</span><span class="special">)(</span><span class="string">"charlie"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">test_seq_1</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"easy"</span><span class="special">)(</span><span class="string">"baker"</span><span class="special">)(</span><span class="string">"charlie"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">input_seq</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"kilo"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">test_seq_2</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+
+ <span class="identifier">C</span> <span class="identifier">test_seq_3</span><span class="special">(</span><span class="identifier">test_seq_1</span><span class="special">);</span>
+ <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">itr</span> <span class="special">=</span> <span class="identifier">splicer</span><span class="special">(</span>
+ <span class="identifier">test_seq_1</span>
+ <span class="special">,</span> <span class="special">++++++</span><span class="identifier">test_seq_1</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">,</span> <span class="identifier">input_seq</span>
+ <span class="special">,</span> <span class="special">++++++</span><span class="identifier">input_seq</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="identifier">BOOST_CHECK</span><span class="special">(*</span><span class="identifier">itr</span> <span class="special">==</span> <span class="identifier">test_string</span><span class="special">(</span><span class="string">"kilo"</span><span class="special">));</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">test_seq_1</span><span class="special">,</span> <span class="identifier">ex_seq_1</span><span class="special">));</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">test_seq_2</span><span class="special">,</span> <span class="identifier">input_seq</span><span class="special">));</span>
+
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">insert_range_result_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">insert_range_result</span> <span class="special">=</span> <span class="identifier">splicer</span><span class="special">(</span>
+ <span class="identifier">test_seq_3</span>
+ <span class="special">,</span> <span class="special">++++++</span><span class="identifier">test_seq_3</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">,</span> <span class="identifier">input_seq</span>
+ <span class="special">,</span> <span class="identifier">input_seq</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">,</span> <span class="identifier">input_seq</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span>
+ <span class="identifier">test_result_range</span><span class="special">(</span>
+ <span class="identifier">insert_range_result</span>
+ <span class="special">,</span> <span class="identifier">added_container</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_associative_selector</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;()</span>
+ <span class="special">)</span>
+ <span class="special">);</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">input_seq</span><span class="special">.</span><span class="identifier">empty</span><span class="special">());</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">test_seq_3</span><span class="special">,</span> <span class="identifier">ex_seq_2</span><span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Remember that the splice operation can be performed in place--with the
+ source and destination containers being the same--as long as the destination
+ iterator points to a position outside the source range of input iterators.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">C</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+<span class="keyword">void</span>
+ <span class="identifier">test_splice_function_gen_init</span><span class="special">(</span>
+ <span class="identifier">C</span><span class="special">&amp;</span> <span class="identifier">ex_seq_1</span>
+ <span class="special">,</span> <span class="identifier">C</span><span class="special">&amp;</span> <span class="identifier">ex_seq_2</span>
+ <span class="special">,</span> <span class="identifier">C</span><span class="special">&amp;</span> <span class="identifier">input_seq</span>
+ <span class="special">,</span> <span class="identifier">Selector</span>
+ <span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">emplacer</span><span class="special">;</span>
+
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">ex_seq_1</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"easy"</span><span class="special">)(</span><span class="string">"kilo"</span><span class="special">)(</span><span class="string">"baker"</span><span class="special">)(</span><span class="string">"charlie"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">ex_seq_2</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"easy"</span><span class="special">)(</span><span class="string">"baker"</span><span class="special">)(</span><span class="string">"charlie"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">)(</span><span class="string">"kilo"</span><span class="special">);</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">input_seq</span><span class="special">]</span>
+ <span class="special">(</span><span class="string">"baker"</span><span class="special">)(</span><span class="string">"charlie"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_splice_function_gen_in_place</span><span class="special">(</span><span class="identifier">Selector</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">C</span><span class="special">;</span>
+
+ <span class="identifier">C</span> <span class="identifier">ex_seq_1</span><span class="special">,</span> <span class="identifier">ex_seq_2</span><span class="special">,</span> <span class="identifier">input_seq</span><span class="special">;</span>
+
+ <span class="identifier">test_splice_function_gen_init</span><span class="special">(</span><span class="identifier">ex_seq_1</span><span class="special">,</span> <span class="identifier">ex_seq_2</span><span class="special">,</span> <span class="identifier">input_seq</span><span class="special">,</span> <span class="identifier">Selector</span><span class="special">());</span>
+
+ <span class="identifier">C</span> <span class="identifier">test_seq</span><span class="special">(</span><span class="identifier">ex_seq_1</span><span class="special">);</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">splice_function_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">splicer</span><span class="special">;</span>
+ <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">insert_range_result_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">insert_range_result</span> <span class="special">=</span> <span class="identifier">splicer</span><span class="special">(</span>
+ <span class="identifier">test_seq</span>
+ <span class="special">,</span> <span class="special">++++++</span><span class="identifier">test_seq</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">,</span> <span class="identifier">test_seq</span>
+ <span class="special">,</span> <span class="special">++++++++</span><span class="identifier">test_seq</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">,</span> <span class="identifier">test_seq</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">insert_range_result</span><span class="special">,</span> <span class="identifier">input_seq</span><span class="special">));</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">test_seq</span><span class="special">,</span> <span class="identifier">ex_seq_2</span><span class="special">));</span>
+
+ <span class="keyword">typename</span> <span class="identifier">C</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">itr</span> <span class="special">=</span> <span class="identifier">splicer</span><span class="special">(</span>
+ <span class="identifier">test_seq</span>
+ <span class="special">,</span> <span class="special">++++++</span><span class="identifier">test_seq</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">,</span> <span class="identifier">test_seq</span>
+ <span class="special">,</span> <span class="special">++++++++++++</span><span class="identifier">test_seq</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="identifier">BOOST_CHECK</span><span class="special">(*</span><span class="identifier">itr</span> <span class="special">==</span> <span class="identifier">test_string</span><span class="special">(</span><span class="string">"kilo"</span><span class="special">));</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">test_seq</span><span class="special">,</span> <span class="identifier">ex_seq_1</span><span class="special">));</span>
+ <span class="identifier">itr</span> <span class="special">=</span> <span class="identifier">splicer</span><span class="special">(</span>
+ <span class="identifier">test_seq</span>
+ <span class="special">,</span> <span class="identifier">test_seq</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span>
+ <span class="special">,</span> <span class="identifier">test_seq</span>
+ <span class="special">,</span> <span class="special">++++++</span><span class="identifier">test_seq</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">);</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(*</span><span class="identifier">itr</span> <span class="special">==</span> <span class="identifier">test_string</span><span class="special">(</span><span class="string">"kilo"</span><span class="special">));</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">test_seq</span><span class="special">,</span> <span class="identifier">ex_seq_2</span><span class="special">));</span>
+ <span class="identifier">insert_range_result</span> <span class="special">=</span> <span class="identifier">splicer</span><span class="special">(</span>
+ <span class="identifier">test_seq</span>
+ <span class="special">,</span> <span class="identifier">test_seq</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span>
+ <span class="special">,</span> <span class="identifier">test_seq</span>
+ <span class="special">,</span> <span class="special">++++++</span><span class="identifier">test_seq</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">,</span> <span class="special">++++++++++++</span><span class="identifier">test_seq</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">);</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">insert_range_result</span><span class="special">,</span> <span class="identifier">input_seq</span><span class="special">));</span>
+ <span class="identifier">BOOST_CHECK</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">range</span><span class="special">::</span><span class="identifier">equal</span><span class="special">(</span><span class="identifier">test_seq</span><span class="special">,</span> <span class="identifier">ex_seq_1</span><span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+ Test this metafunction across a wide variety of selector types.
+ </p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">test_main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">**</span> <span class="identifier">argv</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">c</span><span class="special">;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">emplace_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">emplacer</span><span class="special">;</span>
+
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">c</span><span class="special">](</span><span class="string">"able"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"dog"</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">static_vector_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="number">16</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">&gt;</span> <span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+ <span class="identifier">c</span><span class="special">.</span><span class="identifier">clear</span><span class="special">();</span>
+ <span class="identifier">emplacer</span><span class="special">[</span><span class="identifier">c</span><span class="special">](</span><span class="string">"dog"</span><span class="special">)(</span><span class="string">"jupiter"</span><span class="special">)(</span><span class="string">"hotel"</span><span class="special">)(</span><span class="string">"iota"</span><span class="special">)(</span><span class="string">"fox"</span><span class="special">)(</span><span class="string">"able"</span><span class="special">);</span>
+ <span class="identifier">test_splice_function_gen</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">&gt;(</span><span class="identifier">c</span><span class="special">);</span>
+
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ The complete test program spans the following source files:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ <test/result_range.hpp>
+ </p></li>
+<li class="listitem"><p>
+ <test/splice_function_gen.cpp>
+ </p></li>
+</ul></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage<p>
+ Distributed under 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="insert_range_function_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="insert_range_result_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/html/index.html
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/html/index.html 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter&#160;1.&#160;container_gen 0.10</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="index.html" title="Chapter&#160;1.&#160;container_gen 0.10">
+<link rel="next" href="container_gen/reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="container_gen/reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a></div>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="container_gen"></a>Chapter&#160;1.&#160;container_gen 0.10</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Andrew</span> <span class="surname">Lumsdaine</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Lie-Quan</span> <span class="surname">Lee</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Thomas</span> <span class="surname">Claveirole</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Jeremy G.</span> <span class="surname">Siek</span>
+</h3></div></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Cromwell D.</span> <span class="surname">Enage</span>
+</h3></div></div>
+<div><p class="copyright">Copyright &#169; 1997-2013 Andrew Lumsdaine, Lie-Quan Lee,
+ Thomas Claveirole, Jeremy G. Siek, Cromwell D. Enage</p></div>
+<div><div class="legalnotice">
+<a name="container_gen.legal"></a><p>
+ Distributed under 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)
+ </p>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Reference</span></dt>
+<dt><span class="section">Changelog</span></dt>
+</dl>
+</div>
+<h3>
+<a name="container_gen.h0"></a>
+ <span class="phrase"><a name="container_gen.rationale"></a></span><a class="link" href="index.html#container_gen.rationale">Rationale</a>
+ </h3>
+<p>
+ Significant interest was expressed in moving the <code class="computeroutput"><span class="identifier">container_gen</span></code>
+ metafunction from its current place in the BGL
+ to a more general or first-class residence. The relevant discussion is archived
+ here: http://lists.boost.org/Archives/boost/2011/05/181573.php.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: July 14, 2013 at 16:40:15 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="container_gen/reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a></div>
+</body>
+</html>

Added: sandbox/container_gen/libs/container_gen/doc/ref_container_gen.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_container_gen.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,92 @@
+[/=============================================================================
+ Copyright (C) 2000-2001 Jeremy G. Siek
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:container_gen `container_gen`]
+
+[section Synopsis]
+[reference__container_gen]
+[endsect]
+
+[section Description]
+The __graph_adjacency_list__ class template uses this metafunction to map the
+`OutEdgeList` and `VertexList` selectors to the actual container types used
+for the graph storage. You can also use this metafunction to determine the
+appropriate associative container type given the specified selector. The
+example routine below uses the `container_gen` return type to associate each
+distinct string character with the number of times it appears in the string.
+
+[example__output_char_tallies__definition]
+
+This library provides specializations of this metafunction class for each
+selector it provides whose resulting storage type models the __STL_Container__
+concept. Here, two such selectors are passed in calls to the example routine.
+
+[example__output_char_tallies__calls]
+
+The `container_gen` specialization for the `stable_vector_selector` template is
+shown here.
+
+[reference__container_gen__stable_vector_specialization]
+
+You can use `container_gen` to easily select an appropriate
+__Boost_Pointer_Container__ type. Pointer containers are ideal for storing
+heterogeneous items with a common base type, e.g. shapes:
+
+[example__output_shape_stats__type_definitions]
+
+Many algorithms that work on the standard containers also work on pointer
+containers out of the box.
+
+[example__output_shape_stats__functions]
+
+The `container_gen` metafunction allows you to programmatically swap out
+different pointer container types using type selectors.
+
+[example__output_shape_stats__usage]
+
+You can also use `container_gen` to select an appropriate STL container adaptor
+or __Boost_Heap__ data structure. Stacks and priority queues work well for
+reordering items stored in other containers.
+
+[example__output_rearrangements__functions]
+
+Again, thanks to the `container_gen` metafunction, you can use type selectors
+to swap out different container adaptor and heap types.
+
+[example__output_rearrangements__main]
+
+It is possible to nest associative containers via `container_gen`, e.g.:
+
+``
+typedef container_gen<
+ mapS
+ , container_gen<setS,char>::type
+ , _std_string_
+ >::type
+ MapOfCharSets2Strings;
+``
+
+Finally, to use some other container of your choice, define a selector
+class and then specialize this metafunction for your selector.
+[endsect] [/ Description]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_container_gen_hpp__>
+``
+
+Forward declaration:
+
+``
+#include <__boost_container_gen_container_gen_fwd_hpp__>
+``
+[endsect]
+
+[endsect] [/ container_gen]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_emplace_assoc_func_gen.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_emplace_assoc_func_gen.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,74 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:emplace_assoc_function_gen `emplace_associative_function_gen`]
+
+[section Synopsis]
+[reference__emplace_associative_function_gen]
+[endsect]
+
+[section Description]
+Returns a __Default_Constructible__ n-ary function object type whose first
+argument type is a reference to an __Associative_Container__ and whose second
+argument type is convertible to the container's key type. In practice, the
+type of this container must be produced by __container_gen__ when given the
+same selector template argument. The rest of the function object's arguments,
+if any, will be forwarded either to the container's emplacement method (if
+__has_emplace_member_function_selector__ returns __mpl_true__ for the given
+selector) or to the mapped type's matching constructor. The call operator's
+return value is a __std_pair__ whose second element evaluates to `true` upon
+successful insertion and whose first element is an iterator pointing to the
+key-value pair inserted.
+
+The return type of this metafunction also defines an indexing operator that
+accepts a reference to a container and returns a proxy object that allows
+emplacement function calls to be chained together, much like __Boost_Assign__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_emplace_assoc_function_gen_hpp__>
+``
+[endsect]
+
+[section Example]
+``
+template <typename Selector>
+void example()
+{
+ typename _container_gen_<Selector,int,_std_string_>::type c1, c2, c3;
+ typename emplace_associative_function_gen<Selector>::type emplacer;
+
+ _AUTO_TPL_(result1, emplacer(c1, -1, "Hello,"));
+ _AUTO_TPL_(result2, emplacer(c2, -1, "Hello,"));
+ _ASSERT_(result1 == result2);
+
+ result1 = emplacer(c1, 42, "world!");
+ result2 = emplacer(c2, 42, "world!");
+ _ASSERT_(result1 == result2);
+ _ASSERT_(_range_equal_(c1, c2));
+
+ emplacer[c3](-1, "Hello,")(42, "world!");
+ _ASSERT_(_range_equal_(c1, c3));
+}
+
+int main()
+{
+ example<_map_selector_<_mpl_true_> >();
+ return 0;
+}
+``
+[endsect]
+
+[section Test]
+[@../../test/emplace_assoc_function_gen.cpp
+`<test/emplace_assoc_function_gen.cpp>`]
+[endsect]
+
+[endsect] [/ emplace_associative_function_gen]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_emplace_function_gen.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_emplace_function_gen.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,77 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:emplace_function_gen `emplace_function_gen`]
+
+[section Synopsis]
+[reference__emplace_function_gen]
+[endsect]
+
+[section Description]
+Returns a __Default_Constructible__ n-ary function object type whose first
+argument type is a reference to a container. In practice, the type of this
+container must be produced by __container_gen__ when given the same selector
+template argument. The rest of the function object's arguments, if any,
+will be forwarded either to the container's emplacement method (if
+__has_emplace_member_function_selector__ returns __mpl_true__ for the given
+selector) or to the value type's matching constructor.
+
+If the container is a mutable __Boost_Heap__ object, then the call operator's
+return value is the handle returned by the container's emplacement function
+call. If the container is a __Boost_Heap__ object that is not mutable, then
+the call operator's return type is `void`. Otherwise, the call operator's
+return value is a __std_pair__ whose second element evaluates to `true` upon
+successful insertion and whose first element is an iterator pointing to the
+element inserted.
+
+The return type of this metafunction also defines an indexing operator that
+accepts a reference to a container and returns a proxy object that allows
+emplacement function calls to be chained together, much like __Boost_Assign__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_emplace_function_gen_hpp__>
+``
+[endsect]
+
+[section Example]
+``
+template <typename Selector>
+void example()
+{
+ typename _container_gen_<Selector,_std_string_>::type c1, c2, c3;
+ typename emplace_function_gen<Selector>::type emplacer;
+
+ _AUTO_TPL_(result1, emplacer(c1, "Hello,"));
+ _AUTO_TPL_(result2, emplacer(c2, "Hello,"));
+ _ASSERT_(result1 == result2);
+
+ result1 = emplacer(c1, "world!");
+ result2 = emplacer(c2, "world!");
+ _ASSERT_(result1 == result2);
+ _ASSERT_(_range_equal_(c1, c2));
+
+ emplacer[c3]("Hello,")("world!");
+ _ASSERT_(_range_equal_(c1, c3));
+}
+
+int main()
+{
+ example<_vector_selector_<_mpl_true_> >();
+ return 0;
+}
+``
+[endsect]
+
+[section Test]
+[@../../test/emplace_function_gen.cpp `<test/emplace_function_gen.cpp>`]
+[endsect]
+
+[endsect] [/ emplace_function_gen]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_has_emplace_mfunc_sel.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_has_emplace_mfunc_sel.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,36 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:has_emplace_mfunc_selector `has_emplace_member_function_selector`]
+
+[section Synopsis]
+[reference__has_emplace_member_function_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the type to be returned by
+__container_gen__ supports emplacement construction of its elements; it
+evaluates to __mpl_false__ otherwise.
+
+The current implementation inherits from __mpl_true__ when passed in selectors
+for which __container_gen__ will return a __Boost_Container__ model type, a
+__Boost_Unordered__ container type, or a __Boost_Heap__ model type; it will
+inherit from __mpl_false__ for all other types of selectors. Specialize this
+metafunction to inherit from __mpl_true__ for your custom selector if and only
+if the type to be returned by __container_gen__ supports emplacement
+construction of its elements.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_has_emplace_mfunc_selector_hpp__>
+``
+[endsect]
+
+[endsect] [/ has_emplace_member_function_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_has_stable_iters_sel.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_has_stable_iters_sel.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,44 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:has_stable_iters_selector `has_stable_iterators_selector`]
+
+[section Synopsis]
+[reference__has_stable_iterators_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the type to be returned by
+__container_gen__ does not invalidate any iterators while invoking a member
+function that structurally modifies an instance of the container type, other
+than any iterator argument that the member function takes in; it evaluates to
+__mpl_false__ otherwise.
+
+The current implementation inherits from __mpl_false__ when passed in selectors
+for which __container_gen__ will return a __Boost_Heap__ model type, a
+__Hashed_Associative_Container__ model type, a __Flat_Associative_Container__
+model type, or a __Random_Access_Container__ model type other than __array__ or
+__container_stable_vector__; it will inherit from __mpl_true__ for all other
+types of selectors. Specialize this metafunction to inherit from __mpl_false__
+for your custom selector if and only if the type to be returned by
+__container_gen__ invalidates iterators other than the argument during a
+structurally modifying member function call.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_has_stable_iters_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__has_stable_iterators_selector]
+[endsect]
+
+[endsect] [/ has_stable_iterators_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_ins_range_function_gen.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_ins_range_function_gen.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,74 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:insert_range_function_gen `insert_range_function_gen`]
+
+[section Synopsis]
+[reference__insert_range_function_gen]
+[endsect]
+
+[section Description]
+Returns a __Default_Constructible__ function object type whose call operator
+will take in a reference to a container, a valid iterator representing the
+point of insertion, and either two __Input_Iterator__ arguments or a
+__Single_Pass_Range__ argument. In practice, the container type must be
+produced by __container_gen__ when given the same selector template argument.
+
+If the container type models the __Sequence__ concept, then the function object
+will forward the other argument(s) to the container's range insertion method;
+the call operator's return value will be a __Single_Pass_Range__ over the
+elements inserted in the container.
+
+If the container type models the __Associative_Container__ concept, then the
+function object will forward each element in the specified range to the
+container's insertion method. If __has_stable_iterators_selector__ evaluates
+to __mpl_true__ for the specified selector, then the call operator's return
+value will be a __Single_Pass_Range__ of iterators pointing to each of the
+elements that were successfully inserted in the container.
+
+The return type of this metafunction also defines an indexing operator that
+accepts a reference to a container and returns a proxy object that allows range
+insertion function calls to be chained together, much like __Boost_Assign__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_insert_range_function_gen_hpp__>
+``
+[endsect]
+
+[section Example]
+Use the __range_equal__ algorithm to test two ranges for equality. To handle
+the case where the range returned from a call to the
+`insert_range_function_gen` return function type is a __Single_Pass_Range__ of
+iterators, use __range_adaptors_indirect__.
+
+[test__result_range]
+
+Use the __emplace_function_gen__ metafunction to construct containers using
+individual elements, then use this metafunction to append the elements of
+one container to another in a single step. Use the __insert_range_result_gen__
+metafunction to store the result of the operation.
+
+[test__insert_range_function_gen]
+
+Test this metafunction across a wide variety of selector types.
+
+[test__insert_range_function_gen__main]
+
+The complete test program spans the following source files:
+
+[itemized_list
+ [__libs_container_gen_test_result_range_hpp__]
+ [__libs_container_gen_test_insert_range_function_gen_cpp__]
+]
+
+[endsect]
+
+[endsect] [/ insert_range_function_gen]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_insert_range_result_gen.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_insert_range_result_gen.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,32 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:insert_range_result_gen `insert_range_result_gen`]
+
+[section Synopsis]
+[reference__insert_range_result_gen]
+[endsect]
+
+[section Description]
+Determines the result type of the function object type returned by either
+__push_range_function_gen__ or __insert_range_function_gen__, using the return
+type of __container_gen__ as the function object's container argument type. If
+the container type models the __Sequence__ concept, then the result type will
+be a __Single_Pass_Range__ whose element type is `T`. If the container type
+models the __Associative_Container__ concept, then the result type will be a
+__Single_Pass_Range__ whose element type is the container's iterator type.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_insert_range_result_gen_hpp__>
+``
+[endsect]
+
+[endsect] [/ insert_range_result_gen]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_allocator_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_allocator_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,36 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_allocator_selector `is_allocator_selector`]
+
+[section Synopsis]
+[reference__is_allocator_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the specified selector is a
+metafunction class that takes in a value type and returns an allocator model;
+it evaluates to __mpl_false__ otherwise.
+
+If either __MPL_CFG_NO_HAS_XXX__ or __MPL_CFG_NO_HAS_XXX_TEMPLATE__ are
+defined, then you must specialize this metafunction to inherit from
+__mpl_true__ for your custom selector.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_allocator_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_allocator_selector]
+[endsect]
+
+[endsect] [/ is_allocator_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_associative_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_associative_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,38 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_associative_selector `is_associative_selector`]
+
+[section Synopsis]
+[reference__is_associative_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the type to be returned by
+__container_gen__ will model the __Associative_Container__ concept; it
+evaluates to __mpl_false__ otherwise.
+
+If both __TYPEOF_EMULATION__ and __MPL_CFG_NO_HAS_XXX__ are defined, then you
+must specialize either the __is_unique_associative_selector__ metafunction or
+the __is_multiple_associative_selector__ metafunction to inherit from
+__mpl_true__ for your custom selector if and only if the __container_gen__
+return type models the respective concept.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_associative_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_associative_selector]
+[endsect]
+
+[endsect] [/ is_associative_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_compare_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_compare_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,36 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_compare_selector `is_compare_selector`]
+
+[section Synopsis]
+[reference__is_compare_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the specified selector
+is a metafunction class that takes in a value type and returns a
+__Binary_Predicate__ model; it evaluates to __mpl_false__ otherwise.
+
+If either __MPL_CFG_NO_HAS_XXX__ or __MPL_CFG_NO_HAS_XXX_TEMPLATE__ are
+defined, then you must specialize this metafunction to inherit from
+__mpl_true__ for your custom selector.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_compare_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_compare_selector]
+[endsect]
+
+[endsect] [/ is_compare_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_container_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_container_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,38 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_container_selector `is_container_selector`]
+
+[section Synopsis]
+[reference__is_container_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the __container_gen__
+metafunction has been specialized to return a type given the specified
+selector type; it evaluates to __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must also specialize this
+metafunction to inherit from __mpl_true__ for your custom selector.
+
+This metafunction is useful for facilitating __Boost_Parameter__-enabled
+template argument deduction for types that take in __Selectors__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_container_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_container_selector]
+[endsect]
+
+[endsect] [/ is_container_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_flat_assoc_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_flat_assoc_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,38 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_flat_assoc_selector `is_flat_associative_selector`]
+
+[section Synopsis]
+[reference__is_flat_associative_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the type to be returned by
+__container_gen__ will be a __Flat_Associative_Container__ -- that is, if it
+will model the __Sorted_Associative_Container__ concept and its iterator type
+will model the __Random_Access_Iterator__ concept -- __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to inherit from __mpl_true__ for your custom selector
+if and only if the type to be returned by __container_gen__ is a
+__Flat_Associative_Container__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_flat_assoc_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_flat_associative_selector]
+[endsect]
+
+[endsect] [/ is_flat_associative_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_hashed_assoc_sel.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_hashed_assoc_sel.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,37 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_hashed_assoc_selector `is_hashed_associative_selector`]
+
+[section Synopsis]
+[reference__is_hashed_associative_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the type to be returned by
+__container_gen__ will model the __Hashed_Associative_Container__ concept;
+it evaluates to __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to inherit from __mpl_true__ for your custom selector
+if and only if the type to be returned by __container_gen__ models
+the __Hashed_Associative_Container__ concept.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_hashed_assoc_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_hashed_associative_selector]
+[endsect]
+
+[endsect] [/ is_hashed_associative_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_hasher_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_hasher_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,36 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_hasher_selector `is_hasher_selector`]
+
+[section Synopsis]
+[reference__is_hasher_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the specified selector is a
+__Unary_Metafunction_Class__ that takes in a value type and returns a
+__Hash_Function__ model; it evaluates to __mpl_false__ otherwise.
+
+If either __MPL_CFG_NO_HAS_XXX__ or __MPL_CFG_NO_HAS_XXX_TEMPLATE__ are
+defined, then you must specialize this metafunction to inherit from
+__mpl_true__ for your custom selector.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_hasher_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_hasher_selector]
+[endsect]
+
+[endsect] [/ is_hasher_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_heap_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_heap_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,36 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_heap_selector `is_heap_selector`]
+
+[section Synopsis]
+[reference__is_heap_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the specified selector will
+cause __container_gen__ to return a __Boost_Heap__ model type; it evaluates
+to __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to inherit from __mpl_true__ for your custom selector if and only
+if the type to be returned by __container_gen__ is a __Boost_Heap__ model type.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_heap_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_heap_selector]
+[endsect]
+
+[endsect] [/ is_heap_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_iter_heap_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_iter_heap_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,37 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_iter_heap_selector `is_iteratable_heap_selector`]
+
+[section Synopsis]
+[reference__is_iteratable_heap_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the specified selector will
+cause __container_gen__ to return an iteratable __Boost_Heap__ model type;
+it evaluates to __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to inherit from __mpl_true__ for your custom selector if and only
+if the type to be returned by __container_gen__ is an iteratable __Boost_Heap__
+model type.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_iteratable_heap_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_iteratable_heap_selector]
+[endsect]
+
+[endsect] [/ is_iteratable_heap_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_merge_heap_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_merge_heap_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,57 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_mergeable_heap_selector `is_mergeable_heap_selector`]
+
+[section Synopsis]
+[reference__is_mergeable_heap_selector]
+[endsect]
+
+[section Description]
+A __Boost_Heap__ model type is *mergeable* if and only if it defines a member
+function `merge()` that takes in a reference-to-non-`const` object of its own
+type and returns `void`. This metafunction evaluates to __mpl_true__ if the
+specified selector will cause __container_gen__ to return a mergeable
+__Boost_Heap__ model type; it evaluates to __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to inherit from __mpl_true__ for your custom selector if and only
+if the type to be returned by __container_gen__ is a mergeable __Boost_Heap__
+model type.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_mergeable_heap_selector_hpp__>
+``
+[endsect]
+
+[section Example]
+The __heap_merge__ function is the only way to merge two objects of different
+__Boost_Heap__ model types or of the same __Boost_Heap__ model type that is
+otherwise not mergeable.
+
+[example__is_mergeable_heap_selector__false]
+
+However, the __heap_merge__ function may be less efficient than the `merge()`
+member function of mergeable __Boost_Heap__ model types.
+
+[example__is_mergeable_heap_selector__true]
+
+Use this metafunction to choose the correct and most efficient merge
+implementation.
+
+[example__is_mergeable_heap_selector]
+[endsect]
+
+[section Test]
+[test__is_mergeable_heap_selector]
+[endsect]
+
+[endsect] [/ is_mergeable_heap_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_multiple_assoc_sel.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_multiple_assoc_sel.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,37 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_multiple_assoc_selector `is_multiple_associative_selector`]
+
+[section Synopsis]
+[reference__is_multiple_associative_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the type to be returned by
+__container_gen__ will model the __Multiple_Associative_Container__ concept;
+it evaluates to __mpl_false__ otherwise.
+
+If both __TYPEOF_EMULATION__ and __MPL_CFG_NO_HAS_XXX__ are defined, then you
+must specialize this metafunction to inherit from __mpl_true__ for your custom
+selector if and only if the type to be returned by __container_gen__ models the
+__Multiple_Associative_Container__ concept.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_multiple_assoc_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_multiple_associative_selector]
+[endsect]
+
+[endsect] [/ is_multiple_associative_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_muta_heap_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_muta_heap_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,78 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_mutable_heap_selector `is_mutable_heap_selector`]
+
+[section Synopsis]
+[reference__is_mutable_heap_selector]
+[endsect]
+
+[section Description]
+A __Boost_Heap__ model type is *mutable* if and only if:
+
+[itemized_list
+ [It defines a nested `handle_type` type.]
+ [Its `push()` member function returns an object of type `handle_type`.]
+ [
+ It defines two `update()` member function overloads--one taking in
+ only a reference-to-`const` `handle_type`, the other also taking in
+ a reference-to-`const` `value_type`--both of which update the invoking
+ heap to reflect the change in priority.
+ ]
+ [
+ It defines two `increase()` member function overloads--one taking in
+ only a reference-to-`const` `handle_type`, the other also taking in
+ a reference-to-`const` `value_type`--both of which update the invoking
+ heap to reflect the change in priority.
+ ]
+ [
+ It defines two `decrease()` member function overloads--one taking in
+ only a reference-to-`const` `handle_type`, the other also taking in
+ a reference-to-`const` `value_type`--both of which update the invoking
+ heap to reflect the change in priority.
+ ]
+]
+
+This metafunction evaluates to __mpl_true__ if the specified selector will
+cause __container_gen__ to return a mutable __Boost_Heap__ model type; it
+evaluates to __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to inherit from __mpl_true__ for your custom selector if and only
+if the type to be returned by __container_gen__ is a mutable __Boost_Heap__
+model type.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_mutable_heap_selector_hpp__>
+``
+[endsect]
+
+[section Example]
+__Boost_Heap__ model types that are mutable can be used by sorting algorithms
+that need to handle changing priority values, e.g. weighted pathfinding.
+
+[example__is_mutable_heap_selector__true]
+
+On the other hand, __Boost_Heap__ model types that are not mutable are more
+lightweight for simpler sorting algorithms.
+
+[example__is_mutable_heap_selector__false]
+
+This metafunction differentiates between the two categories.
+
+[example__is_mutable_heap_selector]
+[endsect]
+
+[section Test]
+[test__is_mutable_heap_selector]
+[endsect]
+
+[endsect] [/ is_mutable_heap_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_o_iter_heap_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_o_iter_heap_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,37 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_ord_iter_heap_selector `is_order_iteratable_heap_selector`]
+
+[section Synopsis]
+[reference__is_order_iteratable_heap_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the type to be returned by
+__container_gen__ is a __Boost_Heap__ model type that supports ordered
+iterators; it evaluates to __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to inherit from __mpl_true__ for your custom selector if and only
+if the type to be returned by __container_gen__ is a __Boost_Heap__ model type
+that supports ordered iterators.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_order_iter_heap_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_order_iteratable_heap_selector]
+[endsect]
+
+[endsect] [/ is_order_iteratable_heap_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_ptr_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_ptr_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,32 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_ptr_selector `is_ptr_selector`]
+
+[section Synopsis]
+[reference__is_ptr_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the specified selector will
+cause __container_gen__ to return a __Boost_Pointer_Container__ type; it
+evaluates to __mpl_false__ otherwise.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_ptr_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_ptr_selector]
+[endsect]
+
+[endsect] [/ is_ptr_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_queue_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_queue_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,32 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_queue_selector `is_queue_selector`]
+
+[section Synopsis]
+[reference__is_queue_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the specified selector will
+cause __container_gen__ to return a __std_queue__ template instantiation;
+it evaluates to __mpl_false__ otherwise.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_queue_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_queue_selector]
+[endsect]
+
+[endsect] [/ is_queue_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_rand_access_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_rand_access_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,39 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_random_access_selector `is_random_access_selector`]
+
+[section Synopsis]
+[reference__is_random_access_selector]
+[endsect]
+
+[section Description]
+The __graph_adjacency_list__ class template uses this metafunction to determine
+whether or not it will provide an internal property map that associates its
+vertex descriptors with unique indices. This metafunction evaluates to
+__mpl_true__ if the type to be returned by __container_gen__ will model the
+__Random_Access_Container__ concept; it evaluates to __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to inherit from __mpl_true__ for your custom selector if and only
+if the __container_gen__ return type models the __Random_Access_Container__
+concept.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_random_access_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_random_access_selector]
+[endsect]
+
+[endsect] [/ is_random_access_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_recursive_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_recursive_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,36 @@
+[/=============================================================================
+ Copyright (C) 2012 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_recursive_selector `is_recursive_selector`]
+
+[section Synopsis]
+[reference__is_recursive_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the type to be returned by
+__container_gen__ can be used to define a __Recursive_Container__; it evalutes
+to __mpl_false__ otherwise.
+
+The current implementation inherits from __mpl_true__ when passed in selectors
+for which __container_gen__ will return a __Boost_Unordered__ container type, a
+__Boost_Pointer_Container__ type, or a __Boost_Container__ type (except for
+__container_static_vector__); it will inherit from __mpl_false__ for all other
+types of selectors. Specialize this metafunction to inherit from __mpl_true__
+for your custom selector if and only if the type to be returned by
+__container_gen__ supports __recursive_data_types__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_recursive_selector_hpp__>
+``
+[endsect]
+
+[endsect] [/ is_recursive_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_reversible_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_reversible_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,37 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_reversible_selector `is_reversible_selector`]
+
+[section Synopsis]
+[reference__is_reversible_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the type to be returned by
+__container_gen__ will model the __Reversible_Container__ concept; it evaluates
+to __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to inherit from __mpl_false__ for your custom selector
+if and only if the __container_gen__ return type does *not* model
+the __Reversible_Container__ concept.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_reversible_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_reversible_selector]
+[endsect]
+
+[endsect] [/ is_reversible_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_stack_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_stack_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,32 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_stack_selector `is_stack_selector`]
+
+[section Synopsis]
+[reference__is_stack_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the specified selector will
+cause __container_gen__ to return a __std_stack__ template instantiation;
+it evaluates to __mpl_false__ otherwise.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_stack_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_stack_selector]
+[endsect]
+
+[endsect] [/ is_stack_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_std_heap_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_std_heap_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,32 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_std_heap_selector `is_std_heap_selector`]
+
+[section Synopsis]
+[reference__is_std_heap_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the specified selector will
+cause __container_gen__ to return a __std_priority_queue__ type; it evalutes to
+__mpl_false__ otherwise.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_std_heap_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_std_heap_selector]
+[endsect]
+
+[endsect] [/ is_std_heap_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_tr1_selector.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_tr1_selector.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,34 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_tr1_selector `is_tr1_selector`]
+
+[section Synopsis]
+[reference__is_tr1_selector]
+[endsect]
+
+[section Description]
+This metafunction evaluates to __mpl_true__ if the specified selector type is
+`tr1_hash_selector` or `tr1_binary_predicate_selector`, or if the type to be
+returned by __container_gen__ is a __tr1_array__, a __tr1_unordered_set__, a
+__tr1_unordered_multiset__, a __tr1_unordered_map__, or a
+__tr1_unordered_multimap__; it evaluates to __mpl_false__ otherwise.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_tr1_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_tr1_selector]
+[endsect]
+
+[endsect] [/ is_tr1_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_is_unique_assoc_sel.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_is_unique_assoc_sel.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,40 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:is_unique_assoc_selector `is_unique_associative_selector`]
+
+[section Synopsis]
+[reference__is_unique_associative_selector]
+[endsect]
+
+[section Description]
+The __graph_parallel_edge_traits__ metafunction uses this metafunction to
+specify whether or not the storage type returned by __container_gen__ will
+allow parallel edges--that is, if the storage type will *not* model the
+__Unique_Associative_Container__ concept. Returns __mpl_true__ if the storage
+type *will* model the __Unique_Associative_Container__ concept, __mpl_false__
+otherwise.
+
+If both __TYPEOF_EMULATION__ and __MPL_CFG_NO_HAS_XXX__ are defined, then you
+must specialize this metafunction to return __mpl_true__ for your custom
+selector if and only if the type to be returned by __container_gen__ models the
+__Unique_Associative_Container__ concept.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_unique_assoc_selector_hpp__>
+``
+[endsect]
+
+[section Test]
+[test__is_unique_associative_selector]
+[endsect]
+
+[endsect] [/ is_unique_associative_selector]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_push_range_function_gen.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_push_range_function_gen.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,83 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:push_range_function_gen `push_range_function_gen`]
+
+[section Synopsis]
+[reference__push_range_function_gen]
+[endsect]
+
+[section Description]
+Returns a __Default_Constructible__ function object type whose call operator
+will take in a reference to a container and either two __Input_Iterator__
+arguments or a __Single_Pass_Range__ argument. In practice, the type of the
+container must be produced by __container_gen__ when given the same selector
+template argument.
+
+If the container type models the __Random_Access_Container__ concept, then the
+function object will append the range specified by the other argument(s) to the
+back of the container. The call operator's return value will be a
+__Single_Pass_Range__ over the elements inserted in the container.
+
+If the container type models the __Sequence__ concept, then the function object
+will forward the other argument(s) to the container's range insertion method;
+furthermore, if the container type models the __Front_Insertion_Sequence__
+concept, then the point of insertion will be before the beginning; otherwise,
+if the container type models the __Back_Insertion_Sequence__ concept, then the
+point of insertion will be the container's past-the-end iterator. The call
+operator's return value will be a __Single_Pass_Range__ over the elements
+inserted in the container.
+
+If the container type models the __Associative_Container__ concept, then the
+function object will forward each element in the specified range to the
+container's insertion method. If __has_stable_iterators_selector__ evaluates
+to __mpl_true__ for the specified selector, then the call operator's return
+value will be a __Single_Pass_Range__ of iterators pointing to each of the
+elements that were successfully inserted in the container.
+
+The return type of this metafunction also defines an indexing operator that
+accepts a reference to a container and returns a proxy object that allows range
+insertion function calls to be chained together, much like __Boost_Assign__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_push_range_function_gen_hpp__>
+``
+[endsect]
+
+[section Example]
+Use the __range_equal__ algorithm to test two ranges for equality. To handle
+the case where the range returned from a call to the `push_range_function_gen`
+return function type is a __Single_Pass_Range__ of iterators, use
+__range_adaptors_indirect__.
+
+[test__result_range]
+
+Use the __emplace_function_gen__ metafunction to construct containers using
+individual elements, then use this metafunction to append the elements of
+one container to another in a single step. Use the __insert_range_result_gen__
+metafunction to store the result of the operation.
+
+[test__push_range_function_gen]
+
+Test this metafunction across a wide variety of selector types.
+
+[test__push_range_function_gen__main]
+
+The complete test program spans the following source files:
+
+[itemized_list
+ [__libs_container_gen_test_result_range_hpp__]
+ [__libs_container_gen_test_push_range_function_gen_cpp__]
+]
+
+[endsect]
+
+[endsect] [/ push_range_function_gen]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_selectors.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_selectors.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,284 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section Selectors]
+
+[section Synopsis]
+This library provides several selector templates, one for each
+__STL_Container__ model, __Boost_Container__, __Boost_Unordered__ container,
+__Boost_Pointer_Container__, STL container adaptor, and __Boost_Heap__ data
+structure to which it corresponds.
+
+[reference__container_selector_templates]
+
+In turn, some of the default arguments of these selector templates are
+themselves selector types.
+
+[reference__template_argument_selectors]
+
+To instantiate a model of __Associative_Container__ that stores C-style strings
+as keys, pass the appropriate one of these types as the `CompareSelector`
+argument to the corresponding container selector template.
+
+[reference__c_str_compare_selectors]
+
+This library also retains the old selector types and, for completeness,
+provides type definitions of the selector templates with default arguments.
+
+[reference__container_selector_typedefs]
+[endsect]
+
+[section Description]
+Selector templates determine the return type of the __container_gen__
+metafunction. Since the container models are not templatized on just their
+value types, the selector templates must take in analogous arguments in order
+to provide maximum flexibility. The following example demonstrates how a
+__std_list__ with a custom allocator type can become the `OutEdgeList` of a
+__graph_adjacency_list__.
+
+[example__container_gen__list_with_custom_allocator_selector]
+
+Selector templates evaluate each parameter the same way, so the following table
+will suffice in documenting the parameters. Note that fully qualified template
+parameters must be explicitly named if required by the container return type or
+when overriding the default argument type unless the table specifies that the
+argument types to which they are bound can be deduced.
+
+[table
+ [[Parameter][__Boost_Parameter__ Name][Description][Deducible?]]
+ [
+ [`ConstantSize`]
+ [`boost::constant_size_arg`]
+ [
+ An __Integral_Constant__ that determines the size of the __array__
+ or __tr1_array__ type to be returned by __container_gen__.
+ ]
+ [Yes, by __is_mpl_integral_constant__.]
+ ]
+ [
+ [`ConstantCapacity`]
+ [N/A]
+ [
+ An __Integral_Constant__ that determines the capacity of the
+ __container_static_vector__ to be returned by __container_gen__.
+ ]
+ [Unnecessary.]
+ ]
+ [
+ [`IsBoostNotStd`]
+ [`boost::is_boost_not_std_arg`]
+ [
+ A __Boolean_Integral_Constant__ that determines whether
+ __container_gen__ will return the appropriate __Boost_Container__
+ type or the corresponding C++ standard container.
+ ]
+ [Yes, by __is_mpl_boolean_constant__.]
+ ]
+ [
+ [`IsTR1NotBoost`]
+ [`boost::is_tr1_not_boost_arg`]
+ [
+ A __Boolean_Integral_Constant__ that determines whether
+ __container_gen__ will return the appropriate __Boost_TR1__
+ container type or the corresponding Boost container type.
+ ]
+ [Yes, by __is_mpl_boolean_constant__.]
+ ]
+ [
+ [`AllocatorSelector`]
+ [`boost::allocator_selector_arg`]
+ [
+ A __Unary_Metafunction_Class__ that takes in the value type and
+ returns an allocator model. The return type will become the
+ container template's `Allocator` or __heap_allocator__ argument.
+ ]
+ [Yes, by __is_allocator_selector__.]
+ ]
+ [
+ [`CompareSelector`]
+ [`boost::compare_selector_arg`]
+ [
+ If the selector template causes __container_gen__ to return a
+ __Sorted_Associative_Container__ model, a __std_priority_queue__
+ template class, or a __Boost_Heap__ data structure, then a
+ __Unary_Metafunction_Class__ that takes in the value type and
+ returns a __Strict_Weak_Ordering__ model. If the selector template
+ causes __container_gen__ to return a
+ __Hashed_Associative_Container__ model, then a
+ __Unary_Metafunction_Class__ that takes in the value type and
+ returns a __Binary_Predicate__ model. The return type of the
+ selector template will become the container template's `Compare`,
+ `Pred`, or __heap_compare__ argument.
+
+ If the selector template is `equivalence_selector`, then a
+ __Unary_Metafunction_Class__ that takes in the argument type and
+ returns a __Strict_Weak_Ordering__ model. The return type of
+ `equivalence_selector` will be the same as that of
+ __equivalence_function_gen__ passed in the __Strict_Weak_Ordering__
+ model.
+
+ By way of example, as discussed in the __Selectors_synopsis__,
+ the `c_str_equal_to_selector` type can be passed as the
+ `CompareSelector` argument to the `hash_set_selector` template,
+ which in turn can be passed to __container_gen__ to return a
+ __Hashed_Associative_Container__ model that stores C-style strings
+ as keys.
+ ]
+ [Yes, by __is_compare_selector__.]
+ ]
+ [
+ [`HashSelector`]
+ [`boost::hasher_selector_arg`]
+ [
+ A __Unary_Metafunction_Class__ that takes in the value type and
+ returns a __Hash_Function__ model. The return type will become the
+ container template's `Hash` argument.
+ ]
+ [Yes, by __is_hasher_selector__.]
+ ]
+ [
+ [`SequenceSelector`]
+ [`boost::sequence_selector_arg`]
+ [
+ A __Unary_Metafunction_Class__ that takes in the value type and
+ returns a __Sequence__ model. The return type will become the
+ container adaptor template's `Sequence` argument.
+ ]
+ [Yes, by __is_container_selector__.]
+ ]
+ [
+ [`CloneAllocator`]
+ [`boost::ptr_clone_allocator_arg`]
+ [
+ A __Clone_Allocator__ model that will become the container
+ template's corresponding argument.
+ ]
+ [
+ Yes, as long as the __MPL_CFG_NO_HAS_XXX__ preprocessor token is
+ not defined.
+ ]
+ ]
+ [
+ [`Allocator`]
+ [`boost::ptr_allocator_arg`]
+ [
+ An allocator model that will become the container template's
+ corresponding argument.
+ ]
+ [
+ Yes, as long as the __MPL_CFG_NO_HAS_XXX__ preprocessor token is
+ not defined.
+ ]
+ ]
+ [
+ [`IsStable`]
+ [__heap_stable__]
+ [
+ Causes __container_gen__ to return a __Boost_Heap__ data structure
+ that either orders elements with the same priority according to
+ insertion time or does not, depending on the value of the boolean
+ non-type template argument. The default value is `false`.
+ ]
+ [No.]
+ ]
+ [
+ [`IsMutable`]
+ [__heap_mutable__]
+ [
+ Causes __container_gen__ to return a __Boost_Heap__ data structure
+ that either allows the priority of its elements to be changed or
+ does not, depending on the value of the boolean non-type template
+ argument. The default value is `false`.
+ ]
+ [No.]
+ ]
+ [
+ [`StabilityCounterType`]
+ [__heap_stability_counter_type__]
+ [
+ Causes __container_gen__ to return a __Boost_Heap__ data structure
+ that associates an integer version count with each element in order
+ to distinguish between elements with the same priority. The
+ default type is `boost::uintmax_t`.
+ ]
+ [No.]
+ ]
+ [
+ [`ConstantTimeSize`]
+ [__heap_constant_time_size__]
+ [
+ Causes __container_gen__ to return a __Boost_Heap__ data structure
+ whose `size()` member function either has constant time complexity
+ or does not, depending on the value of the boolean non-type
+ template argument. The default value is `true`.
+ ]
+ [No.]
+ ]
+ [
+ [`Arity`]
+ [__heap_arity__]
+ [
+ Please consult the class reference of the __Boost_Heap__ data
+ structure which the selector template will cause __container_gen__
+ to return.
+ ]
+ [No.]
+ ]
+ [
+ [`StoresParentPointer`]
+ [__heap_store_parent_pointer__]
+ [
+ Please consult the class reference of the __Boost_Heap__ data
+ structure which the selector template will cause __container_gen__
+ to return.
+ ]
+ [No.]
+ ]
+]
+[endsect] [/ Description]
+
+[section:definition Where defined]
+C-style string comparator selectors:
+
+``
+#include <__boost_container_gen_c_str_cmp_selectors_hpp__>
+``
+
+Forward declarations:
+
+``
+#include <__boost_container_gen_c_str_cmp_selectors_fwd_hpp__>
+``
+
+To register them under __Boost_Typeof__:
+
+``
+#include <__boost_typeof_boost_container_gen_c_str_cmp_selectors_hpp__>
+``
+
+All other selectors and selector templates:
+
+``
+#include <__boost_container_gen_selectors_hpp__>
+``
+
+Forward declarations:
+
+``
+#include <__boost_container_gen_selectors_fwd_hpp__>
+``
+
+To register them under __Boost_Typeof__:
+
+``
+#include <__boost_typeof_boost_container_gen_selectors_hpp__>
+``
+[endsect]
+
+[endsect] [/ Selectors]
+

Added: sandbox/container_gen/libs/container_gen/doc/ref_splice_function_gen.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/ref_splice_function_gen.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,93 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section:splice_function_gen `splice_function_gen`]
+
+[section Synopsis]
+[reference__splice_function_gen]
+[endsect]
+
+[section Description]
+Returns a __Default_Constructible__ function object type whose call operator
+will take in a reference to the destination container, a valid iterator
+representing the point of insertion, a reference to the source container, and
+one of the following:
+
+[itemized_list
+ [
+ A valid iterator representing the point of erasure from the source
+ container.
+ ]
+ [
+ Two __Input_Iterator__ arguments representing the source container or a
+ subrange.
+ ]
+]
+
+The container type must model the __Sequence__ concept. In practice, the
+container type must be produced by __container_gen__ when given the same
+selector template argument.
+
+The function call operator that takes in a single iterator to the source
+container will transfer that element to the destination container at the
+specified point of insertion. The return value will be an iterator pointing
+to the inserted element. If the points of insertion and erasure are the same,
+then the operation will have no effect.
+
+The function call operators that take in a subrange of the source container
+will transfer the elements in the subrange to the destination container at the
+specified point of insertion. The return value will be a __Single_Pass_Range__
+over the elements inserted in the container. The source and destination
+containers can be the same as long as the point of insertion lies outside
+the subrange. (If the point of insertion is at the beginning or just
+past-the-end of the subrange, then the operation will have no effect.)
+
+The return type of this metafunction also defines an indexing operator that
+accepts a reference to a container and returns a proxy object that allows
+splice function calls to be chained together, much like __Boost_Assign__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_splice_function_gen_hpp__>
+``
+[endsect]
+
+[section Example]
+Use the __range_equal__ algorithm to test two ranges for equality.
+
+[test__result_range]
+
+Use the __emplace_function_gen__ metafunction to construct containers using
+individual elements, then use this metafunction to append the elements of
+one container to another in a single step. Use the __insert_range_result_gen__
+metafunction to store the result of the operation.
+
+[test__splice_function_gen]
+
+Remember that the splice operation can be performed in place--with the source
+and destination containers being the same--as long as the destination iterator
+points to a position outside the source range of input iterators.
+
+[test__splice_function_gen_in_place]
+
+Test this metafunction across a wide variety of selector types.
+
+[test__splice_function_gen__main]
+
+The complete test program spans the following source files:
+
+[itemized_list
+ [__libs_container_gen_test_result_range_hpp__]
+ [__libs_container_gen_test_splice_function_gen_cpp__]
+]
+
+[endsect]
+
+[endsect] [/ splice_function_gen]
+

Added: sandbox/container_gen/libs/container_gen/doc/reference.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/reference.qbk 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,90 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ Distributed under 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])
+=============================================================================/]
+
+[section Reference]
+
+[include ref_selectors.qbk]
+[include ref_container_gen.qbk]
+[include ref_emplace_function_gen.qbk]
+[include ref_emplace_assoc_func_gen.qbk]
+[include ref_push_range_function_gen.qbk]
+[include ref_ins_range_function_gen.qbk]
+[include ref_splice_function_gen.qbk]
+[include ref_insert_range_result_gen.qbk]
+[include ref_is_compare_selector.qbk]
+[include ref_is_hasher_selector.qbk]
+[include ref_is_allocator_selector.qbk]
+[include ref_is_container_selector.qbk]
+[include ref_is_reversible_selector.qbk]
+[include ref_is_rand_access_selector.qbk]
+[include ref_is_associative_selector.qbk]
+[include ref_is_unique_assoc_sel.qbk]
+[include ref_is_multiple_assoc_sel.qbk]
+[include ref_is_flat_assoc_selector.qbk]
+[include ref_is_hashed_assoc_sel.qbk]
+[include ref_is_tr1_selector.qbk]
+[include ref_is_ptr_selector.qbk]
+[include ref_is_queue_selector.qbk]
+[include ref_is_stack_selector.qbk]
+[include ref_is_std_heap_selector.qbk]
+[include ref_is_heap_selector.qbk]
+[include ref_is_iter_heap_selector.qbk]
+[include ref_is_o_iter_heap_selector.qbk]
+[include ref_is_muta_heap_selector.qbk]
+[include ref_is_merge_heap_selector.qbk]
+[include ref_is_recursive_selector.qbk]
+[include ref_has_stable_iters_sel.qbk]
+[include ref_has_emplace_mfunc_sel.qbk]
+
+[itemized_list
+ [__Selectors__]
+]
+
+[heading Type Generation Metafunctions]
+
+[itemized_list
+ [__container_gen__]
+ [__emplace_function_gen__]
+ [__emplace_associative_function_gen__]
+ [__push_range_function_gen__]
+ [__insert_range_function_gen__]
+ [__splice_function_gen__]
+ [__insert_range_result_gen__]
+]
+
+[heading Selector Introspection Metafunctions]
+
+[itemized_list
+ [__is_container_selector__]
+ [__is_compare_selector__]
+ [__is_hasher_selector__]
+ [__is_allocator_selector__]
+ [__is_reversible_selector__]
+ [__is_random_access_selector__]
+ [__is_associative_selector__]
+ [__is_unique_associative_selector__]
+ [__is_multiple_associative_selector__]
+ [__is_flat_associative_selector__]
+ [__is_hashed_associative_selector__]
+ [__is_tr1_selector__]
+ [__is_ptr_selector__]
+ [__is_queue_selector__]
+ [__is_stack_selector__]
+ [__is_std_heap_selector__]
+ [__is_heap_selector__]
+ [__is_iteratable_heap_selector__]
+ [__is_order_iteratable_heap_selector__]
+ [__is_mutable_heap_selector__]
+ [__is_mergeable_heap_selector__]
+ [__is_recursive_selector__]
+ [__has_stable_iterators_selector__]
+ [__has_emplace_member_function_selector__]
+]
+
+[endsect] [/ Reference]
+

Added: sandbox/container_gen/libs/container_gen/test/emplace_assoc_function_gen.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/test/emplace_assoc_function_gen.cpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,551 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// Distributed under 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/config.hpp>
+
+#if defined BOOST_MSVC
+ #pragma warning (push)
+ #pragma warning (disable : 4996) // fn called w/params that may be unsafe
+#endif
+
+#include <utility>
+#include <cstring>
+#include <boost/mpl/bool.hpp>
+#include <boost/range/algorithm/equal.hpp>
+#include <boost/utility/get_iterator_second.hpp>
+#include <boost/utility/get_iterator_value_second.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_assoc_function_gen.hpp>
+#include <boost/container_gen/is_multiple_assoc_selector.hpp>
+#include "type_definitions.hpp"
+#include <boost/test/minimal.hpp>
+
+template <typename Emplacer, typename C>
+void
+ test_emplacer(
+ Emplacer const& emplacer
+ , C& c
+ , bool should_be_successful
+ , typename C::key_type const& key
+ )
+{
+ typename C::size_type old_size = c.size();
+ std::pair<typename C::iterator,bool> p = emplacer(c, key);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ BOOST_CHECK(p.first->first == key);
+ BOOST_CHECK(!strcmp(boost::get_iterator_second(p.first).c_str(), ""));
+ BOOST_CHECK(c.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(c.size() == old_size);
+ }
+}
+
+template <typename Emplacer, typename C>
+void
+ test_emplacer(
+ Emplacer const& emplacer
+ , C& c
+ , bool should_be_successful
+ , typename C::key_type const& key
+ , char const* value
+ )
+{
+ typename C::size_type old_size = c.size();
+ std::pair<typename C::iterator,bool> p = emplacer(c, key, value);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ BOOST_CHECK(p.first->first == key);
+ BOOST_CHECK(
+ !strcmp(boost::get_iterator_second(p.first).c_str(), value)
+ );
+ BOOST_CHECK(c.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(c.size() == old_size);
+ }
+}
+
+template <typename Selector>
+void test_empl_assoc_func_gen()
+{
+ typename boost::container_gen<Selector,int,test_string>::type
+ test_container_1, test_container_2;
+ typename boost::emplace_associative_function_gen<Selector>::type emplacer;
+ bool is_multi = boost::is_multiple_associative_selector<Selector>::value;
+
+ test_emplacer(emplacer, test_container_1, true, 3, "able");
+ test_emplacer(emplacer, test_container_1, true, -3, "fox");
+ test_emplacer(emplacer, test_container_1, true, 2);
+ test_emplacer(emplacer, test_container_1, true, -2, "baker");
+ test_emplacer(emplacer, test_container_1, true, 1, "charlie");
+ test_emplacer(emplacer, test_container_1, true, -1, "dog");
+ test_emplacer(emplacer, test_container_1, is_multi, -1, "able");
+ test_emplacer(emplacer, test_container_1, is_multi, 1, "fox");
+ test_emplacer(emplacer, test_container_1, is_multi, -2);
+ test_emplacer(emplacer, test_container_1, is_multi, 2, "baker");
+ test_emplacer(emplacer, test_container_1, is_multi, -3, "charlie");
+ test_emplacer(emplacer, test_container_1, is_multi, 3, "dog");
+
+ emplacer[test_container_2]
+ (3, "able")(-3, "fox")(2)(-2, "baker")(1, "charlie")(-1, "dog")
+ (-1, "able")(1, "fox")(-2)(2, "baker")(-3, "charlie")(3, "dog");
+
+ BOOST_CHECK(boost::range::equal(test_container_1, test_container_2));
+}
+
+template <typename Pair1, typename Pair2>
+void test_emplace_results(Pair1 const& p1, Pair2 const& p2)
+{
+ BOOST_CHECK(p1.second == p2.second);
+
+ if (p1.second)
+ {
+ BOOST_CHECK(p1.first->first == p2.first->first);
+ BOOST_CHECK(
+ boost::get_iterator_second(p1.first)
+ == boost::get_iterator_second(p2.first)
+ );
+ }
+}
+
+struct test_string_comparator
+{
+ template <typename Pair1, typename Pair2>
+ bool operator()(Pair1 const& p1, Pair2 const& p2) const
+ {
+ return (
+ (p1.first == p2.first)
+ && (
+ boost::get_iterator_value_second(p1)
+ == boost::get_iterator_value_second(p2)
+ )
+ );
+ }
+};
+
+template <typename Selector1, typename Selector2>
+void test_empl_assoc_func_gens()
+{
+ typename boost::container_gen<Selector1,int,test_string>::type container_1;
+ typename boost::container_gen<Selector2,int,test_string>::type container_2;
+ typename boost::emplace_associative_function_gen<Selector1>::type adder_1;
+ typename boost::emplace_associative_function_gen<Selector2>::type adder_2;
+ test_string_comparator comparator;
+
+ test_emplace_results(
+ adder_1(container_1, 3, "able")
+ , adder_2(container_2, 3, "able")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(
+ adder_1(container_1, -3, "fox")
+ , adder_2(container_2, -3, "fox")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(adder_1(container_1, 2), adder_2(container_2, 2));
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(
+ adder_1(container_1, -2, "baker")
+ , adder_2(container_2, -2, "baker")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(
+ adder_1(container_1, 1, "charlie")
+ , adder_2(container_2, 1, "charlie")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(
+ adder_1(container_1, -1, "dog")
+ , adder_2(container_2, -1, "dog")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(
+ adder_1(container_1, -1, "able")
+ , adder_2(container_2, -1, "able")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(
+ adder_1(container_1, 1, "fox")
+ , adder_2(container_2, 1, "fox")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(adder_1(container_1, -2), adder_2(container_2, -2));
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(
+ adder_1(container_1, 2, "baker")
+ , adder_2(container_2, 2, "baker")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(
+ adder_1(container_1, -3, "charlie")
+ , adder_2(container_2, -3, "charlie")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+ test_emplace_results(
+ adder_1(container_1, 3, "dog")
+ , adder_2(container_2, 3, "dog")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2, comparator));
+}
+
+template <typename T>
+void test_recursive_element(T const& t)
+{
+ BOOST_CHECK(
+ !strcmp(t.word.c_str(), "")
+ || !strcmp(t.word.c_str(), "secret")
+ );
+ BOOST_CHECK((t.number == 0) || (t.number == 42));
+ BOOST_CHECK((t.letter == '\0') || (t.letter == 'X'));
+
+ typedef typename T::next_level_t C;
+ typename C::const_iterator itr_end = t.next_level.end();
+
+ for (
+ typename C::const_iterator itr = t.next_level.begin();
+ itr != itr_end;
+ ++itr
+ )
+ {
+ BOOST_CHECK(boost::get_iterator_second(itr).previous_level == &t);
+ test_recursive_element(boost::get_iterator_second(itr));
+ }
+}
+
+template <typename Emplacer, typename T>
+void
+ test_emplacer_recursive(
+ Emplacer const& emplacer
+ , T& t
+ , bool should_be_successful
+ , typename T::next_level_t::key_type const& key
+ )
+{
+ typedef typename T::next_level_t C;
+ typename C::size_type old_size = t.next_level.size();
+ std::pair<typename C::iterator,bool> p = emplacer(t.next_level, key);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ BOOST_CHECK(p.first->first == key);
+ test_recursive_element(boost::get_iterator_second(p.first));
+ BOOST_CHECK(
+ !strcmp(boost::get_iterator_second(p.first).word.c_str(), "")
+ );
+ BOOST_CHECK(boost::get_iterator_second(p.first).number == 0);
+ BOOST_CHECK(boost::get_iterator_second(p.first).letter == '\0');
+ BOOST_CHECK(boost::get_iterator_second(p.first).flag == false);
+ BOOST_CHECK(t.next_level.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(t.next_level.size() == old_size);
+ }
+}
+
+template <typename Emplacer, typename T>
+void
+ test_emplacer_recursive(
+ Emplacer const& emplacer
+ , T& t
+ , bool should_be_successful
+ , typename T::next_level_t::key_type const& key
+ , char const* word
+ )
+{
+ typedef typename T::next_level_t C;
+ typename C::size_type old_size = t.next_level.size();
+ std::pair<typename C::iterator,bool> p = emplacer(t.next_level, key, word);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ BOOST_CHECK(p.first->first == key);
+ test_recursive_element(boost::get_iterator_second(p.first));
+ BOOST_CHECK(
+ !strcmp(boost::get_iterator_second(p.first).word.c_str(), word)
+ );
+ BOOST_CHECK(boost::get_iterator_second(p.first).number == 0);
+ BOOST_CHECK(boost::get_iterator_second(p.first).letter == '\0');
+ BOOST_CHECK(boost::get_iterator_second(p.first).flag == false);
+ BOOST_CHECK(t.next_level.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(t.next_level.size() == old_size);
+ }
+}
+
+template <typename Emplacer, typename T>
+void
+ test_emplacer_recursive(
+ Emplacer const& emplacer
+ , T& t
+ , bool should_be_successful
+ , typename T::next_level_t::key_type const& key
+ , char const* word
+ , long n
+ )
+{
+ typedef typename T::next_level_t C;
+ typename C::size_type old_size = t.next_level.size();
+ std::pair<
+ typename C::iterator
+ , bool
+ > p = emplacer(t.next_level, key, word, n);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ BOOST_CHECK(p.first->first == key);
+ test_recursive_element(boost::get_iterator_second(p.first));
+ BOOST_CHECK(
+ !strcmp(boost::get_iterator_second(p.first).word.c_str(), word)
+ );
+ BOOST_CHECK(boost::get_iterator_second(p.first).number == n);
+ BOOST_CHECK(boost::get_iterator_second(p.first).letter == '\0');
+ BOOST_CHECK(boost::get_iterator_second(p.first).flag == false);
+ BOOST_CHECK(t.next_level.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(t.next_level.size() == old_size);
+ }
+}
+
+template <typename Emplacer, typename T>
+void
+ test_emplacer_recursive(
+ Emplacer const& emplacer
+ , T& t
+ , bool should_be_successful
+ , typename T::next_level_t::key_type const& key
+ , char const* word
+ , long n
+ , char letter
+ )
+{
+ typedef typename T::next_level_t C;
+ typename C::size_type old_size = t.next_level.size();
+ std::pair<
+ typename C::iterator
+ , bool
+ > p = emplacer(t.next_level, key, word, n, letter);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ BOOST_CHECK(p.first->first == key);
+ test_recursive_element(boost::get_iterator_second(p.first));
+ BOOST_CHECK(
+ !strcmp(boost::get_iterator_second(p.first).word.c_str(), word)
+ );
+ BOOST_CHECK(boost::get_iterator_second(p.first).number == n);
+ BOOST_CHECK(boost::get_iterator_second(p.first).letter == letter);
+ BOOST_CHECK(boost::get_iterator_second(p.first).flag == false);
+ BOOST_CHECK(t.next_level.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(t.next_level.size() == old_size);
+ }
+}
+
+template <typename Emplacer, typename T>
+void
+ test_emplacer_recursive(
+ Emplacer const& emplacer
+ , T& t
+ , bool should_be_successful
+ , typename T::next_level_t::key_type const& key
+ , char const* word
+ , long n
+ , char letter
+ , bool b
+ )
+{
+ typedef typename T::next_level_t C;
+ typename C::size_type old_size = t.next_level.size();
+ std::pair<
+ typename C::iterator
+ , bool
+ > p = emplacer(t.next_level, key, word, n, letter, b);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ BOOST_CHECK(p.first->first == key);
+ test_recursive_element(boost::get_iterator_second(p.first));
+ BOOST_CHECK(
+ !strcmp(boost::get_iterator_second(p.first).word.c_str(), word)
+ );
+ BOOST_CHECK(boost::get_iterator_second(p.first).number == n);
+ BOOST_CHECK(boost::get_iterator_second(p.first).letter == letter);
+ BOOST_CHECK(boost::get_iterator_second(p.first).flag == b);
+ BOOST_CHECK(t.next_level.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(t.next_level.size() == old_size);
+ }
+}
+
+template <typename Selector>
+void test_empl_assoc_func_gen_recursive()
+{
+ test_recursive_data<Selector,int> top;
+ typename boost::emplace_associative_function_gen<Selector>::type emplacer;
+
+ test_emplacer_recursive(emplacer, top, true, 0);
+ test_emplacer_recursive(emplacer, top, true, 1, "secret");
+ test_emplacer_recursive(
+ emplacer
+ , boost::get_iterator_second(top.next_level.find(1))
+ , true
+ , 2
+ , "secret"
+ , 42
+ );
+ test_emplacer_recursive(
+ emplacer
+ , boost::get_iterator_second(top.next_level.find(1))
+ , true
+ , 3
+ , "secret"
+ , 42
+ , 'X'
+ );
+ test_emplacer_recursive(emplacer, top, true, 4, "secret", 42, 'X', true);
+}
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
+int test_main(int argc, char** argv)
+{
+ test_empl_assoc_func_gen<boost::setS>();
+ test_empl_assoc_func_gen<boost::mapS>();
+ test_empl_assoc_func_gen<boost::multisetS>();
+ test_empl_assoc_func_gen<boost::multimapS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+ test_empl_assoc_func_gen<boost::hash_setS>();
+ test_empl_assoc_func_gen<boost::hash_mapS>();
+ test_empl_assoc_func_gen<boost::hash_multisetS>();
+ test_empl_assoc_func_gen<boost::hash_multimapS>();
+#endif
+ test_empl_assoc_func_gen<boost::ptr_setS>();
+ test_empl_assoc_func_gen<boost::ptr_mapS>();
+ test_empl_assoc_func_gen<boost::ptr_multisetS>();
+ test_empl_assoc_func_gen<boost::ptr_multimapS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_empl_assoc_func_gen<boost::ptr_hash_setS>();
+ test_empl_assoc_func_gen<boost::ptr_hash_mapS>();
+ test_empl_assoc_func_gen<boost::ptr_hash_multisetS>();
+ test_empl_assoc_func_gen<boost::ptr_hash_multimapS>();
+ test_empl_assoc_func_gen<boost::set_selector<boost::mpl::true_> >();
+ test_empl_assoc_func_gen<boost::map_selector<boost::mpl::true_> >();
+ test_empl_assoc_func_gen<boost::multiset_selector<boost::mpl::true_> >();
+ test_empl_assoc_func_gen<boost::multimap_selector<boost::mpl::true_> >();
+ test_empl_assoc_func_gen<boost::hash_set_selector<boost::mpl::true_> >();
+ test_empl_assoc_func_gen<boost::hash_map_selector<boost::mpl::true_> >();
+ test_empl_assoc_func_gen<
+ boost::hash_multiset_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gen<
+ boost::hash_multimap_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gen<boost::flat_setS>();
+ test_empl_assoc_func_gen<boost::flat_mapS>();
+ test_empl_assoc_func_gen<boost::flat_multisetS>();
+ test_empl_assoc_func_gen<boost::flat_multimapS>();
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ test_empl_assoc_func_gens<boost::setS,boost::ptr_setS>();
+ test_empl_assoc_func_gens<boost::mapS,boost::ptr_mapS>();
+ test_empl_assoc_func_gens<boost::multisetS,boost::ptr_multisetS>();
+ test_empl_assoc_func_gens<boost::multimapS,boost::ptr_multimapS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_empl_assoc_func_gens<
+ boost::setS
+ , boost::set_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gens<
+ boost::mapS
+ , boost::map_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gens<
+ boost::multisetS
+ , boost::multiset_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gens<
+ boost::multimapS
+ , boost::multimap_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gens<boost::setS,boost::flat_setS>();
+ test_empl_assoc_func_gens<boost::mapS,boost::flat_mapS>();
+ test_empl_assoc_func_gens<boost::multisetS,boost::flat_multisetS>();
+ test_empl_assoc_func_gens<boost::multimapS,boost::flat_multimapS>();
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ test_empl_assoc_func_gen_recursive<boost::ptr_setS>();
+ test_empl_assoc_func_gen_recursive<boost::ptr_mapS>();
+ test_empl_assoc_func_gen_recursive<boost::ptr_multisetS>();
+ test_empl_assoc_func_gen_recursive<boost::ptr_multimapS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_empl_assoc_func_gen_recursive<boost::ptr_hash_setS>();
+ test_empl_assoc_func_gen_recursive<boost::ptr_hash_mapS>();
+ test_empl_assoc_func_gen_recursive<boost::ptr_hash_multisetS>();
+ test_empl_assoc_func_gen_recursive<boost::ptr_hash_multimapS>();
+ test_empl_assoc_func_gen_recursive<
+ boost::set_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gen_recursive<
+ boost::map_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gen_recursive<
+ boost::multiset_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gen_recursive<
+ boost::multimap_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gen_recursive<
+ boost::hash_set_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gen_recursive<
+ boost::hash_map_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gen_recursive<
+ boost::hash_multiset_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gen_recursive<
+ boost::hash_multimap_selector<boost::mpl::true_>
+ >();
+ test_empl_assoc_func_gen_recursive<boost::flat_setS>();
+ test_empl_assoc_func_gen_recursive<boost::flat_mapS>();
+ test_empl_assoc_func_gen_recursive<boost::flat_multisetS>();
+ test_empl_assoc_func_gen_recursive<boost::flat_multimapS>();
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ return 0;
+}
+

Added: sandbox/container_gen/libs/container_gen/test/emplace_function_gen.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/test/emplace_function_gen.cpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,837 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// Distributed under 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/config.hpp>
+
+#if defined BOOST_MSVC
+ #pragma warning (push)
+ #pragma warning (disable : 4996) // fn called w/params that may be unsafe
+#endif
+
+#include <utility>
+#include <cstring>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/range/algorithm/equal.hpp>
+#include <boost/heap/heap_merge.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+#include <boost/container_gen/is_mutable_heap_selector.hpp>
+#include <boost/container_gen/is_mergeable_heap_selector.hpp>
+#include "type_definitions.hpp"
+#include <boost/test/minimal.hpp>
+
+template <typename Emplacer, typename C>
+void
+ test_emplacer(
+ Emplacer const& emplacer
+ , C& c
+ , bool should_be_successful
+ , char const* value
+ )
+{
+ typename C::size_type old_size = c.size();
+ std::pair<typename C::iterator,bool> p = emplacer(c, value);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ BOOST_CHECK(!strcmp(p.first->c_str(), value));
+ BOOST_CHECK(c.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(c.size() == old_size);
+ }
+}
+
+template <typename S1, typename S2>
+void test_emplace_function_gen_bare()
+{
+ typename boost::container_gen<S1,test_string>::type test_container_1;
+ typename boost::emplace_function_gen<S1>::type emplacer_1;
+ bool is_multi = !boost::is_unique_associative_selector<S1>::value;
+
+ test_emplacer(emplacer_1, test_container_1, true, "able");
+ test_emplacer(emplacer_1, test_container_1, true, "fox");
+ test_emplacer(emplacer_1, test_container_1, true, "baker");
+ test_emplacer(emplacer_1, test_container_1, true, "charlie");
+ test_emplacer(emplacer_1, test_container_1, true, "dog");
+ test_emplacer(emplacer_1, test_container_1, is_multi, "able");
+ test_emplacer(emplacer_1, test_container_1, is_multi, "fox");
+ test_emplacer(emplacer_1, test_container_1, is_multi, "baker");
+ test_emplacer(emplacer_1, test_container_1, is_multi, "charlie");
+ test_emplacer(emplacer_1, test_container_1, is_multi, "dog");
+
+ typename boost::container_gen<S2,test_string>::type test_container_2;
+ typename boost::emplace_function_gen<S2>::type emplacer_2;
+
+ emplacer_2[test_container_2]
+ ("able")("fox")("baker")("charlie")("dog")
+ ("able")("fox")("baker")("charlie")("dog");
+
+ BOOST_CHECK(boost::range::equal(test_container_1, test_container_2));
+}
+
+template <typename Selector>
+void test_emplace_function_gen()
+{
+ test_emplace_function_gen_bare<Selector,Selector>();
+}
+
+template <typename Pair1, typename Pair2>
+void test_emplace_results(Pair1 const& p1, Pair2 const& p2)
+{
+ BOOST_CHECK(p1.second == p2.second);
+
+ if (p1.second)
+ {
+ BOOST_CHECK(*p1.first == *p2.first);
+ }
+}
+
+template <typename Selector1, typename Selector2>
+void test_emplace_function_gens()
+{
+ test_emplace_function_gen_bare<Selector1,Selector2>();
+ test_emplace_function_gen_bare<Selector2,Selector1>();
+
+ typename boost::container_gen<Selector1,test_string>::type container_1;
+ typename boost::container_gen<Selector2,test_string>::type container_2;
+ typename boost::emplace_function_gen<Selector1>::type adder_1;
+ typename boost::emplace_function_gen<Selector2>::type adder_2;
+
+ test_emplace_results(
+ adder_1(container_1, "able")
+ , adder_2(container_2, "able")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(
+ adder_1(container_1, "fox")
+ , adder_2(container_2, "fox")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(adder_1(container_1), adder_2(container_2));
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(
+ adder_1(container_1, "baker")
+ , adder_2(container_2, "baker")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(
+ adder_1(container_1, "charlie")
+ , adder_2(container_2, "charlie")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(
+ adder_1(container_1, "dog")
+ , adder_2(container_2, "dog")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(
+ adder_1(container_1, "able")
+ , adder_2(container_2, "able")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(
+ adder_1(container_1, "fox")
+ , adder_2(container_2, "fox")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(adder_1(container_1), adder_2(container_2));
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(
+ adder_1(container_1, "baker")
+ , adder_2(container_2, "baker")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(
+ adder_1(container_1, "charlie")
+ , adder_2(container_2, "charlie")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+ test_emplace_results(
+ adder_1(container_1, "dog")
+ , adder_2(container_2, "dog")
+ );
+ BOOST_CHECK(boost::range::equal(container_1, container_2));
+}
+
+template <typename T>
+void test_recursive_element(T const& t)
+{
+ BOOST_CHECK(
+ !strcmp(t.word.c_str(), "") || !strcmp(t.word.c_str(), "secret")
+ );
+ BOOST_CHECK((t.number == 0) || (t.number == 42));
+ BOOST_CHECK((t.letter == '\0') || (t.letter == 'X'));
+
+ typedef typename T::next_level_t C;
+ typename C::const_iterator itr_end = t.next_level.end();
+
+ for (
+ typename C::const_iterator itr = t.next_level.begin();
+ itr != itr_end;
+ ++itr
+ )
+ {
+ BOOST_CHECK(itr->previous_level == &t);
+ test_recursive_element(*itr);
+ }
+}
+
+template <typename Emplacer, typename T>
+void
+ test_emplacer_recursive(
+ Emplacer const& emplacer
+ , T& t
+ , bool should_be_successful
+ )
+{
+ typedef typename T::next_level_t C;
+ typename C::size_type old_size = t.next_level.size();
+ std::pair<typename C::iterator,bool> p = emplacer(t.next_level);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ test_recursive_element(*p.first);
+ BOOST_CHECK(!strcmp(p.first->word.c_str(), ""));
+ BOOST_CHECK(p.first->number == 0);
+ BOOST_CHECK(p.first->letter == '\0');
+ BOOST_CHECK(!p.first->flag);
+ BOOST_CHECK(t.next_level.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(t.next_level.size() == old_size);
+ }
+}
+
+template <typename Emplacer, typename T>
+void
+ test_emplacer_recursive(
+ Emplacer const& emplacer
+ , T& t
+ , bool should_be_successful
+ , char const* word
+ )
+{
+ typedef typename T::next_level_t C;
+ typename C::size_type old_size = t.next_level.size();
+ std::pair<typename C::iterator,bool> p = emplacer(t.next_level, word);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ test_recursive_element(*p.first);
+ BOOST_CHECK(!strcmp(p.first->word.c_str(), word));
+ BOOST_CHECK(p.first->number == 0);
+ BOOST_CHECK(p.first->letter == '\0');
+ BOOST_CHECK(!p.first->flag);
+ BOOST_CHECK(t.next_level.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(t.next_level.size() == old_size);
+ }
+}
+
+template <typename Emplacer, typename T>
+void
+ test_emplacer_recursive(
+ Emplacer const& emplacer
+ , T& t
+ , bool should_be_successful
+ , char const* word
+ , long n
+ )
+{
+ typedef typename T::next_level_t C;
+ typename C::size_type old_size = t.next_level.size();
+ std::pair<typename C::iterator,bool> p = emplacer(t.next_level, word, n);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ test_recursive_element(*p.first);
+ BOOST_CHECK(!strcmp(p.first->word.c_str(), word));
+ BOOST_CHECK(p.first->number == n);
+ BOOST_CHECK(p.first->letter == '\0');
+ BOOST_CHECK(!p.first->flag);
+ BOOST_CHECK(t.next_level.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(t.next_level.size() == old_size);
+ }
+}
+
+template <typename Emplacer, typename T>
+void
+ test_emplacer_recursive(
+ Emplacer const& emplacer
+ , T& t
+ , bool should_be_successful
+ , char const* word
+ , long n
+ , char letter
+ )
+{
+ typedef typename T::next_level_t C;
+ typename C::size_type old_size = t.next_level.size();
+ std::pair<
+ typename C::iterator
+ , bool
+ > p = emplacer(t.next_level, word, n, letter);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ test_recursive_element(*p.first);
+ BOOST_CHECK(!strcmp(p.first->word.c_str(), word));
+ BOOST_CHECK(p.first->number == n);
+ BOOST_CHECK(p.first->letter == letter);
+ BOOST_CHECK(!p.first->flag);
+ BOOST_CHECK(t.next_level.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(t.next_level.size() == old_size);
+ }
+}
+
+template <typename Emplacer, typename T>
+void
+ test_emplacer_recursive(
+ Emplacer const& emplacer
+ , T& t
+ , bool should_be_successful
+ , char const* word
+ , long n
+ , char letter
+ , bool b
+ )
+{
+ typedef typename T::next_level_t C;
+ typename C::size_type old_size = t.next_level.size();
+ std::pair<
+ typename C::iterator
+ , bool
+ > p = emplacer(t.next_level, word, n, letter, b);
+
+ BOOST_CHECK(p.second == should_be_successful);
+
+ if (p.second)
+ {
+ test_recursive_element(*p.first);
+ BOOST_CHECK(!strcmp(p.first->word.c_str(), word));
+ BOOST_CHECK(p.first->number == n);
+ BOOST_CHECK(p.first->letter == letter);
+ BOOST_CHECK(p.first->flag == b);
+ BOOST_CHECK(t.next_level.size() == old_size + 1);
+ }
+ else
+ {
+ BOOST_CHECK(t.next_level.size() == old_size);
+ }
+}
+
+template <typename Selector>
+void test_emplace_function_gen_recursive()
+{
+ test_recursive_data<Selector> top;
+ typename boost::emplace_function_gen<Selector>::type emplacer;
+
+ test_emplacer_recursive(emplacer, top, true);
+ test_emplacer_recursive(emplacer, top, true, "secret");
+ test_emplacer_recursive(
+ emplacer
+ , *(++top.next_level.begin())
+ , true
+ , "secret"
+ , 42
+ );
+ test_emplacer_recursive(
+ emplacer
+ , *(++top.next_level.begin())
+ , true
+ , "secret"
+ , 42
+ , 'X'
+ );
+ test_emplacer_recursive(emplacer, top, true, "secret", 42, 'X', true);
+}
+
+template <typename Selector>
+void test_emplace_stack()
+{
+ typename boost::container_gen<Selector,int>::type int_stack;
+ typename boost::emplace_function_gen<Selector>::type pusher;
+
+ pusher[int_stack](3)(5)(1);
+ BOOST_CHECK(1 == int_stack.top());
+ int_stack.pop();
+ BOOST_CHECK(5 == int_stack.top());
+ int_stack.pop();
+ BOOST_CHECK(3 == int_stack.top());
+ int_stack.pop();
+ BOOST_CHECK(int_stack.empty());
+}
+
+template <typename Selector>
+void test_emplace_queue()
+{
+ typename boost::container_gen<Selector,int>::type int_queue;
+ typename boost::emplace_function_gen<Selector>::type pusher;
+
+ pusher[int_queue](3)(5)(1);
+ BOOST_CHECK(3 == int_queue.front());
+ int_queue.pop();
+ BOOST_CHECK(5 == int_queue.front());
+ int_queue.pop();
+ BOOST_CHECK(1 == int_queue.front());
+ int_queue.pop();
+ BOOST_CHECK(int_queue.empty());
+}
+
+//[example__is_mergeable_heap_selector__true
+template <typename Heap>
+void test_heap_merge(Heap& heap1, Heap& heap2, boost::mpl::true_)
+{
+ heap1.merge(heap2);
+}
+//]
+
+//[example__is_mergeable_heap_selector__false
+template <typename Heap>
+void test_heap_merge(Heap& heap1, Heap& heap2, boost::mpl::false_)
+{
+ boost::heap::heap_merge(heap1, heap2);
+}
+//]
+
+//[example__is_mergeable_heap_selector
+template <typename Selector>
+void test_heap_merge()
+{
+ typename boost::container_gen<Selector,int>::type heap_1, heap_2;
+ typename boost::emplace_function_gen<Selector>::type pusher;
+
+ pusher[heap_1](3)(5)(1);
+ pusher[heap_2](2)(4)(0);
+ test_heap_merge(
+ heap_1
+ , heap_2
+ , boost::is_mergeable_heap_selector<Selector>()
+ );
+
+ for (BOOST_CHECK(heap_2.empty()); !heap_2.empty(); heap_2.pop())
+ {
+ }
+
+ BOOST_CHECK(5 == heap_1.top());
+ heap_1.pop();
+ BOOST_CHECK(4 == heap_1.top());
+ heap_1.pop();
+ BOOST_CHECK(3 == heap_1.top());
+ heap_1.pop();
+ BOOST_CHECK(2 == heap_1.top());
+ heap_1.pop();
+ BOOST_CHECK(1 == heap_1.top());
+ heap_1.pop();
+ BOOST_CHECK(0 == heap_1.top());
+ heap_1.pop();
+ BOOST_CHECK(heap_1.empty());
+}
+//]
+
+//[example__is_mutable_heap_selector__true
+template <typename Selector>
+void test_emplace_heap(boost::mpl::true_)
+{
+ typedef typename boost::container_gen<Selector,int>::type Heap;
+
+ Heap heap;
+ typename boost::emplace_function_gen<Selector>::type pusher;
+ typename Heap::handle_type handle_1 = pusher(heap, 3);
+ typename Heap::handle_type handle_2 = pusher(heap, 5);
+ typename Heap::handle_type handle_3 = pusher(heap, 1);
+
+ heap.update(handle_1, 4);
+ heap.increase(handle_2, 7);
+ heap.decrease(handle_3, 0);
+ BOOST_CHECK(7 == heap.top());
+ heap.pop();
+ BOOST_CHECK(4 == heap.top());
+ heap.pop();
+ BOOST_CHECK(0 == heap.top());
+ heap.pop();
+ BOOST_CHECK(heap.empty());
+}
+//]
+
+//[example__is_mutable_heap_selector__false
+template <typename Selector>
+void test_emplace_heap(boost::mpl::false_)
+{
+ typename boost::container_gen<Selector,int>::type heap;
+ typename boost::emplace_function_gen<Selector>::type pusher;
+
+ pusher[heap](2)(4)(0);
+ BOOST_CHECK(4 == heap.top());
+ heap.pop();
+ BOOST_CHECK(2 == heap.top());
+ heap.pop();
+ BOOST_CHECK(0 == heap.top());
+ heap.pop();
+ BOOST_CHECK(heap.empty());
+}
+//]
+
+//[example__is_mutable_heap_selector
+template <typename Selector>
+void test_emplace_heap()
+{
+ test_emplace_heap<Selector>(
+ boost::is_mutable_heap_selector<Selector>()
+ );
+ // ...
+ //<-
+ test_heap_merge<Selector>();
+ //->
+}
+//]
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
+int test_main(int argc, char** argv)
+{
+ test_emplace_function_gen<boost::vecS>();
+ test_emplace_function_gen<boost::dequeS>();
+ test_emplace_function_gen<boost::listS>();
+ test_emplace_function_gen<boost::ptr_vecS>();
+ test_emplace_function_gen<boost::ptr_dequeS>();
+ test_emplace_function_gen<boost::ptr_listS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+ test_emplace_function_gen<boost::slistS>();
+#endif
+ test_emplace_function_gen<boost::setS>();
+ test_emplace_function_gen<boost::mapS>();
+ test_emplace_function_gen<boost::multisetS>();
+ test_emplace_function_gen<boost::multimapS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+ test_emplace_function_gen<boost::hash_setS>();
+ test_emplace_function_gen<boost::hash_mapS>();
+ test_emplace_function_gen<boost::hash_multisetS>();
+ test_emplace_function_gen<boost::hash_multimapS>();
+#endif
+ test_emplace_function_gen<boost::ptr_setS>();
+ test_emplace_function_gen<boost::ptr_mapS>();
+ test_emplace_function_gen<boost::ptr_multisetS>();
+ test_emplace_function_gen<boost::ptr_multimapS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_emplace_function_gen<boost::ptr_hash_setS>();
+ test_emplace_function_gen<boost::ptr_hash_mapS>();
+ test_emplace_function_gen<boost::ptr_hash_multisetS>();
+ test_emplace_function_gen<boost::ptr_hash_multimapS>();
+ test_emplace_function_gen<boost::vector_selector<boost::mpl::true_> >();
+ test_emplace_function_gen<boost::stable_vecS>();
+ test_emplace_function_gen<
+ boost::static_vector_selector<boost::mpl::int_<16> >
+ >();
+ test_emplace_function_gen<boost::deque_selector<boost::mpl::true_> >();
+ test_emplace_function_gen<boost::list_selector<boost::mpl::true_> >();
+ test_emplace_function_gen<boost::set_selector<boost::mpl::true_> >();
+ test_emplace_function_gen<boost::map_selector<boost::mpl::true_> >();
+ test_emplace_function_gen<boost::multiset_selector<boost::mpl::true_> >();
+ test_emplace_function_gen<boost::multimap_selector<boost::mpl::true_> >();
+ test_emplace_function_gen<boost::hash_set_selector<boost::mpl::true_> >();
+ test_emplace_function_gen<boost::hash_map_selector<boost::mpl::true_> >();
+ test_emplace_function_gen<
+ boost::hash_multiset_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gen<
+ boost::hash_multimap_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gen<boost::flat_setS>();
+ test_emplace_function_gen<boost::flat_mapS>();
+ test_emplace_function_gen<boost::flat_multisetS>();
+ test_emplace_function_gen<boost::flat_multimapS>();
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ test_emplace_function_gens<boost::vecS,boost::dequeS>();
+ test_emplace_function_gens<boost::vecS,boost::listS>();
+ test_emplace_function_gens<boost::vecS,boost::ptr_vecS>();
+ test_emplace_function_gens<boost::vecS,boost::ptr_dequeS>();
+ test_emplace_function_gens<boost::vecS,boost::ptr_listS>();
+ test_emplace_function_gens<boost::dequeS,boost::listS>();
+ test_emplace_function_gens<boost::dequeS,boost::ptr_vecS>();
+ test_emplace_function_gens<boost::dequeS,boost::ptr_dequeS>();
+ test_emplace_function_gens<boost::dequeS,boost::ptr_listS>();
+ test_emplace_function_gens<boost::listS,boost::ptr_vecS>();
+ test_emplace_function_gens<boost::listS,boost::ptr_dequeS>();
+ test_emplace_function_gens<boost::listS,boost::ptr_listS>();
+ test_emplace_function_gens<boost::ptr_vecS,boost::ptr_dequeS>();
+ test_emplace_function_gens<boost::ptr_vecS,boost::ptr_listS>();
+ test_emplace_function_gens<boost::ptr_dequeS,boost::ptr_listS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+ test_emplace_function_gens<boost::hash_setS,boost::hash_mapS>();
+ test_emplace_function_gens<boost::hash_multisetS,boost::hash_multimapS>();
+#endif
+ test_emplace_function_gens<boost::setS,boost::mapS>();
+ test_emplace_function_gens<boost::setS,boost::ptr_setS>();
+ test_emplace_function_gens<boost::setS,boost::ptr_mapS>();
+ test_emplace_function_gens<boost::mapS,boost::ptr_setS>();
+ test_emplace_function_gens<boost::mapS,boost::ptr_mapS>();
+ test_emplace_function_gens<boost::ptr_setS,boost::ptr_mapS>();
+ test_emplace_function_gens<boost::multisetS,boost::multimapS>();
+ test_emplace_function_gens<boost::multisetS,boost::ptr_multisetS>();
+ test_emplace_function_gens<boost::multisetS,boost::ptr_multimapS>();
+ test_emplace_function_gens<boost::multimapS,boost::ptr_multisetS>();
+ test_emplace_function_gens<boost::multimapS,boost::ptr_multimapS>();
+ test_emplace_function_gens<boost::ptr_multisetS,boost::ptr_multimapS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_emplace_function_gens<boost::ptr_hash_setS,boost::ptr_hash_mapS>();
+ test_emplace_function_gens<
+ boost::ptr_hash_multisetS
+ , boost::ptr_hash_multimapS
+ >();
+ test_emplace_function_gens<
+ boost::vecS
+ , boost::vector_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<boost::vecS,boost::stable_vecS>();
+ test_emplace_function_gens<
+ boost::vecS
+ , boost::static_vector_selector<boost::mpl::int_<16> >
+ >();
+ test_emplace_function_gens<
+ boost::vecS
+ , boost::deque_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::vecS
+ , boost::list_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<boost::dequeS,boost::stable_vecS>();
+ test_emplace_function_gens<
+ boost::dequeS
+ , boost::static_vector_selector<boost::mpl::int_<16> >
+ >();
+ test_emplace_function_gens<
+ boost::dequeS
+ , boost::vector_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::dequeS
+ , boost::deque_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::dequeS
+ , boost::list_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<boost::listS,boost::stable_vecS>();
+ test_emplace_function_gens<
+ boost::listS
+ , boost::static_vector_selector<boost::mpl::int_<16> >
+ >();
+ test_emplace_function_gens<
+ boost::listS
+ , boost::vector_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::listS
+ , boost::deque_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::listS
+ , boost::list_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<boost::ptr_vecS,boost::stable_vecS>();
+ test_emplace_function_gens<
+ boost::ptr_vecS
+ , boost::static_vector_selector<boost::mpl::int_<16> >
+ >();
+ test_emplace_function_gens<
+ boost::ptr_vecS
+ , boost::vector_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::ptr_vecS
+ , boost::deque_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::ptr_vecS
+ , boost::list_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<boost::ptr_dequeS,boost::stable_vecS>();
+ test_emplace_function_gens<
+ boost::ptr_dequeS
+ , boost::static_vector_selector<boost::mpl::int_<16> >
+ >();
+ test_emplace_function_gens<
+ boost::ptr_dequeS
+ , boost::vector_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::ptr_dequeS
+ , boost::deque_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::ptr_dequeS
+ , boost::list_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<boost::ptr_listS,boost::stable_vecS>();
+ test_emplace_function_gens<
+ boost::ptr_listS
+ , boost::static_vector_selector<boost::mpl::int_<16> >
+ >();
+ test_emplace_function_gens<
+ boost::ptr_listS
+ , boost::vector_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::ptr_listS
+ , boost::deque_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::ptr_listS
+ , boost::list_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::stable_vecS
+ , boost::static_vector_selector<boost::mpl::int_<16> >
+ >();
+ test_emplace_function_gens<
+ boost::stable_vecS
+ , boost::vector_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::stable_vecS
+ , boost::deque_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::stable_vecS
+ , boost::list_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::static_vector_selector<boost::mpl::int_<16> >
+ , boost::vector_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::static_vector_selector<boost::mpl::int_<16> >
+ , boost::deque_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::static_vector_selector<boost::mpl::int_<16> >
+ , boost::list_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::vector_selector<boost::mpl::true_>
+ , boost::deque_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::vector_selector<boost::mpl::true_>
+ , boost::list_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::deque_selector<boost::mpl::true_>
+ , boost::list_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::setS
+ , boost::set_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::mapS
+ , boost::map_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::multisetS
+ , boost::multiset_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::multimapS
+ , boost::multimap_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::ptr_setS
+ , boost::set_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::ptr_mapS
+ , boost::map_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::ptr_multisetS
+ , boost::multiset_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<
+ boost::ptr_multimapS
+ , boost::multimap_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gens<boost::setS,boost::flat_setS>();
+ test_emplace_function_gens<boost::mapS,boost::flat_mapS>();
+ test_emplace_function_gens<boost::multisetS,boost::flat_multisetS>();
+ test_emplace_function_gens<boost::multimapS,boost::flat_multimapS>();
+ test_emplace_function_gens<boost::ptr_setS,boost::flat_setS>();
+ test_emplace_function_gens<boost::ptr_mapS,boost::flat_mapS>();
+ test_emplace_function_gens<boost::ptr_multisetS,boost::flat_multisetS>();
+ test_emplace_function_gens<boost::ptr_multimapS,boost::flat_multimapS>();
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ test_emplace_function_gen_recursive<boost::ptr_vecS>();
+ test_emplace_function_gen_recursive<boost::ptr_dequeS>();
+ test_emplace_function_gen_recursive<boost::ptr_listS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_emplace_function_gen_recursive<boost::slistS>();
+ test_emplace_function_gen_recursive<boost::stable_vecS>();
+ test_emplace_function_gen_recursive<
+ boost::vector_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gen_recursive<
+ boost::deque_selector<boost::mpl::true_>
+ >();
+ test_emplace_function_gen_recursive<
+ boost::list_selector<boost::mpl::true_>
+ >();
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ test_emplace_stack<boost::stackS>();
+ test_emplace_queue<boost::queueS>();
+ test_emplace_heap<boost::std_heapS>(boost::mpl::false_());
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_emplace_heap<boost::priority_queueS>();
+ test_emplace_heap<boost::d_ary_heap_selector<boost::heap::arity<4> > >();
+ test_emplace_heap<
+ boost::d_ary_heap_selector<
+ boost::heap::mutable_<true>
+ , boost::heap::arity<4>
+ >
+ >();
+ test_emplace_heap<boost::binomial_heapS>();
+ test_emplace_heap<boost::fibonacci_heapS>();
+ test_emplace_heap<boost::pairing_heapS>();
+ test_emplace_heap<boost::skew_heapS>();
+ test_emplace_heap<
+ boost::skew_heap_selector<boost::heap::mutable_<true> >
+ >();
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ return 0;
+}
+

Added: sandbox/container_gen/libs/container_gen/test/insert_range_function_gen.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/test/insert_range_function_gen.cpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,139 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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/config.hpp>
+
+#if defined BOOST_MSVC
+ #pragma warning (push)
+ #pragma warning (disable : 4996) // fn called w/params that may be unsafe
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/range/algorithm/equal.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/is_associative_selector.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/container_gen/insert_range_function_gen.hpp>
+#include <boost/container_gen/insert_range_result_gen.hpp>
+#include "type_definitions.hpp"
+#include "result_range.hpp"
+#include <boost/test/minimal.hpp>
+
+//[test__insert_range_function_gen
+template <typename Selector, typename AddedContainer>
+void test_insert_range_function_gen(AddedContainer const& added_container)
+{
+ typename boost::container_gen<Selector,test_string>::type
+ example_container, test_container, input_container;
+ typename boost::emplace_function_gen<Selector>::type emplacer;
+ typename boost::insert_range_function_gen<Selector>::type range_inserter;
+
+ emplacer[example_container]
+ ("able")("fox")("easy")
+ ("able")("fox")("iota")("hotel")("jupiter")("dog")
+ ("baker")("charlie")("dog");
+ emplacer[test_container]
+ ("able")("fox")("easy")("baker")("charlie")("dog");
+ emplacer[input_container]
+ ("able")("fox")("iota")("hotel")("jupiter")("dog");
+
+ typename boost::insert_range_result_gen<Selector,test_string>::type
+ insert_range_result = range_inserter(
+ test_container
+ , ++++++test_container.begin()
+ , input_container
+ );
+
+ BOOST_CHECK(
+ test_result_range(
+ insert_range_result
+ , added_container
+ , boost::is_associative_selector<Selector>()
+ )
+ );
+ BOOST_CHECK(6 == input_container.size());
+ BOOST_CHECK(boost::range::equal(test_container, example_container));
+}
+//]
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
+//[test__insert_range_function_gen__main
+int test_main(int argc, char** argv)
+{
+ boost::container_gen<boost::dequeS,test_string>::type added_container;
+ boost::emplace_function_gen<boost::dequeS>::type emplacer;
+
+ emplacer[added_container]
+ ("able")("fox")("iota")("hotel")("jupiter")("dog");
+ test_insert_range_function_gen<boost::vecS>(added_container);
+ test_insert_range_function_gen<boost::dequeS>(added_container);
+ test_insert_range_function_gen<boost::listS>(added_container);
+ // ...
+ //<-
+ test_insert_range_function_gen<boost::ptr_vecS>(added_container);
+ test_insert_range_function_gen<boost::ptr_dequeS>(added_container);
+ test_insert_range_function_gen<boost::ptr_listS>(added_container);
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_insert_range_function_gen<boost::vector_selector<boost::mpl::true_> >(
+ added_container
+ );
+ test_insert_range_function_gen<boost::stable_vecS>(added_container);
+ test_insert_range_function_gen<
+ boost::static_vector_selector<boost::mpl::int_<16> >
+ >(added_container);
+ test_insert_range_function_gen<boost::deque_selector<boost::mpl::true_> >(
+ added_container
+ );
+ test_insert_range_function_gen<boost::list_selector<boost::mpl::true_> >(
+ added_container
+ );
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ added_container.clear();
+ emplacer[added_container]
+ ("able")("dog")("fox")("hotel")("iota")("jupiter");
+ test_insert_range_function_gen<boost::multisetS>(added_container);
+ test_insert_range_function_gen<boost::multimapS>(added_container);
+ test_insert_range_function_gen<boost::ptr_multisetS>(added_container);
+ test_insert_range_function_gen<boost::ptr_multimapS>(added_container);
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_insert_range_function_gen<
+ boost::multiset_selector<boost::mpl::true_>
+ >(added_container);
+ test_insert_range_function_gen<
+ boost::multimap_selector<boost::mpl::true_>
+ >(added_container);
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION \
+ || !defined BOOST_NO_SLIST
+ added_container.clear();
+ emplacer[added_container]
+ ("dog")("jupiter")("hotel")("iota")("fox")("able");
+ test_insert_range_function_gen<boost::slistS>(added_container);
+#endif
+ added_container.clear();
+ emplacer[added_container]("hotel")("iota")("jupiter");
+ test_insert_range_function_gen<boost::setS>(added_container);
+ test_insert_range_function_gen<boost::mapS>(added_container);
+ test_insert_range_function_gen<boost::ptr_setS>(added_container);
+ test_insert_range_function_gen<boost::ptr_mapS>(added_container);
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_insert_range_function_gen<boost::set_selector<boost::mpl::true_> >(
+ added_container
+ );
+ test_insert_range_function_gen<boost::map_selector<boost::mpl::true_> >(
+ added_container
+ );
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //->
+
+ return 0;
+}
+//]
+

Added: sandbox/container_gen/libs/container_gen/test/push_range_function_gen.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/test/push_range_function_gen.cpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,133 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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/config.hpp>
+
+#if defined BOOST_MSVC
+ #pragma warning (push)
+ #pragma warning (disable : 4996) // fn called w/params that may be unsafe
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/range/algorithm/equal.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/is_associative_selector.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/container_gen/push_range_function_gen.hpp>
+#include <boost/container_gen/insert_range_result_gen.hpp>
+#include "type_definitions.hpp"
+#include "result_range.hpp"
+#include <boost/test/minimal.hpp>
+
+//[test__push_range_function_gen
+template <typename Selector, typename AddedContainer>
+void test_push_range_function_gen(AddedContainer const& added_container)
+{
+ typename boost::container_gen<Selector,test_string>::type
+ example_container, test_container, input_container;
+ typename boost::emplace_function_gen<Selector>::type emplacer;
+ typename boost::push_range_function_gen<Selector>::type range_pusher;
+
+ emplacer[example_container]
+ ("able")("fox")("easy")("baker")("charlie")("dog");
+ test_container = example_container;
+ emplacer[example_container]
+ ("able")("fox")("iota")("hotel")("jupiter")("dog");
+ emplacer[input_container]
+ ("able")("fox")("iota")("hotel")("jupiter")("dog");
+
+ typename boost::insert_range_result_gen<Selector,test_string>::type
+ push_range_result = range_pusher(test_container, input_container);
+
+ BOOST_CHECK(
+ test_result_range(
+ push_range_result
+ , added_container
+ , boost::is_associative_selector<Selector>()
+ )
+ );
+ BOOST_CHECK(boost::range::equal(test_container, example_container));
+}
+//]
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
+//[test__push_range_function_gen__main
+int test_main(int argc, char** argv)
+{
+ boost::container_gen<boost::dequeS,test_string>::type added_container;
+ boost::emplace_function_gen<boost::dequeS>::type emplacer;
+
+ emplacer[added_container]
+ ("able")("fox")("iota")("hotel")("jupiter")("dog");
+ test_push_range_function_gen<boost::vecS>(added_container);
+ test_push_range_function_gen<boost::dequeS>(added_container);
+ test_push_range_function_gen<boost::listS>(added_container);
+ // ...
+ //<-
+ test_push_range_function_gen<boost::ptr_vecS>(added_container);
+ test_push_range_function_gen<boost::ptr_dequeS>(added_container);
+ test_push_range_function_gen<boost::ptr_listS>(added_container);
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_push_range_function_gen<boost::vector_selector<boost::mpl::true_> >(
+ added_container
+ );
+ test_push_range_function_gen<boost::stable_vecS>(added_container);
+ test_push_range_function_gen<
+ boost::static_vector_selector<boost::mpl::int_<16> >
+ >(added_container);
+ test_push_range_function_gen<boost::deque_selector<boost::mpl::true_> >(
+ added_container
+ );
+ test_push_range_function_gen<boost::list_selector<boost::mpl::true_> >(
+ added_container
+ );
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ added_container.clear();
+ emplacer[added_container]
+ ("able")("dog")("fox")("hotel")("iota")("jupiter");
+ test_push_range_function_gen<boost::multisetS>(added_container);
+ test_push_range_function_gen<boost::multimapS>(added_container);
+ test_push_range_function_gen<boost::ptr_multisetS>(added_container);
+ test_push_range_function_gen<boost::ptr_multimapS>(added_container);
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_push_range_function_gen<boost::multiset_selector<boost::mpl::true_> >(
+ added_container
+ );
+ test_push_range_function_gen<boost::multimap_selector<boost::mpl::true_> >(
+ added_container
+ );
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION \
+ || !defined BOOST_NO_SLIST
+ added_container.clear();
+ emplacer[added_container]
+ ("dog")("jupiter")("hotel")("iota")("fox")("able");
+ test_push_range_function_gen<boost::slistS>(added_container);
+#endif
+ added_container.clear();
+ emplacer[added_container]("hotel")("iota")("jupiter");
+ test_push_range_function_gen<boost::setS>(added_container);
+ test_push_range_function_gen<boost::mapS>(added_container);
+ test_push_range_function_gen<boost::ptr_setS>(added_container);
+ test_push_range_function_gen<boost::ptr_mapS>(added_container);
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_push_range_function_gen<boost::set_selector<boost::mpl::true_> >(
+ added_container
+ );
+ test_push_range_function_gen<boost::map_selector<boost::mpl::true_> >(
+ added_container
+ );
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //->
+
+ return 0;
+}
+//]
+

Added: sandbox/container_gen/libs/container_gen/test/selectors.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/test/selectors.cpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,7598 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// Distributed under 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)
+
+#define BOOST_TYPEOF_COMPLIANT
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/c_str_cmp_selectors.hpp>
+#include <boost/container_gen/is_compare_selector.hpp>
+#include <boost/container_gen/is_hasher_selector.hpp>
+#include <boost/container_gen/is_allocator_selector.hpp>
+#include <boost/container_gen/is_container_selector.hpp>
+#include <boost/container_gen/is_reversible_selector.hpp>
+#include <boost/container_gen/is_random_access_selector.hpp>
+#include <boost/container_gen/is_associative_selector.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+#include <boost/container_gen/is_multiple_assoc_selector.hpp>
+#include <boost/container_gen/is_hashed_assoc_selector.hpp>
+#include <boost/container_gen/is_flat_assoc_selector.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+#include <boost/container_gen/is_queue_selector.hpp>
+#include <boost/container_gen/is_stack_selector.hpp>
+#include <boost/container_gen/is_std_heap_selector.hpp>
+#include <boost/container_gen/is_heap_selector.hpp>
+#include <boost/container_gen/is_iteratable_heap_selector.hpp>
+#include <boost/container_gen/is_order_iter_heap_selector.hpp>
+#include <boost/container_gen/is_mutable_heap_selector.hpp>
+#include <boost/container_gen/is_mergeable_heap_selector.hpp>
+#include <boost/container_gen/has_stable_iters_selector.hpp>
+#include <boost/container_gen/is_tr1_selector.hpp>
+#include <boost/container_gen/is_recursive_selector.hpp>
+
+#if defined BOOST_MPL_CFG_NO_HAS_XXX || defined BOOST_TYPEOF_EMULATION
+#include <boost/typeof/std/vector.hpp>
+#include <boost/typeof/std/deque.hpp>
+#include <boost/typeof/std/list.hpp>
+#include <boost/typeof/std/set.hpp>
+#include <boost/typeof/std/map.hpp>
+#include <boost/typeof/std/stack.hpp>
+#include <boost/typeof/std/queue.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_vector.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_deque.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_list.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_set.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_map.hpp>
+
+#if !defined BOOST_MSVC
+#include <boost/typeof/std/tr1/array.hpp>
+#include <boost/typeof/boost/array.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_array.hpp>
+#endif
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/std/slist.hpp>
+#include <boost/typeof/std/hash_set.hpp>
+#include <boost/typeof/std/hash_map.hpp>
+#else
+#include <boost/typeof/std/tr1/unordered_set.hpp>
+#include <boost/typeof/std/tr1/unordered_map.hpp>
+#include <boost/typeof/boost/unordered/unordered_set.hpp>
+#include <boost/typeof/boost/unordered/unordered_map.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_unordered_set.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_unordered_map.hpp>
+#include <boost/typeof/boost/container/vector.hpp>
+#include <boost/typeof/boost/container/stable_vector.hpp>
+#include <boost/typeof/boost/container/deque.hpp>
+#include <boost/typeof/boost/container/list.hpp>
+#include <boost/typeof/boost/container/slist.hpp>
+#include <boost/typeof/boost/container/set.hpp>
+#include <boost/typeof/boost/container/map.hpp>
+#include <boost/typeof/boost/container/flat_set.hpp>
+#include <boost/typeof/boost/container/flat_map.hpp>
+#include <boost/typeof/boost/heap/policies.hpp>
+#include <boost/typeof/boost/heap/priority_queue.hpp>
+#include <boost/typeof/boost/heap/d_ary_heap.hpp>
+#include <boost/typeof/boost/heap/binomial_heap.hpp>
+#include <boost/typeof/boost/heap/fibonacci_heap.hpp>
+#include <boost/typeof/boost/heap/pairing_heap.hpp>
+#include <boost/typeof/boost/heap/skew_heap.hpp>
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // BOOST_MPL_CFG_NO_HAS_XXX, BOOST_TYPEOF_EMULATION
+
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/aux_/test.hpp>
+
+//[test__is_compare_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::hash_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::hash_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::hash_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::hash_multimapS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::stackS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::queueS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_compare_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_compare_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT((
+ boost::is_compare_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_compare_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_compare_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_compare_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_compare_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_compare_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_compare_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_compare_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_hasher_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::hash_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::hash_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::hash_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::hash_multimapS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::stackS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::queueS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_hasher_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hasher_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hasher_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hasher_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_allocator_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::stackS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::queueS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_allocator_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_allocator_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_allocator_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_allocator_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_container_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::vecS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::setS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::mapS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::hash_setS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::hash_mapS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::hash_multisetS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::hash_multimapS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::stackS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::queueS>));
+ BOOST_MPL_ASSERT((boost::is_container_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_container_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_container_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_reversible_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::vecS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_reversible_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::setS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::mapS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT((boost::is_reversible_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_reversible_selector<boost::stackS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_reversible_selector<boost::queueS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_reversible_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_reversible_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_reversible_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_random_access_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT((boost::is_random_access_selector<boost::vecS>));
+ BOOST_MPL_ASSERT((boost::is_random_access_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_random_access_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_random_access_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_random_access_selector<boost::setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_random_access_selector<boost::mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_random_access_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_random_access_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT((
+ boost::is_random_access_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_random_access_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::std_heapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_random_access_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_random_access_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_random_access_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_random_access_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_random_access_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_associative_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((boost::is_associative_selector<boost::vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_associative_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_associative_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_associative_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::setS>));
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::mapS>));
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::hash_setS>));
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::hash_mapS>));
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::hash_multisetS>));
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::hash_multimapS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_associative_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_associative_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_associative_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT((boost::is_associative_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_associative_selector<boost::stackS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_associative_selector<boost::queueS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_associative_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_associative_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_unique_associative_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::listS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::slistS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<boost::setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<boost::mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::multimapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::std_heapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_unique_associative_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::tr1_binary_predicate_selector
+ >
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::c_str_greater_than_selector
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<
+ boost::std_flat_allocator_selector
+ >
+ ));
+}
+//]
+
+//[test__is_multiple_associative_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::listS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::slistS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<boost::multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<boost::multimapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::std_heapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_multiple_associative_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::tr1_binary_predicate_selector
+ >
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::binary_predicate_selector
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::c_str_less_than_selector
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::c_str_greater_than_selector
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<
+ boost::std_flat_allocator_selector
+ >
+ ));
+}
+//]
+
+//[test__is_hashed_associative_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::listS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::slistS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::multimapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::std_heapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_hashed_associative_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::tr1_binary_predicate_selector
+ >
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::c_str_greater_than_selector
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<
+ boost::std_flat_allocator_selector
+ >
+ ));
+}
+//]
+
+//[test__is_flat_associative_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::listS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::slistS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::multimapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::std_heapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_flat_associative_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_flat_associative_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_flat_associative_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_flat_associative_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<
+ boost::tr1_binary_predicate_selector
+ >
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_flat_associative_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_ptr_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::hash_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::hash_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::hash_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::hash_multimapS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT((boost::is_ptr_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT((boost::is_ptr_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT((boost::is_ptr_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT((boost::is_ptr_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT((boost::is_ptr_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT((boost::is_ptr_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT((boost::is_ptr_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::stackS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::queueS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_ptr_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT((
+ boost::is_ptr_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_ptr_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_ptr_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_ptr_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_queue_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::hash_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::hash_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::hash_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::hash_multimapS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::stackS>));
+ BOOST_MPL_ASSERT((boost::is_queue_selector<boost::queueS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_queue_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_queue_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_stack_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::hash_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::hash_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::hash_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::hash_multimapS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT((boost::is_stack_selector<boost::stackS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::queueS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_stack_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_stack_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_std_heap_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::hash_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::hash_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::hash_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::hash_multimapS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::stackS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_std_heap_selector<boost::queueS>));
+ BOOST_MPL_ASSERT((boost::is_std_heap_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_std_heap_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_heap_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::listS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::slistS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::multimapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::hash_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::hash_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::hash_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::hash_multimapS>));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::stackS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::queueS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_heap_selector<boost::std_heapS>));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_heap_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_heap_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_heap_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_heap_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_heap_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_heap_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_iteratable_heap_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::listS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::slistS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::multimapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::std_heapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_iteratable_heap_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_iteratable_heap_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_iteratable_heap_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_iteratable_heap_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_iteratable_heap_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_iteratable_heap_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<
+ boost::tr1_binary_predicate_selector
+ >
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_order_iteratable_heap_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::listS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::slistS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::multimapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::std_heapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_order_iteratable_heap_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_order_iteratable_heap_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_order_iteratable_heap_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_order_iteratable_heap_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_order_iteratable_heap_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::tr1_binary_predicate_selector
+ >
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::binary_predicate_selector
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::c_str_less_than_selector
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::c_str_greater_than_selector
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<
+ boost::std_flat_allocator_selector
+ >
+ ));
+}
+//]
+
+//[test__is_mutable_heap_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::listS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::slistS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::multimapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::std_heapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_mutable_heap_selector<
+//<-
+// boost::d_ary_heap_selector<boost::heap::mutable_<true>,int_<4> >
+//->
+ boost::d_ary_heap_selector<
+ boost::heap::mutable_<true>
+ , boost::heap::arity<4>
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_mutable_heap_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_mutable_heap_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_mutable_heap_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_mutable_heap_selector<
+ boost::skew_heap_selector<boost::heap::mutable_<true> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__is_mergeable_heap_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::listS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::slistS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::multimapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::std_heapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mutable_heap_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<
+//<-
+// boost::d_ary_heap_selector<boost::heap::mutable_<true>,int_<4> >
+//->
+ boost::d_ary_heap_selector<
+ boost::heap::mutable_<true>
+ , boost::heap::arity<4>
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_mergeable_heap_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_mergeable_heap_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_mergeable_heap_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_mergeable_heap_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_mergeable_heap_selector<
+ boost::skew_heap_selector<boost::heap::mutable_<true> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::tr1_binary_predicate_selector>
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_mergeable_heap_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+//[test__has_stable_iterators_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::dequeS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::listS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+ !defined BOOST_NO_SLIST
+//->
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::slistS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::multimapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::hash_multimapS>
+ ));
+//<-
+#endif
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::std_heapS>
+ ));
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::static_vector_selector<int_<1> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::tr1_binary_predicate_selector
+ >
+ ));
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::c_str_greater_than_selector
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::has_stable_iterators_selector<
+ boost::std_flat_allocator_selector
+ >
+ ));
+}
+//]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//[test__is_tr1_selector
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::listS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::slistS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_dequeS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_listS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::stackS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::std_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<
+ boost::vector_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<
+ boost::deque_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<
+ boost::list_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<
+ boost::set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<
+ boost::map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<
+ boost::multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<
+ boost::multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_tr1_selector<
+ boost::hash_set_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_tr1_selector<
+ boost::hash_map_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_tr1_selector<
+ boost::hash_multiset_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_tr1_selector<
+ boost::hash_multimap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+//->
+ true_
+//<-
+#endif
+//->
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_tr1_selector<boost::tr1_binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_tr1_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<boost::std_flat_allocator_selector>
+ ));
+}
+//]
+
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+MPL_TEST_CASE()
+{
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::vecS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::dequeS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::listS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::setS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::mapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::multisetS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::multimapS>));
+ BOOST_MPL_ASSERT((boost::is_recursive_selector<boost::ptr_vecS>));
+ BOOST_MPL_ASSERT((boost::is_recursive_selector<boost::ptr_dequeS>));
+ BOOST_MPL_ASSERT((boost::is_recursive_selector<boost::ptr_listS>));
+ BOOST_MPL_ASSERT((boost::is_recursive_selector<boost::ptr_setS>));
+ BOOST_MPL_ASSERT((boost::is_recursive_selector<boost::ptr_mapS>));
+ BOOST_MPL_ASSERT((boost::is_recursive_selector<boost::ptr_multisetS>));
+ BOOST_MPL_ASSERT((boost::is_recursive_selector<boost::ptr_multimapS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::stackS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::queueS>));
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::std_heapS>));
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#if !defined BOOST_NO_SLIST
+ BOOST_MPL_ASSERT_NOT((boost::is_recursive_selector<boost::slistS>));
+#endif
+#if defined BOOST_HAS_HASH
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::hash_multimapS>
+ ));
+#endif
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::hash_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::hash_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::ptr_hash_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::ptr_hash_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::ptr_hash_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::ptr_hash_multimapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::vector_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::stable_vecS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::static_vector_selector<int_<1> > >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::deque_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::list_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::slistS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::set_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::map_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::multiset_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::multimap_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_boost_not_std_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::hash_set_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::hash_map_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::hash_multiset_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<
+ boost::hash_multimap_selector<
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+ boost::is_tr1_not_boost_arg<true_>
+#else
+ true_
+#endif
+ >
+ >
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::flat_setS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::flat_mapS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::flat_multisetS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<boost::flat_multimapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::priority_queueS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<
+ boost::d_ary_heap_selector<boost::heap::arity<4> >
+ >
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::binomial_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::fibonacci_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::pairing_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::skew_heapS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::tr1_binary_predicate_selector>
+ ));
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::equal_to_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::binary_predicate_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::equivalenceS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::c_str_less_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::c_str_greater_than_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::boost_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::tr1_hash_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::std_allocator_selector>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<boost::std_flat_allocator_selector>
+ ));
+}
+
+#if !defined BOOST_MSVC
+// size_t ambiguity
+
+MPL_TEST_CASE()
+{
+ typedef boost::array_selector<int_<1> > exArrayS;
+
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_random_access_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<exArrayS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<exArrayS>
+ ));
+
+ typedef boost::array_selector<int_<1>,true_> exTR1ArrayS;
+
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_ptr_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_random_access_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_recursive_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_tr1_selector<exTR1ArrayS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<exTR1ArrayS>
+ ));
+
+ typedef boost::ptr_array_selector<int_<1> > exPtrArrayS;
+
+ BOOST_MPL_ASSERT((
+ boost::is_ptr_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_random_access_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_associative_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_unique_associative_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_multiple_associative_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_hashed_associative_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_heap_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_iteratable_heap_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_order_iteratable_heap_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::is_recursive_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT_NOT((
+ boost::is_tr1_selector<exPtrArrayS>
+ ));
+ BOOST_MPL_ASSERT((
+ boost::has_stable_iterators_selector<exPtrArrayS>
+ ));
+}
+
+#endif // !defined BOOST_MSVC
+

Added: sandbox/container_gen/libs/container_gen/test/splice_function_gen.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/test/splice_function_gen.cpp 2013-07-14 13:26:02 EDT (Sun, 14 Jul 2013) (r85036)
@@ -0,0 +1,216 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// Distributed under 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/config.hpp>
+
+#if defined BOOST_MSVC
+ #pragma warning (push)
+ #pragma warning (disable : 4996) // fn called w/params that may be unsafe
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/range/algorithm/equal.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/is_associative_selector.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/container_gen/splice_function_gen.hpp>
+#include <boost/container_gen/insert_range_result_gen.hpp>
+#include "type_definitions.hpp"
+#include "result_range.hpp"
+#include <boost/test/minimal.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <typename C, typename A>
+void
+ test_splice_function_gen_init(
+ C& ex_seq_1
+ , C& ex_seq_2
+ , C& input_seq
+ , boost::slist_selector<A>
+ )
+{
+ typedef boost::slist_selector<A> Selector;
+
+ typename boost::emplace_function_gen<Selector>::type emplacer;
+
+ emplacer[ex_seq_1]
+ ("able")("fox")("easy")("kilo")("baker")("charlie")("dog");
+ emplacer[ex_seq_2]
+ ("kilo")("able")("fox")("easy")("baker")("charlie")("dog");
+ emplacer[input_seq]
+ ("able")("fox")("easy");
+}
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//[test__splice_function_gen_in_place
+template <typename C, typename Selector>
+void
+ test_splice_function_gen_init(
+ C& ex_seq_1
+ , C& ex_seq_2
+ , C& input_seq
+ , Selector
+ )
+{
+ typename boost::emplace_function_gen<Selector>::type emplacer;
+
+ emplacer[ex_seq_1]
+ ("able")("fox")("easy")("kilo")("baker")("charlie")("dog");
+ emplacer[ex_seq_2]
+ ("able")("fox")("easy")("baker")("charlie")("dog")("kilo");
+ emplacer[input_seq]
+ ("baker")("charlie")("dog");
+}
+
+template <typename Selector>
+void test_splice_function_gen_in_place(Selector)
+{
+ typedef typename boost::container_gen<Selector,test_string>::type C;
+
+ C ex_seq_1, ex_seq_2, input_seq;
+
+ test_splice_function_gen_init(ex_seq_1, ex_seq_2, input_seq, Selector());
+
+ C test_seq(ex_seq_1);
+ typename boost::splice_function_gen<Selector>::type splicer;
+ typename boost::insert_range_result_gen<Selector,test_string>::type
+ insert_range_result = splicer(
+ test_seq
+ , ++++++test_seq.begin()
+ , test_seq
+ , ++++++++test_seq.begin()
+ , test_seq.end()
+ );
+
+ BOOST_CHECK(boost::range::equal(insert_range_result, input_seq));
+ BOOST_CHECK(boost::range::equal(test_seq, ex_seq_2));
+
+ typename C::iterator itr = splicer(
+ test_seq
+ , ++++++test_seq.begin()
+ , test_seq
+ , ++++++++++++test_seq.begin()
+ );
+
+ BOOST_CHECK(*itr == test_string("kilo"));
+ BOOST_CHECK(boost::range::equal(test_seq, ex_seq_1));
+ itr = splicer(
+ test_seq
+ , test_seq.end()
+ , test_seq
+ , ++++++test_seq.begin()
+ );
+ BOOST_CHECK(*itr == test_string("kilo"));
+ BOOST_CHECK(boost::range::equal(test_seq, ex_seq_2));
+ insert_range_result = splicer(
+ test_seq
+ , test_seq.end()
+ , test_seq
+ , ++++++test_seq.begin()
+ , ++++++++++++test_seq.begin()
+ );
+ BOOST_CHECK(boost::range::equal(insert_range_result, input_seq));
+ BOOST_CHECK(boost::range::equal(test_seq, ex_seq_1));
+}
+//]
+
+//[test__splice_function_gen
+template <typename Selector, typename AddedContainer>
+void test_splice_function_gen(AddedContainer const& added_container)
+{
+ test_splice_function_gen_in_place(Selector());
+
+ typedef typename boost::container_gen<Selector,test_string>::type C;
+
+ C ex_seq_1, ex_seq_2, test_seq_1, test_seq_2, input_seq;
+ typename boost::emplace_function_gen<Selector>::type emplacer;
+ typename boost::splice_function_gen<Selector>::type splicer;
+
+ emplacer[ex_seq_1]
+ ("able")("fox")("easy")("kilo")("baker")("charlie")("dog");
+ emplacer[ex_seq_2]
+ ("able")("fox")("easy")
+ ("able")("fox")("iota")("hotel")("jupiter")("dog")
+ ("baker")("charlie")("dog");
+ emplacer[test_seq_1]
+ ("able")("fox")("easy")("baker")("charlie")("dog");
+ emplacer[input_seq]
+ ("able")("fox")("iota")("kilo")("hotel")("jupiter")("dog");
+ emplacer[test_seq_2]
+ ("able")("fox")("iota")("hotel")("jupiter")("dog");
+
+ C test_seq_3(test_seq_1);
+ typename C::iterator itr = splicer(
+ test_seq_1
+ , ++++++test_seq_1.begin()
+ , input_seq
+ , ++++++input_seq.begin()
+ );
+
+ BOOST_CHECK(*itr == test_string("kilo"));
+ BOOST_CHECK(boost::range::equal(test_seq_1, ex_seq_1));
+ BOOST_CHECK(boost::range::equal(test_seq_2, input_seq));
+
+ typename boost::insert_range_result_gen<Selector,test_string>::type
+ insert_range_result = splicer(
+ test_seq_3
+ , ++++++test_seq_3.begin()
+ , input_seq
+ , input_seq.begin()
+ , input_seq.end()
+ );
+
+ BOOST_CHECK(
+ test_result_range(
+ insert_range_result
+ , added_container
+ , boost::is_associative_selector<Selector>()
+ )
+ );
+ BOOST_CHECK(input_seq.empty());
+ BOOST_CHECK(boost::range::equal(test_seq_3, ex_seq_2));
+}
+//]
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
+//[test__splice_function_gen__main
+int test_main(int argc, char** argv)
+{
+ boost::container_gen<boost::dequeS,test_string>::type c;
+ boost::emplace_function_gen<boost::dequeS>::type emplacer;
+
+ emplacer[c]("able")("fox")("iota")("hotel")("jupiter")("dog");
+ test_splice_function_gen<boost::vecS>(c);
+ test_splice_function_gen<boost::dequeS>(c);
+ test_splice_function_gen<boost::listS>(c);
+ test_splice_function_gen<boost::ptr_vecS>(c);
+ test_splice_function_gen<boost::ptr_dequeS>(c);
+ test_splice_function_gen<boost::ptr_listS>(c);
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+ test_splice_function_gen<boost::vector_selector<boost::mpl::true_> >(c);
+ test_splice_function_gen<boost::stable_vecS>(c);
+ test_splice_function_gen<
+ boost::static_vector_selector<boost::mpl::int_<16> >
+ >(c);
+ test_splice_function_gen<boost::deque_selector<boost::mpl::true_> >(c);
+ test_splice_function_gen<boost::list_selector<boost::mpl::true_> >(c);
+ c.clear();
+ emplacer[c]("dog")("jupiter")("hotel")("iota")("fox")("able");
+ test_splice_function_gen<boost::slistS>(c);
+//<-
+#endif // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+
+ return 0;
+}
+//]
+


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