$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r84654 - in sandbox/container_gen: . boost boost/container_gen boost/container_gen/detail boost/container_gen/detail/metafunction boost/detail boost/detail/function boost/detail/metafunction boost/graph boost/graph/detail boost/graph/detail/metafunction boost/pending boost/typeof boost/typeof/boost boost/typeof/boost/accumulators boost/typeof/boost/accumulators/framework boost/typeof/boost/accumulators/framework/accumulators boost/typeof/boost/accumulators/statistics boost/typeof/boost/container boost/typeof/boost/container_gen boost/typeof/boost/functional boost/typeof/boost/heap boost/typeof/boost/heap/detail boost/typeof/boost/iterator boost/typeof/boost/mpl boost/typeof/boost/parameter boost/typeof/boost/parameter/aux_ boost/typeof/boost/ptr_container boost/typeof/boost/ptr_container/detail boost/typeof/boost/unordered boost/typeof/boost/utility boost/typeof/std boost/typeof/std/tr1 boost/utility libs libs/container_gen libs/container_gen/doc libs/conta iner_gen/doc/html libs/container_gen/doc/html/container_gen libs/container_gen/doc/html/container_gen/reference libs/container_gen/example libs/container_gen/test libs/graph libs/graph/example libs/utility libs/utility/doc libs/utility/doc/html libs/utility/doc/src libs/utility/doc/src/get_iterator_second libs/utility/doc/src/get_iterator_value_second libs/utility/doc/src/get_reference libs/utility/doc/src/is_mpl_boolean_constant libs/utility/doc/src/is_mpl_integral_constant
From: sponage_at_[hidden]
Date: 2013-06-06 11:02:40
Author: expaler
Date: 2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)
New Revision: 84654
URL: http://svn.boost.org/trac/boost/changeset/84654
Log:
Updated Boost.ContainerGen to 0.8.
Added:
   sandbox/container_gen/
   sandbox/container_gen/LICENSE_1_0.txt   (contents, props changed)
   sandbox/container_gen/boost/
   sandbox/container_gen/boost.png   (contents, props changed)
   sandbox/container_gen/boost/container_gen/
   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/detail/
   sandbox/container_gen/boost/container_gen/detail/metafunction/
   sandbox/container_gen/boost/container_gen/detail/metafunction/is_clone_allocator.hpp   (contents, props changed)
   sandbox/container_gen/boost/container_gen/detail/selector_signatures.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_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/
   sandbox/container_gen/boost/detail/function/
   sandbox/container_gen/boost/detail/function/range_equal.hpp   (contents, props changed)
   sandbox/container_gen/boost/detail/function/range_greater.hpp   (contents, props changed)
   sandbox/container_gen/boost/detail/function/range_less.hpp   (contents, props changed)
   sandbox/container_gen/boost/detail/metafunction/
   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_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/boost/graph/
   sandbox/container_gen/boost/graph/adjacency_list.hpp   (contents, props changed)
   sandbox/container_gen/boost/graph/detail/
   sandbox/container_gen/boost/graph/detail/adjacency_list.hpp   (contents, props changed)
   sandbox/container_gen/boost/graph/detail/metafunction/
   sandbox/container_gen/boost/graph/detail/metafunction/is_front_insertion_sequence.hpp   (contents, props changed)
   sandbox/container_gen/boost/pending/
   sandbox/container_gen/boost/pending/container_traits.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/
   sandbox/container_gen/boost/typeof/boost/
   sandbox/container_gen/boost/typeof/boost/accumulators/
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulator_base.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulator_concept.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulator_set.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/droppable_accumulator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/external_accumulator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/reference_accumulator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/value_accumulator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/depends_on.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/extractor.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/framework/features.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/count.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/covariance.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/density.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/error_of.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/error_of_mean.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/extended_p_square.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/extended_p_square_quantile.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/kurtosis.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/max.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/mean.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/median.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/min.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/moment.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/p_square_cumul_dist.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/p_square_quantile.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/peaks_over_threshold.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/pot_quantile.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/pot_tail_mean.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_count.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_mean.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_sum.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_window.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/skewness.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/stats.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/sum.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/sum_kahan.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_mean.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_quantile.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_variate.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_variate_means.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/times2_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/variance.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_covariance.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_density.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_extended_p_square.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_kurtosis.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_mean.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_median.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_moment.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_p_square_quantile.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_peaks_over_threshold.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_skewness.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_sum.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_sum_kahan.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_tail_mean.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_tail_quantile.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_tail_variate_means.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_variance.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/array.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/
   sandbox/container_gen/boost/typeof/boost/container/allocator_traits.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/deque.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/flat_map.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/flat_set.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/list.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/map.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/set.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/slist.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/stable_vector.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/string.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container/vector.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container_gen/
   sandbox/container_gen/boost/typeof/boost/container_gen/c_str_cmp_selectors.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/container_gen/selectors.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/function.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/function_output_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/functional/
   sandbox/container_gen/boost/typeof/boost/functional/hash.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/
   sandbox/container_gen/boost/typeof/boost/heap/binomial_heap.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/d_ary_heap.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/detail/
   sandbox/container_gen/boost/typeof/boost/heap/detail/heap_comparison.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/detail/heap_node.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/detail/ilog2.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/detail/mutable_heap.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/detail/ordered_adaptor_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/detail/stable_heap.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/detail/tree_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/fibonacci_heap.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/pairing_heap.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/policies.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/priority_queue.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/heap/skew_heap.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/iterator/
   sandbox/container_gen/boost/typeof/boost/iterator/counting_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/iterator/filter_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/iterator/indirect_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/iterator/iterator_adaptor.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/iterator/iterator_facade.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/iterator/permutation_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/iterator/reverse_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/iterator/transform_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/iterator/zip_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/mpl/
   sandbox/container_gen/boost/typeof/boost/mpl/bool.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/mpl/char.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/mpl/int.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/mpl/long.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/mpl/size_t.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/mpl/void.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/noncopyable.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/optional.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/
   sandbox/container_gen/boost/typeof/boost/parameter.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/arg_list.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/cast.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/default.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/is_maybe.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/maybe.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/parameter_requirements.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/parenthesized_type.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/result_of0.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/set.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/tag.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/tagged_argument.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/template_keyword.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/unwrap_cv_reference.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/void.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/aux_/yesno.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/binding.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/config.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/keyword.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/macros.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/match.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/name.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/preprocessor.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/parameter/value_type.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/
   sandbox/container_gen/boost/typeof/boost/ptr_container/clone_allocator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/detail/
   sandbox/container_gen/boost/typeof/boost/ptr_container/detail/ptr_map_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_array.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_deque.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_list.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_map.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_set.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_unordered_map.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_unordered_set.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_vector.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/rational.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/ref.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/shared_container_iterator.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/unordered/
   sandbox/container_gen/boost/typeof/boost/unordered/unordered_map.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/unordered/unordered_set.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/boost/utility/
   sandbox/container_gen/boost/typeof/boost/utility/result_of.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/std/
   sandbox/container_gen/boost/typeof/std/hash_map.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/std/hash_set.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/std/slist.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/std/tr1/
   sandbox/container_gen/boost/typeof/std/tr1/array.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/std/tr1/functional.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/std/tr1/unordered_map.hpp   (contents, props changed)
   sandbox/container_gen/boost/typeof/std/tr1/unordered_set.hpp   (contents, props changed)
   sandbox/container_gen/boost/utility/
   sandbox/container_gen/boost/utility/get_iterator_second.hpp   (contents, props changed)
   sandbox/container_gen/boost/utility/get_iterator_value_second.hpp   (contents, props changed)
   sandbox/container_gen/boost/utility/get_reference.hpp   (contents, props changed)
   sandbox/container_gen/boost/utility/is_mpl_boolean_constant.hpp   (contents, props changed)
   sandbox/container_gen/boost/utility/is_mpl_integral_constant.hpp   (contents, props changed)
   sandbox/container_gen/libs/
   sandbox/container_gen/libs/container_gen/
   sandbox/container_gen/libs/container_gen/doc/
   sandbox/container_gen/libs/container_gen/doc/Jamroot   (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/
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/
   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/
   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_multiple_assoc_selector.html   (contents, props changed)
   sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_muta_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_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/example/
   sandbox/container_gen/libs/container_gen/example/output_char_tallies.cpp   (contents, props changed)
   sandbox/container_gen/libs/container_gen/example/output_rearrangements.cpp   (contents, props changed)
   sandbox/container_gen/libs/container_gen/example/output_shape_stats.cpp   (contents, props changed)
   sandbox/container_gen/libs/container_gen/test/
   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/result_range.hpp   (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)
   sandbox/container_gen/libs/container_gen/test/type_definitions.hpp   (contents, props changed)
   sandbox/container_gen/libs/graph/
   sandbox/container_gen/libs/graph/example/
   sandbox/container_gen/libs/graph/example/container_gen.cpp   (contents, props changed)
   sandbox/container_gen/libs/graph/example/container_gen.expected   (contents, props changed)
   sandbox/container_gen/libs/utility/
   sandbox/container_gen/libs/utility/doc/
   sandbox/container_gen/libs/utility/doc/html/
   sandbox/container_gen/libs/utility/doc/html/get_iterator_second.html   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/html/get_iterator_value_second.html   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/html/get_reference.html   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/html/is_mpl_boolean_constant.html   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/html/is_mpl_integral_constant.html   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/src/
   sandbox/container_gen/libs/utility/doc/src/get_iterator_second/
   sandbox/container_gen/libs/utility/doc/src/get_iterator_second/Jamroot   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/src/get_iterator_second/doc.qbk   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/src/get_iterator_value_second/
   sandbox/container_gen/libs/utility/doc/src/get_iterator_value_second/Jamroot   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/src/get_iterator_value_second/doc.qbk   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/src/get_reference/
   sandbox/container_gen/libs/utility/doc/src/get_reference/Jamroot   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/src/get_reference/doc.qbk   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/src/is_mpl_boolean_constant/
   sandbox/container_gen/libs/utility/doc/src/is_mpl_boolean_constant/Jamroot   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/src/is_mpl_boolean_constant/doc.qbk   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/src/is_mpl_integral_constant/
   sandbox/container_gen/libs/utility/doc/src/is_mpl_integral_constant/Jamroot   (contents, props changed)
   sandbox/container_gen/libs/utility/doc/src/is_mpl_integral_constant/doc.qbk   (contents, props changed)
Added: sandbox/container_gen/LICENSE_1_0.txt
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/LICENSE_1_0.txt	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,23 @@
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
Added: sandbox/container_gen/boost.png
==============================================================================
Binary file. No diff available.
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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,2180 @@
+//=============================================================================
+// 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/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 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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/detail/metafunction/is_clone_allocator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/detail/metafunction/is_clone_allocator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,46 @@
+//=============================================================================
+// 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_DETAIL_METAFUNCTION_IS_CLONE_ALLOCATOR_HPP
+#define BOOST_CONTAINER_GEN_DETAIL_METAFUNCTION_IS_CLONE_ALLOCATOR_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/container_gen/is_compare_selector.hpp>
+#include <boost/container_gen/is_hasher_selector.hpp>
+#include <boost/detail/metafunction/is_allocator.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+    // Without the ability to detect the presence of static member function
+    // templates, this hack relies on process of elimination to facilitate
+    // template argument deduction.
+    template <typename T>
+    struct is_clone_allocator
+      : ::boost::mpl::eval_if<
+            is_allocator<T>
+          , ::boost::mpl::false_
+          , ::boost::mpl::eval_if<
+                is_compare_selector<T>
+              , ::boost::mpl::false_
+              , ::boost::mpl::if_<
+                    is_hasher_selector<T>
+                  , ::boost::mpl::false_
+                  , ::boost::mpl::true_
+                >
+            >
+        >::type
+    {
+        BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_clone_allocator,(T))
+    };
+}}}  // namespace boost::detail::metafunction
+
+#endif  // BOOST_CONTAINER_GEN_DETAIL_METAFUNCTION_IS_CLONE_ALLOCATOR_HPP
+
Added: sandbox/container_gen/boost/container_gen/detail/selector_signatures.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/container_gen/detail/selector_signatures.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,394 @@
+//=============================================================================
+// 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_DETAIL_SELECTOR_SIGNATURES_HPP_INCLUDED
+#define BOOST_CONTAINER_GEN_DETAIL_SELECTOR_SIGNATURES_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/parameter/parameters.hpp>
+#include <boost/heap/policies.hpp>
+#include <boost/container_gen/selector_keywords.hpp>
+#include <boost/container_gen/is_container_selector.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>
+
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+#include <boost/utility/is_mpl_integral_constant.hpp>
+#include <boost/utility/is_mpl_boolean_constant.hpp>
+#include <boost/container_gen/detail/metafunction/is_clone_allocator.hpp>
+#include <boost/detail/metafunction/is_allocator.hpp>
+#endif
+
+namespace boost { namespace detail {
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::required<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::constant_size_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::is_mpl_integral_constant< ::boost::mpl::_>
+#endif
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::is_tr1_not_boost_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::is_mpl_boolean_constant< ::boost::mpl::_>
+#endif
+                >
+            >
+            array_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+                    ::boost::parameter::deduced<
+                        ::boost::allocator_selector_tag
+                    >
+                  , ::boost::is_allocator_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::is_boost_not_std_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::is_mpl_boolean_constant< ::boost::mpl::_>
+#endif
+                >
+            >
+            sequence_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::compare_selector_tag>
+                  , ::boost::is_compare_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+                    ::boost::parameter::deduced<
+                        ::boost::allocator_selector_tag
+                    >
+                  , ::boost::is_allocator_selector< ::boost::mpl::_>
+                >
+            >
+            associative_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::compare_selector_tag>
+                  , ::boost::is_compare_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+                    ::boost::parameter::deduced<
+                        ::boost::allocator_selector_tag
+                    >
+                  , ::boost::is_allocator_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::is_boost_not_std_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::is_mpl_boolean_constant< ::boost::mpl::_>
+#endif
+                >
+            >
+            boost_or_std_assoc_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::hasher_selector_tag>
+                  , ::boost::is_hasher_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::compare_selector_tag>
+                  , ::boost::is_compare_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+                    ::boost::parameter::deduced<
+                        ::boost::allocator_selector_tag
+                    >
+                  , ::boost::is_allocator_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::is_tr1_not_boost_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::is_mpl_boolean_constant< ::boost::mpl::_>
+#endif
+                >
+            >
+            hashed_associative_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::required<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::constant_size_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::is_mpl_integral_constant< ::boost::mpl::_>
+#endif
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::ptr_clone_allocator_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::detail::metafunction::is_clone_allocator<
+                        ::boost::mpl::_
+                    >
+#endif
+                >
+            >
+            ptr_array_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::ptr_clone_allocator_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::detail::metafunction::is_clone_allocator<
+                        ::boost::mpl::_
+                    >
+#endif
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::ptr_allocator_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::detail::metafunction::is_allocator<
+                        ::boost::mpl::_
+                    >
+#endif
+                >
+            >
+            ptr_sequence_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::compare_selector_tag>
+                  , ::boost::is_compare_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::ptr_clone_allocator_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::detail::metafunction::is_clone_allocator<
+                        ::boost::mpl::_
+                    >
+#endif
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::ptr_allocator_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::detail::metafunction::is_allocator<
+                        ::boost::mpl::_
+                    >
+#endif
+                >
+            >
+            ptr_associative_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::hasher_selector_tag>
+                  , ::boost::is_hasher_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::compare_selector_tag>
+                  , ::boost::is_compare_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::ptr_clone_allocator_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::detail::metafunction::is_clone_allocator<
+                        ::boost::mpl::_
+                    >
+#endif
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::ptr_allocator_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::detail::metafunction::is_allocator<
+                        ::boost::mpl::_
+                    >
+#endif
+                >
+            >
+            ptr_hashed_assoc_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::compare_selector_tag>
+                  , ::boost::is_compare_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+                    ::boost::parameter::deduced<
+                        ::boost::sequence_selector_tag
+                    >
+                  , ::boost::is_container_selector< ::boost::mpl::_>
+                >
+            >
+            std_heap_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::compare_selector_tag>
+                  , ::boost::is_compare_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+                    ::boost::parameter::deduced<
+                        ::boost::allocator_selector_tag
+                    >
+                  , ::boost::is_allocator_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional< ::boost::heap::tag::stable>
+              , ::boost::parameter::optional<
+                    ::boost::heap::tag::stability_counter_type
+                >
+            >
+            priority_queue_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::required<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::heap::tag::arity
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::is_mpl_integral_constant< ::boost::mpl::_>
+#endif
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::compare_selector_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::is_compare_selector< ::boost::mpl::_>
+#endif
+                >
+              , ::boost::parameter::optional<
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    ::boost::parameter::deduced<
+#endif
+                        ::boost::allocator_selector_tag
+#if !defined BOOST_MPL_CFG_NO_HAS_XXX
+                    >
+                  , ::boost::is_allocator_selector< ::boost::mpl::_>
+#endif
+                >
+              , ::boost::parameter::optional< ::boost::heap::tag::stable>
+              , ::boost::parameter::optional<
+                    ::boost::heap::tag::stability_counter_type
+                >
+              , ::boost::parameter::optional< ::boost::heap::tag::mutable_>
+            >
+            d_ary_heap_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::compare_selector_tag>
+                  , ::boost::is_compare_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+                    ::boost::parameter::deduced<
+                        ::boost::allocator_selector_tag
+                    >
+                  , ::boost::is_allocator_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional< ::boost::heap::tag::stable>
+              , ::boost::parameter::optional<
+                    ::boost::heap::tag::stability_counter_type
+                >
+              , ::boost::parameter::optional<
+                    ::boost::heap::tag::constant_time_size
+                >
+            >
+            fibonacci_heap_selector_signature;
+
+    typedef fibonacci_heap_selector_signature
+            pairing_heap_selector_signature;
+
+    typedef fibonacci_heap_selector_signature
+            binomial_heap_selector_signature;
+
+    typedef ::boost::parameter::parameters<
+                ::boost::parameter::optional<
+                    ::boost::parameter::deduced< ::boost::compare_selector_tag>
+                  , ::boost::is_compare_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional<
+                    ::boost::parameter::deduced<
+                        ::boost::allocator_selector_tag
+                    >
+                  , ::boost::is_allocator_selector< ::boost::mpl::_>
+                >
+              , ::boost::parameter::optional< ::boost::heap::tag::stable>
+              , ::boost::parameter::optional<
+                    ::boost::heap::tag::store_parent_pointer
+                >
+              , ::boost::parameter::optional<
+                    ::boost::heap::tag::stability_counter_type
+                >
+              , ::boost::parameter::optional<
+                    ::boost::heap::tag::constant_time_size
+                >
+              , ::boost::parameter::optional< ::boost::heap::tag::mutable_>
+            >
+            skew_heap_selector_signature;
+}}  // namespace boost::detail
+
+#endif  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif  // BOOST_CONTAINER_GEN_DETAIL_SELECTOR_SIGNATURES_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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,828 @@
+//=============================================================================
+// 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/detail/workaround.hpp>
+
+#if !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>
+#include <boost/container/detail/preprocessor.hpp>
+#endif
+
+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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    template <typename F, typename C>
+    emplace_assoc_function_proxy<F,C>::emplace_assoc_function_proxy(C& c)
+      : _function(), _container(c)
+    {
+    }
+
+    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_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO
+#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 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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO
+#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);
+    }
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO
+    };
+
+    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_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO
+    };
+
+    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_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO
+    };
+
+    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  // BOOST_CONTAINER_PERFECT_FORWARDING
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPL_ASSOC_FUNC_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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/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>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/container_gen/is_hashed_assoc_selector.hpp>
+#include <boost/container_gen/is_tr1_selector.hpp>
+#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
+            >
+          , ::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
+              , ::boost::mpl::if_<
+                    is_multiple_associative_selector<Selector>
+                  , detail::mac_emplace_emu_associative_function
+                  , detail::uac_emplace_emu_associative_function
+                >
+            >
+        >
+        //->
+    {
+        // typedef ... type;
+        //<-
+        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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,1048 @@
+//=============================================================================
+// 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/detail/workaround.hpp>
+
+#if !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>
+#include <boost/container/detail/preprocessor.hpp>
+
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_MACRO(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_MACRO(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  // BOOST_CONTAINER_PERFECT_FORWARDING
+
+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_CONTAINER_PERFECT_FORWARDING
+        template <typename ...Args>
+        inline emplace_function_proxy& operator()(Args&& ...args)
+        {
+            this->_function(this->_container, ::boost::forward<Args>(args)...);
+            return *this;
+        }
+#else  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+        BOOST_PP_REPEAT(
+            BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+          , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_MACRO
+          , _container.begin()
+        )
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+        BOOST_PP_REPEAT(
+            BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+          , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_MACRO
+          , _container.end()
+        )
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+        BOOST_PP_REPEAT(
+            BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+          , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_MACRO
+          , _container.begin()
+        )
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+        BOOST_PP_REPEAT(
+            BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+          , BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_MACRO
+          , _container.end()
+        )
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+    };
+
+    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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+
+    struct ptr_sequence_emplace_function
+    {
+        template <typename C>
+        emplace_function_proxy<ptr_sequence_emplace_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, 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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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
+        );
+    }
+
+#if !defined BOOST_NO_CXX11_RVALUE_REFERENCES
+    struct heap_emplace_function
+    {
+        template <typename C>
+        emplace_function_proxy<heap_emplace_function,C>
+            operator[](C& _container) const;
+
+#if 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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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
+        );
+    }
+#endif  // BOOST_NO_CXX11_RVALUE_REFERENCES
+
+    struct adaptor_emplace_emu_function
+    {
+        template <typename C>
+        emplace_function_proxy<adaptor_emplace_emu_function,C>
+            operator[](C& _container) const;
+
+#if 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  // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO(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_MACRO
+          , _
+        )
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_CALL_OP_MACRO
+#endif  // BOOST_CONTAINER_PERFECT_FORWARDING
+    };
+
+    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_CONTAINER_PERFECT_FORWARDING
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQ_EMU_MACRO
+#undef BOOST_CONTAINER_GEN_EMPLACE_FUNCTION_GEN_SEQUENCE_MACRO
+#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
+                    >
+                >
+            >
+        >
+        //->
+    {
+        // typedef ... type;
+        //<-
+        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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,240 @@
+//=============================================================================
+// 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
+
+//[reference__has_emplace_member_function_selector
+namespace boost {
+
+    template <typename Selector>
+    struct has_emplace_member_function_selector
+        //<-
+      : ::boost::mpl::false_
+        //->
+    {
+        // typedef ... type;
+        //<-
+        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>
+
+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 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 AllocatorSelector>
+    struct has_emplace_member_function_selector<
+        stable_vector_selector<AllocatorSelector>
+    > : ::boost::mpl::true_
+    {
+    };
+
+    template <typename AllocatorSelector>
+    struct has_emplace_member_function_selector<
+        slist_selector<AllocatorSelector>
+    > : ::boost::mpl::true_
+    {
+    };
+
+    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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,181 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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  // 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,879 @@
+//=======================================================================
+// 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
+            >
+        >
+        //->
+    {
+        // typedef ... type;
+        //<-
+        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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,106 @@
+//=============================================================================
+// 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
+      : ::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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,88 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_COMPARE_SELECTOR_HPP
+#define BOOST_CONTAINER_GEN_IS_COMPARE_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>
+#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_
+    {
+    };
+}  // 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/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
+      : ::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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,444 @@
+//=============================================================================
+// 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 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
+        //<-
+      : ::boost::mpl::aux::has_type<
+            container_gen<Selector,int>
+          , ::boost::mpl::false_
+        >::type
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,113 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,171 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,142 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,132 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,142 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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_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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,200 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,141 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,196 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,97 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,173 @@
+//=============================================================================
+// 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 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,212 @@
+//=============================================================================
+// 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
+
+//[reference__is_recursive_selector
+namespace boost {
+
+    template <typename Selector>
+    struct is_recursive_selector
+        //<-
+      : is_ptr_selector<Selector>
+        //->
+    {
+        // typedef ... type;
+        //<-
+        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>
+
+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 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 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_
+    {
+    };
+
+    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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,261 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_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>
+
+//[reference__is_stack_selector
+namespace boost {
+
+    template <typename Selector>
+    struct is_stack_selector
+        //<-
+      : ::boost::mpl::false_
+        //->
+    {
+        // typedef ... type;
+        //<-
+        BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_stack_selector, (Selector))
+        //->
+    };
+}  // namespace boost
+//]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+    template <>
+    struct is_stack_selector<stack_selector_base> : ::boost::mpl::true_
+    {
+    };
+}  // namespace boost
+
+#else  // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+    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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,59 @@
+//=============================================================================
+// 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>
+
+//[reference__is_std_heap_selector
+namespace boost {
+
+    template <typename Selector>
+    struct is_std_heap_selector
+        //<-
+      : ::boost::mpl::false_
+        //->
+    {
+        // typedef ... type;
+        //<-
+        BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_std_heap_selector, (Selector))
+        //->
+    };
+}  // namespace boost
+//]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+    template <>
+    struct is_std_heap_selector<std_heap_selector_base> : ::boost::mpl::true_
+    {
+    };
+}  // namespace boost
+
+#else  // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+    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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,145 @@
+//=============================================================================
+// 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_
+        //->
+    {
+        // typedef ... type;
+        //<-
+        BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_tr1_selector, (Selector))
+        //->
+    };
+
+    template <>
+    struct is_tr1_selector<tr1_hash_selector> : ::boost::mpl::true_
+    {
+    };
+}  // 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 {
+
+#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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,194 @@
+//=============================================================================
+// 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
+        //<-
+      : ::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
+        //->
+    {
+        // typedef ... 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,705 @@
+//=======================================================================
+// 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
+            >
+        >
+        //->
+    {
+        // typedef ... type;
+        //<-
+        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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,1197 @@
+//=============================================================================
+// 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/mpl/if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/tr1/functional.hpp>
+#include <boost/functional/hash.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 typename ::boost::mpl::if_<
+                        ::boost::detail::metafunction::is_container<T>
+                      , ::boost::detail::range_greater
+                      , ::std::greater<T>
+                    >::type
+                    type;
+        };
+    };
+
+    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/config.hpp>
+#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>
+
+#include <boost/mpl/apply_wrap.hpp>
+
+namespace boost {
+
+#if !defined BOOST_MSVC
+    struct array_selector_base
+    {
+    };
+
+    template <typename ConstantSize, typename IsTR1 = ::boost::mpl::false_>
+    struct array_selector : array_selector_base
+    {
+        template <typename T, typename Unused>
+        struct apply
+        {
+            typedef typename ::boost::mpl::if_<
+                        IsTR1
+                      , ::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 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
+
+//[reference__adaptor_and_heap_selector_templates
+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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,731 @@
+//=============================================================================
+// 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 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 IsTR1 = ::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;
+//<-
+#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  // 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,1147 @@
+//=======================================================================
+// 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
+                >
+            >
+        >
+        //->
+    {
+        // typedef ... type;
+        //<-
+        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/function/range_equal.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/function/range_equal.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,26 @@
+// 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_FUNCTION_RANGE_EQUAL_HPP_INCLUDED
+#define BOOST_DETAIL_FUNCTION_RANGE_EQUAL_HPP_INCLUDED
+
+#include <boost/range/algorithm/equal.hpp>
+
+namespace boost { namespace detail {
+
+    struct range_equal
+    {
+        typedef bool result_type;
+
+        template <typename R1, typename R2>
+        inline result_type operator()(R1 const& r1, R2 const& r2) const
+        {
+            return ::boost::range::equal(r1, r2);
+        }
+    };
+}}  // namespace boost::detail
+
+#endif  // BOOST_DETAIL_FUNCTION_RANGE_EQUAL_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/detail/function/range_greater.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/function/range_greater.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,26 @@
+// 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_FUNCTION_RANGE_GREATER_HPP_INCLUDED
+#define BOOST_DETAIL_FUNCTION_RANGE_GREATER_HPP_INCLUDED
+
+#include <boost/range/algorithm/lexicographical_compare.hpp>
+
+namespace boost { namespace detail {
+
+    struct range_greater
+    {
+        typedef bool result_type;
+
+        template <typename R1, typename R2>
+        inline result_type operator()(R1 const& r1, R2 const& r2) const
+        {
+            return ::boost::range::lexicographical_compare(r2, r1);
+        }
+    };
+}}  // namespace boost::detail
+
+#endif  // BOOST_DETAIL_FUNCTION_RANGE_GREATER_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/detail/function/range_less.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/function/range_less.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,26 @@
+// 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_FUNCTION_RANGE_LESS_HPP_INCLUDED
+#define BOOST_DETAIL_FUNCTION_RANGE_LESS_HPP_INCLUDED
+
+#include <boost/range/algorithm/lexicographical_compare.hpp>
+
+namespace boost { namespace detail {
+
+    struct range_less
+    {
+        typedef bool result_type;
+
+        template <typename R1, typename R2>
+        inline result_type operator()(R1 const& r1, R2 const& r2) const
+        {
+            return ::boost::range::lexicographical_compare(r1, r2);
+        }
+    };
+}}  // namespace boost::detail
+
+#endif  // BOOST_DETAIL_FUNCTION_RANGE_LESS_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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_SIZE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_MFUNC_SIZE_HPP_INCLUDED
+
+#include <boost/tti/has_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)
+}}}  // 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_reference.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/detail/metafunction/has_reference.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,78 @@
+// 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/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_max_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
+        >
+    {
+    };
+
+    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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,153 @@
+// 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_merge.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_and_merge
+#if 1
+      : has_member_function_push<
+            T
+          , typename T::handle_type
+          , ::boost::mpl::vector1<typename T::const_reference>
+          , ::boost::function_types::non_const
+        >
+#else
+      : ::boost::mpl::eval_if<
+            typename has_member_function_push<
+                T
+              , typename T::handle_type
+              , ::boost::mpl::vector1<typename T::const_reference>
+              , ::boost::function_types::non_const
+            >::type
+          , has_member_function_merge<
+                T
+              , void
+              , ::boost::mpl::vector1<T const&>
+              , ::boost::function_types::non_const
+            >
+          , ::boost::mpl::false_
+        >
+#endif
+    {
+    };
+
+    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_and_merge<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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,48 @@
+// 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/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>
+#include <boost/detail/metafunction/has_rvrs_container_typedefs.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 is_random_access_container_impl
+      : ::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> >
+        >
+    {
+    };
+
+    template <typename T>
+    struct is_random_access_container
+      : ::boost::mpl::if_<
+            has_reversible_container_typedefs<T>
+          , is_random_access_container_impl<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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,59 @@
+// 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/and.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/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::and_<
+            typename has_member_function_rbegin<
+                T
+              , typename T::const_reverse_iterator
+              , ::boost::mpl::vector0<>
+              , ::boost::function_types::const_qualified
+            >::type
+          , typename has_member_function_rend<
+                T
+              , typename T::const_reverse_iterator
+              , ::boost::mpl::vector0<>
+              , ::boost::function_types::const_qualified
+            >::type
+        >
+    {
+    };
+
+    template <typename T>
+    struct is_reversible_container
+      : ::boost::mpl::eval_if<
+            has_reversible_container_typedefs<T>
+          , ::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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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/boost/graph/adjacency_list.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/graph/adjacency_list.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,312 @@
+//=======================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2010 Thomas Claveirole
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole
+//
+// 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_GRAPH_ADJACENCY_LIST_HPP
+#define BOOST_GRAPH_ADJACENCY_LIST_HPP
+
+
+#include <boost/config.hpp>
+#include <boost/scoped_ptr.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/graph_mutability_traits.hpp>
+#include <boost/graph/graph_selectors.hpp>
+#include <boost/property_map/property_map.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/graph/detail/edge.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/graph/properties.hpp>
+#include <boost/graph/named_graph.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/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+
+namespace boost {
+
+  template <typename StorageSelector>
+  struct parallel_edge_traits
+  {
+    typedef typename mpl::if_<is_unique_associative_selector<StorageSelector>,
+      disallow_parallel_edge_tag,allow_parallel_edge_tag
+    >::type type;
+  };
+
+  //===========================================================================
+  // The adjacency_list_traits class, which provides a way to access
+  // some of the associated types of an adjacency_list type without
+  // having to first create the adjacency_list type. This is useful
+  // when trying to create interior vertex or edge properties who's
+  // value type is a vertex or edge descriptor.
+
+  template <class OutEdgeListS = vecS,
+            class VertexListS = vecS,
+            class DirectedS = directedS,
+            class EdgeListS = listS>
+  struct adjacency_list_traits
+  {
+    typedef typename mpl::and_<
+        is_random_access_selector<VertexListS>
+      , mpl::not_<is_associative_selector<VertexListS> >
+    >::type is_rand_access;
+    typedef typename DirectedS::is_bidir_t is_bidir;
+    typedef typename DirectedS::is_directed_t is_directed;
+
+    typedef typename mpl::if_<is_bidir,
+      bidirectional_tag,
+      typename mpl::if_<is_directed,
+        directed_tag, undirected_tag
+      >::type
+    >::type directed_category;
+
+    typedef typename parallel_edge_traits<OutEdgeListS>::type
+      edge_parallel_category;
+
+    typedef std::size_t vertices_size_type;
+    typedef void* vertex_ptr;
+    typedef typename mpl::if_<is_rand_access,
+      vertices_size_type, vertex_ptr>::type vertex_descriptor;
+    typedef detail::edge_desc_impl<directed_category, vertex_descriptor>
+      edge_descriptor;
+
+  private:
+    // Logic to figure out the edges_size_type
+    struct dummy {};
+    typedef typename container_gen<EdgeListS, dummy>::type EdgeContainer;
+    typedef typename DirectedS::is_bidir_t BidirectionalT;
+    typedef typename DirectedS::is_directed_t DirectedT;
+    typedef typename mpl::and_<DirectedT,
+      typename mpl::not_<BidirectionalT>::type >::type on_edge_storage;
+  public:
+    typedef typename mpl::if_<on_edge_storage,
+       std::size_t, typename EdgeContainer::size_type
+    >::type edges_size_type;
+
+  };
+
+} // namespace boost
+
+#include <boost/graph/detail/adjacency_list.hpp>
+
+namespace boost {
+
+  //===========================================================================
+  // The adjacency_list class.
+  //
+
+  template <class OutEdgeListS = vecS, // a Sequence or an AssociativeContainer
+            class VertexListS = vecS, // a Sequence or a RandomAccessContainer
+            class DirectedS = directedS,
+            class VertexProperty = no_property,
+            class EdgeProperty = no_property,
+            class GraphProperty = no_property,
+            class EdgeListS = listS>
+  class adjacency_list
+    : public detail::adj_list_gen<
+      adjacency_list<OutEdgeListS,VertexListS,DirectedS,
+                     VertexProperty,EdgeProperty,GraphProperty,EdgeListS>,
+      VertexListS, OutEdgeListS, DirectedS,
+      VertexProperty, EdgeProperty,
+      GraphProperty, EdgeListS>::type,
+      // Support for named vertices
+      public graph::maybe_named_graph<
+        adjacency_list<OutEdgeListS,VertexListS,DirectedS,
+                       VertexProperty,EdgeProperty,GraphProperty,EdgeListS>,
+        typename adjacency_list_traits<OutEdgeListS, VertexListS, DirectedS,
+                                       EdgeListS>::vertex_descriptor,
+        VertexProperty>
+  {
+      public:
+    typedef GraphProperty graph_property_type;
+    typedef typename lookup_one_property<GraphProperty, graph_bundle_t>::type graph_bundled;
+
+    typedef VertexProperty vertex_property_type;
+    typedef typename lookup_one_property<VertexProperty, vertex_bundle_t>::type vertex_bundled;
+
+    typedef EdgeProperty edge_property_type;
+    typedef typename lookup_one_property<EdgeProperty, edge_bundle_t>::type edge_bundled;
+
+  private:
+    typedef adjacency_list self;
+    typedef typename detail::adj_list_gen<
+      self, VertexListS, OutEdgeListS, DirectedS,
+      vertex_property_type, edge_property_type, GraphProperty, EdgeListS
+    >::type Base;
+
+  public:
+    typedef typename Base::stored_vertex stored_vertex;
+    typedef typename Base::vertices_size_type vertices_size_type;
+    typedef typename Base::edges_size_type edges_size_type;
+    typedef typename Base::degree_size_type degree_size_type;
+    typedef typename Base::vertex_descriptor vertex_descriptor;
+    typedef typename Base::edge_descriptor edge_descriptor;
+    typedef OutEdgeListS out_edge_list_selector;
+    typedef VertexListS vertex_list_selector;
+    typedef DirectedS directed_selector;
+    typedef EdgeListS edge_list_selector;
+
+
+    adjacency_list(const GraphProperty& p = GraphProperty())
+      : m_property(new graph_property_type(p))
+    { }
+
+    adjacency_list(const adjacency_list& x)
+      : Base(x), m_property(new graph_property_type(*x.m_property))
+    { }
+
+    adjacency_list& operator=(const adjacency_list& x) {
+      // TBD: probably should give the strong guarantee
+      if (&x != this) {
+        Base::operator=(x);
+
+        // Copy/swap the ptr since we can't just assign it...
+        property_ptr p(new graph_property_type(*x.m_property));
+        m_property.swap(p);
+      }
+      return *this;
+    }
+
+    // Required by Mutable Graph
+    adjacency_list(vertices_size_type num_vertices,
+                          const GraphProperty& p = GraphProperty())
+      : Base(num_vertices), m_property(new graph_property_type(p))
+    { }
+
+#if !defined(BOOST_MSVC) || BOOST_MSVC >= 1300
+    // Required by Iterator Constructible Graph
+    template <class EdgeIterator>
+    adjacency_list(EdgeIterator first, EdgeIterator last,
+                          vertices_size_type n,
+                          edges_size_type = 0,
+                          const GraphProperty& p = GraphProperty())
+      : Base(n, first, last), m_property(new graph_property_type(p))
+    { }
+
+    template <class EdgeIterator, class EdgePropertyIterator>
+    adjacency_list(EdgeIterator first, EdgeIterator last,
+                          EdgePropertyIterator ep_iter,
+                          vertices_size_type n,
+                          edges_size_type = 0,
+                          const GraphProperty& p = GraphProperty())
+      : Base(n, first, last, ep_iter), m_property(new graph_property_type(p))
+    { }
+#endif
+
+    void swap(adjacency_list& x) {
+      // Is there a more efficient way to do this?
+      adjacency_list tmp(x);
+      x = *this;
+      *this = tmp;
+    }
+
+    void clear()
+    {
+      this->clearing_graph();
+      Base::clear();
+    }
+
+#ifndef BOOST_GRAPH_NO_BUNDLED_PROPERTIES
+    // Directly access a vertex or edge bundle
+    vertex_bundled& operator[](vertex_descriptor v)
+    { return get(vertex_bundle, *this)[v]; }
+
+    const vertex_bundled& operator[](vertex_descriptor v) const
+    { return get(vertex_bundle, *this)[v]; }
+
+    edge_bundled& operator[](edge_descriptor e)
+    { return get(edge_bundle, *this)[e]; }
+
+    const edge_bundled& operator[](edge_descriptor e) const
+    { return get(edge_bundle, *this)[e]; }
+
+    graph_bundled& operator[](graph_bundle_t)
+    { return get_property(*this); }
+
+    graph_bundled const& operator[](graph_bundle_t) const
+    { return get_property(*this); }
+#endif
+
+    //  protected:  (would be protected if friends were more portable)
+    typedef scoped_ptr<graph_property_type> property_ptr;
+    property_ptr  m_property;
+  };
+
+#define ADJLIST_PARAMS \
+    typename OEL, typename VL, typename D, typename VP, typename EP, \
+    typename GP, typename EL
+#define ADJLIST adjacency_list<OEL,VL,D,VP,EP,GP,EL>
+
+  template<ADJLIST_PARAMS, typename Tag, typename Value>
+  inline void set_property(ADJLIST& g, Tag tag, Value const& value) {
+    get_property_value(*g.m_property, tag) = value;
+  }
+
+  template<ADJLIST_PARAMS, typename Tag>
+  inline typename graph_property<ADJLIST, Tag>::type&
+  get_property(ADJLIST& g, Tag tag) {
+    return get_property_value(*g.m_property, tag);
+  }
+
+  template<ADJLIST_PARAMS, typename Tag>
+  inline typename graph_property<ADJLIST, Tag>::type const&
+  get_property(ADJLIST const& g, Tag tag) {
+    return get_property_value(*g.m_property, tag);
+  }
+
+  // dwa 09/25/00 - needed to be more explicit so reverse_graph would work.
+  template <class Directed, class Vertex,
+      class OutEdgeListS,
+      class VertexListS,
+      class DirectedS,
+      class VertexProperty,
+      class EdgeProperty,
+      class GraphProperty, class EdgeListS>
+  inline Vertex
+  source(const detail::edge_base<Directed,Vertex>& e,
+         const adjacency_list<OutEdgeListS, VertexListS, DirectedS,
+                 VertexProperty, EdgeProperty, GraphProperty, EdgeListS>&)
+  {
+    return e.m_source;
+  }
+
+  template <class Directed, class Vertex, class OutEdgeListS,
+      class VertexListS, class DirectedS, class VertexProperty,
+      class EdgeProperty, class GraphProperty, class EdgeListS>
+  inline Vertex
+  target(const detail::edge_base<Directed,Vertex>& e,
+         const adjacency_list<OutEdgeListS, VertexListS, DirectedS,
+              VertexProperty, EdgeProperty, GraphProperty, EdgeListS>&)
+  {
+    return e.m_target;
+  }
+
+// Mutability Traits
+template <ADJLIST_PARAMS>
+struct graph_mutability_traits<ADJLIST> {
+    typedef mutable_property_graph_tag category;
+};
+
+// Can't remove vertices from adjacency lists with VL==vecS
+template <typename OEL, typename D, typename VP, typename EP, typename GP, typename EL>
+struct graph_mutability_traits< adjacency_list<OEL,vecS,D,VP,EP,GP,EL> > {
+    typedef add_only_property_graph_tag category;
+};
+#undef ADJLIST_PARAMS
+#undef ADJLIST
+
+
+} // namespace boost
+
+
+#endif // BOOST_GRAPH_ADJACENCY_LIST_HPP
Added: sandbox/container_gen/boost/graph/detail/adjacency_list.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/graph/detail/adjacency_list.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,2794 @@
+// -*- c++ -*-
+//=======================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Copyright 2010 Thomas Claveirole
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Thomas Claveirole
+//
+// 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_GRAPH_DETAIL_ADJACENCY_LIST_HPP
+#define BOOST_GRAPH_DETAIL_ADJACENCY_LIST_HPP
+
+#include <map> // for vertex_map in copy_impl
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/operators.hpp>
+#include <boost/property_map/property_map.hpp>
+#include <boost/range/irange.hpp>
+#include <boost/graph/graph_traits.hpp>
+#include <memory>
+#include <algorithm>
+#include <boost/limits.hpp>
+
+#include <boost/iterator/iterator_adaptor.hpp>
+
+#include <boost/container_gen/is_random_access_selector.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/graph/graph_concepts.hpp>
+#include <boost/pending/container_traits.hpp>
+#include <boost/graph/detail/adj_list_edge_iterator.hpp>
+#include <boost/graph/properties.hpp>
+#include <boost/pending/property.hpp>
+#include <boost/graph/adjacency_iterator.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/assert.hpp>
+
+/*
+  Outline for this file:
+
+  out_edge_iterator and in_edge_iterator implementation
+  edge_iterator for undirected graph
+  stored edge types (these object live in the out-edge/in-edge lists)
+  directed edges helper class
+  directed graph helper class
+  undirected graph helper class
+  bidirectional graph helper class
+  bidirectional graph helper class (without edge properties)
+  bidirectional graph helper class (with edge properties)
+  adjacency_list helper class
+  adj_list_impl class
+  vec_adj_list_impl class
+  adj_list_gen class
+  vertex property map
+  edge property map
+
+
+  Note: it would be nice to merge some of the undirected and
+  bidirectional code... it is awful similar.
+ */
+
+
+namespace boost {
+
+  namespace detail {
+
+    template <typename DirectedS>
+    struct directed_category_traits {
+      typedef directed_tag directed_category;
+    };
+
+    template <>
+    struct directed_category_traits<directedS> {
+      typedef directed_tag directed_category;
+    };
+    template <>
+    struct directed_category_traits<undirectedS> {
+      typedef undirected_tag directed_category;
+    };
+    template <>
+    struct directed_category_traits<bidirectionalS> {
+      typedef bidirectional_tag directed_category;
+    };
+
+    template <class Vertex>
+    struct target_is {
+      target_is(const Vertex& v) : m_target(v) { }
+      template <class StoredEdge>
+      bool operator()(const StoredEdge& e) const {
+        return e.get_target() == m_target;
+      }
+      Vertex m_target;
+    };
+
+    // O(E/V)
+    template <class EdgeList, class vertex_descriptor>
+    void erase_from_incidence_list(EdgeList& el, vertex_descriptor v,
+                                   allow_parallel_edge_tag)
+    {
+      boost::graph_detail::erase_if(el, detail::target_is<vertex_descriptor>(v));
+    }
+    // O(log(E/V))
+    template <class EdgeList, class vertex_descriptor>
+    void erase_from_incidence_list(EdgeList& el, vertex_descriptor v,
+                                   disallow_parallel_edge_tag)
+    {
+      typedef typename EdgeList::value_type StoredEdge;
+      el.erase(StoredEdge(v));
+    }
+
+    //=========================================================================
+    // Out-Edge and In-Edge Iterator Implementation
+
+    template <class BaseIter, class VertexDescriptor, class EdgeDescriptor, class Difference>
+    struct out_edge_iter
+      : iterator_adaptor<
+            out_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
+          , BaseIter
+          , EdgeDescriptor
+          , use_default
+          , EdgeDescriptor
+          , Difference
+        >
+    {
+      typedef iterator_adaptor<
+          out_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
+        , BaseIter
+        , EdgeDescriptor
+        , use_default
+        , EdgeDescriptor
+        , Difference
+      > super_t;
+
+      inline out_edge_iter() { }
+        inline out_edge_iter(const BaseIter& i, const VertexDescriptor& src)
+          : super_t(i), m_src(src) { }
+
+      inline EdgeDescriptor
+      dereference() const
+      {
+        return EdgeDescriptor(m_src, (*this->base()).get_target(),
+                              &(*this->base()).get_property());
+      }
+      VertexDescriptor m_src;
+    };
+
+    template <class BaseIter, class VertexDescriptor, class EdgeDescriptor, class Difference>
+    struct in_edge_iter
+      : iterator_adaptor<
+            in_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
+          , BaseIter
+          , EdgeDescriptor
+          , use_default
+          , EdgeDescriptor
+          , Difference
+        >
+    {
+      typedef iterator_adaptor<
+          in_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
+        , BaseIter
+        , EdgeDescriptor
+        , use_default
+        , EdgeDescriptor
+        , Difference
+      > super_t;
+
+      inline in_edge_iter() { }
+      inline in_edge_iter(const BaseIter& i, const VertexDescriptor& src)
+        : super_t(i), m_src(src) { }
+
+      inline EdgeDescriptor
+      dereference() const
+      {
+        return EdgeDescriptor((*this->base()).get_target(), m_src,
+                              &this->base()->get_property());
+      }
+      VertexDescriptor m_src;
+    };
+
+    //=========================================================================
+    // Undirected Edge Iterator Implementation
+
+    template <class EdgeIter, class EdgeDescriptor, class Difference>
+    struct undirected_edge_iter
+      : iterator_adaptor<
+            undirected_edge_iter<EdgeIter, EdgeDescriptor, Difference>
+          , EdgeIter
+          , EdgeDescriptor
+          , use_default
+          , EdgeDescriptor
+          , Difference
+        >
+    {
+      typedef iterator_adaptor<
+          undirected_edge_iter<EdgeIter, EdgeDescriptor, Difference>
+        , EdgeIter
+        , EdgeDescriptor
+        , use_default
+        , EdgeDescriptor
+        , Difference
+      > super_t;
+
+      undirected_edge_iter() {}
+
+      explicit undirected_edge_iter(EdgeIter i)
+          : super_t(i) {}
+
+      inline EdgeDescriptor
+      dereference() const {
+        return EdgeDescriptor(
+            (*this->base()).m_source
+          , (*this->base()).m_target
+          , &this->base()->get_property());
+      }
+    };
+
+    //=========================================================================
+    // Edge Storage Types (stored in the out-edge/in-edge lists)
+
+    template <class Vertex>
+    class stored_edge
+      : public boost::equality_comparable1< stored_edge<Vertex>,
+        boost::less_than_comparable1< stored_edge<Vertex> > >
+    {
+    public:
+      typedef no_property property_type;
+      inline stored_edge() { }
+      inline stored_edge(Vertex target, const no_property& = no_property())
+        : m_target(target) { }
+      // Need to write this explicitly so stored_edge_property can
+      // invoke Base::operator= (at least, for SGI MIPSPro compiler)
+      inline stored_edge& operator=(const stored_edge& x) {
+        m_target = x.m_target;
+        return *this;
+      }
+      inline Vertex& get_target() const { return m_target; }
+      inline const no_property& get_property() const { return s_prop; }
+      inline bool operator==(const stored_edge& x) const
+        { return m_target == x.get_target(); }
+      inline bool operator<(const stored_edge& x) const
+        { return m_target < x.get_target(); }
+      //protected: need to add hash<> as a friend
+      static no_property s_prop;
+      // Sometimes target not used as key in the set, and in that case
+      // it is ok to change the target.
+      mutable Vertex m_target;
+    };
+    template <class Vertex>
+    no_property stored_edge<Vertex>::s_prop;
+
+    template <class Vertex, class Property>
+    class stored_edge_property : public stored_edge<Vertex> {
+      typedef stored_edge_property self;
+      typedef stored_edge<Vertex> Base;
+    public:
+      typedef Property property_type;
+      inline stored_edge_property() { }
+      inline stored_edge_property(Vertex target,
+                                  const Property& p = Property())
+        : stored_edge<Vertex>(target), m_property(new Property(p)) { }
+      stored_edge_property(const self& x)
+        : Base(x), m_property(const_cast<self&>(x).m_property) { }
+      self& operator=(const self& x) {
+        Base::operator=(x);
+        m_property = const_cast<self&>(x).m_property;
+        return *this;
+      }
+      inline Property& get_property() { return *m_property; }
+      inline const Property& get_property() const { return *m_property; }
+    protected:
+      // Holding the property by-value causes edge-descriptor
+      // invalidation for add_edge() with EdgeList=vecS. Instead we
+      // hold a pointer to the property. std::auto_ptr is not
+      // a perfect fit for the job, but it is darn close.
+      std::auto_ptr<Property> m_property;
+    };
+
+
+    template <class Vertex, class Iter, class Property>
+    class stored_edge_iter
+      : public stored_edge<Vertex>
+    {
+    public:
+      typedef Property property_type;
+      inline stored_edge_iter() { }
+      inline stored_edge_iter(Vertex v)
+        : stored_edge<Vertex>(v) { }
+      inline stored_edge_iter(Vertex v, Iter i, void* = 0)
+        : stored_edge<Vertex>(v), m_iter(i) { }
+      inline Property& get_property() { return m_iter->get_property(); }
+      inline const Property& get_property() const {
+        return m_iter->get_property();
+      }
+      inline Iter get_iter() const { return m_iter; }
+    protected:
+      Iter m_iter;
+    };
+
+    // For when the EdgeList is a std::vector.
+    // Want to make the iterator stable, so use an offset
+    // instead of an iterator into a std::vector
+    template <class Vertex, class EdgeVec, class Property>
+    class stored_ra_edge_iter
+      : public stored_edge<Vertex>
+    {
+      typedef typename EdgeVec::iterator Iter;
+    public:
+      typedef Property property_type;
+      inline stored_ra_edge_iter() { }
+      inline stored_ra_edge_iter(Vertex v, Iter i = Iter(),
+                                 EdgeVec* edge_vec = 0)
+        : stored_edge<Vertex>(v), m_i(i - edge_vec->begin()), m_vec(edge_vec){ }
+      inline Property& get_property() { return (*m_vec)[m_i].get_property(); }
+      inline const Property& get_property() const {
+        return (*m_vec)[m_i].get_property();
+      }
+      inline Iter get_iter() const { return m_vec->begin() + m_i; }
+    protected:
+      std::size_t m_i;
+      EdgeVec* m_vec;
+    };
+
+  } // namespace detail
+
+  template <class Tag, class Vertex, class Property>
+  const typename property_value<Property,Tag>::type&
+  get(Tag property_tag,
+      const detail::stored_edge_property<Vertex, Property>& e)
+  {
+    return get_property_value(e.get_property(), property_tag);
+  }
+
+  template <class Tag, class Vertex, class Iter, class Property>
+  const typename property_value<Property,Tag>::type&
+  get(Tag property_tag,
+      const detail::stored_edge_iter<Vertex, Iter, Property>& e)
+  {
+    return get_property_value(e.get_property(), property_tag);
+  }
+
+  template <class Tag, class Vertex, class EdgeVec, class Property>
+  const typename property_value<Property,Tag>::type&
+  get(Tag property_tag,
+      const detail::stored_ra_edge_iter<Vertex, EdgeVec, Property>& e)
+  {
+    return get_property_value(e.get_property(), property_tag);
+  }
+
+    //=========================================================================
+    // Directed Edges Helper Class
+
+    namespace detail {
+
+      // O(E/V)
+      template <class edge_descriptor, class EdgeList, class StoredProperty>
+      inline void
+      remove_directed_edge_dispatch(edge_descriptor, EdgeList& el,
+                                    StoredProperty& p)
+      {
+        for (typename EdgeList::iterator i = el.begin();
+             i != el.end(); ++i)
+          if (&(*i).get_property() == &p) {
+            el.erase(i);
+            return;
+          }
+      }
+
+      template <class incidence_iterator, class EdgeList, class Predicate>
+      inline void
+      remove_directed_edge_if_dispatch(incidence_iterator first,
+                                       incidence_iterator last,
+                                       EdgeList& el, Predicate pred,
+                                       boost::allow_parallel_edge_tag)
+      {
+        // remove_if
+        while (first != last && !pred(*first))
+          ++first;
+        incidence_iterator i = first;
+        if (first != last)
+          for (++i; i != last; ++i)
+            if (!pred(*i)) {
+              *first.base() = *i.base();
+              ++first;
+            }
+        el.erase(first.base(), el.end());
+      }
+      template <class incidence_iterator, class EdgeList, class Predicate>
+      inline void
+      remove_directed_edge_if_dispatch(incidence_iterator first,
+                                       incidence_iterator last,
+                                       EdgeList& el,
+                                       Predicate pred,
+                                       boost::disallow_parallel_edge_tag)
+      {
+        for (incidence_iterator next = first;
+             first != last; first = next) {
+          ++next;
+          if (pred(*first))
+            el.erase( first.base() );
+        }
+      }
+
+      template <class PropT, class Graph, class incidence_iterator,
+                class EdgeList, class Predicate>
+      inline void
+      undirected_remove_out_edge_if_dispatch(Graph& g,
+                                             incidence_iterator first,
+                                             incidence_iterator last,
+                                             EdgeList& el, Predicate pred,
+                                             boost::allow_parallel_edge_tag)
+      {
+        typedef typename Graph::global_edgelist_selector EdgeListS;
+        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
+
+        // remove_if
+        while (first != last && !pred(*first))
+          ++first;
+        incidence_iterator i = first;
+        bool self_loop_removed = false;
+        if (first != last)
+          for (; i != last; ++i) {
+            if (self_loop_removed) {
+              /* With self loops, the descriptor will show up
+               * twice. The first time it will be removed, and now it
+               * will be skipped.
+               */
+              self_loop_removed = false;
+            }
+            else if (!pred(*i)) {
+              *first.base() = *i.base();
+              ++first;
+            } else {
+              if (source(*i, g) == target(*i, g)) self_loop_removed = true;
+              else {
+                // Remove the edge from the target
+                detail::remove_directed_edge_dispatch
+                  (*i,
+                   g.out_edge_list(target(*i, g)),
+                   *(PropT*)(*i).get_property());
+              }
+
+              // Erase the edge property
+              g.m_edges.erase( (*i.base()).get_iter() );
+            }
+          }
+        el.erase(first.base(), el.end());
+      }
+      template <class PropT, class Graph, class incidence_iterator,
+                class EdgeList, class Predicate>
+      inline void
+      undirected_remove_out_edge_if_dispatch(Graph& g,
+                                             incidence_iterator first,
+                                             incidence_iterator last,
+                                             EdgeList& el,
+                                             Predicate pred,
+                                             boost::disallow_parallel_edge_tag)
+      {
+        typedef typename Graph::global_edgelist_selector EdgeListS;
+        BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+        for (incidence_iterator next = first;
+             first != last; first = next) {
+          ++next;
+          if (pred(*first)) {
+            if (source(*first, g) != target(*first, g)) {
+              // Remove the edge from the target
+              detail::remove_directed_edge_dispatch
+                (*first,
+                 g.out_edge_list(target(*first, g)),
+                 *(PropT*)(*first).get_property());
+            }
+
+            // Erase the edge property
+            g.m_edges.erase( (*first.base()).get_iter() );
+
+            // Erase the edge in the source
+            el.erase( first.base() );
+          }
+        }
+      }
+
+      // O(E/V)
+      template <class edge_descriptor, class EdgeList, class StoredProperty>
+      inline void
+      remove_directed_edge_dispatch(edge_descriptor e, EdgeList& el,
+                                    no_property&)
+      {
+        for (typename EdgeList::iterator i = el.begin();
+             i != el.end(); ++i)
+          if ((*i).get_target() == e.m_target) {
+            el.erase(i);
+            return;
+          }
+      }
+
+    } // namespace detail
+
+    template <class Config>
+    struct directed_edges_helper {
+
+      // Placement of these overloaded remove_edge() functions
+      // inside the class avoids a VC++ bug.
+
+      // O(E/V)
+      inline void
+      remove_edge(typename Config::edge_descriptor e)
+      {
+        typedef typename Config::graph_type graph_type;
+        graph_type& g = static_cast<graph_type&>(*this);
+        typename Config::OutEdgeList& el = g.out_edge_list(source(e, g));
+        typedef typename Config::OutEdgeList::value_type::property_type PType;
+        detail::remove_directed_edge_dispatch(e, el,
+                                              *(PType*)e.get_property());
+      }
+
+      // O(1)
+      inline void
+      remove_edge(typename Config::out_edge_iterator iter)
+      {
+        typedef typename Config::graph_type graph_type;
+        graph_type& g = static_cast<graph_type&>(*this);
+        typename Config::edge_descriptor e = *iter;
+        typename Config::OutEdgeList& el = g.out_edge_list(source(e, g));
+        el.erase(iter.base());
+      }
+
+    };
+
+    // O(1)
+    template <class Config>
+    inline std::pair<typename Config::edge_iterator,
+                     typename Config::edge_iterator>
+    edges(const directed_edges_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::edge_iterator edge_iterator;
+      const graph_type& cg = static_cast<const graph_type&>(g_);
+      graph_type& g = const_cast<graph_type&>(cg);
+      return std::make_pair( edge_iterator(g.vertex_set().begin(),
+                                           g.vertex_set().begin(),
+                                           g.vertex_set().end(), g),
+                             edge_iterator(g.vertex_set().begin(),
+                                           g.vertex_set().end(),
+                                           g.vertex_set().end(), g) );
+    }
+
+    //=========================================================================
+    // Directed Graph Helper Class
+
+    struct adj_list_dir_traversal_tag :
+      public virtual vertex_list_graph_tag,
+      public virtual incidence_graph_tag,
+      public virtual adjacency_graph_tag,
+      public virtual edge_list_graph_tag { };
+
+    template <class Config>
+    struct directed_graph_helper
+      : public directed_edges_helper<Config> {
+      typedef typename Config::edge_descriptor edge_descriptor;
+      typedef adj_list_dir_traversal_tag traversal_category;
+    };
+
+    // O(E/V)
+    template <class Config>
+    inline void
+    remove_edge(typename Config::vertex_descriptor u,
+                typename Config::vertex_descriptor v,
+                directed_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::edge_parallel_category Cat;
+      graph_type& g = static_cast<graph_type&>(g_);
+      detail::erase_from_incidence_list(g.out_edge_list(u), v, Cat());
+    }
+
+    template <class Config, class Predicate>
+    inline void
+    remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred,
+                       directed_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typename Config::out_edge_iterator first, last;
+      boost::tie(first, last) = out_edges(u, g);
+      typedef typename Config::edge_parallel_category edge_parallel_category;
+      detail::remove_directed_edge_if_dispatch
+        (first, last, g.out_edge_list(u), pred, edge_parallel_category());
+    }
+
+    template <class Config, class Predicate>
+    inline void
+    remove_edge_if(Predicate pred, directed_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      graph_type& g = static_cast<graph_type&>(g_);
+
+      typename Config::vertex_iterator vi, vi_end;
+      for (boost::tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi)
+        remove_out_edge_if(*vi, pred, g);
+    }
+
+    template <class EdgeOrIter, class Config>
+    inline void
+    remove_edge(EdgeOrIter e_or_iter, directed_graph_helper<Config>& g_)
+    {
+      g_.remove_edge(e_or_iter);
+    }
+
+    // O(V + E) for allow_parallel_edges
+    // O(V * log(E/V)) for disallow_parallel_edges
+    template <class Config>
+    inline void
+    clear_vertex(typename Config::vertex_descriptor u,
+                 directed_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::edge_parallel_category Cat;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typename Config::vertex_iterator vi, viend;
+      for (boost::tie(vi, viend) = vertices(g); vi != viend; ++vi)
+        detail::erase_from_incidence_list(g.out_edge_list(*vi), u, Cat());
+      g.out_edge_list(u).clear();
+      // clear() should be a req of Sequence and AssociativeContainer,
+      // or maybe just Container
+    }
+
+    template <class Config>
+    inline void
+    clear_out_edges(typename Config::vertex_descriptor u,
+                    directed_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::edge_parallel_category Cat;
+      graph_type& g = static_cast<graph_type&>(g_);
+      g.out_edge_list(u).clear();
+      // clear() should be a req of Sequence and AssociativeContainer,
+      // or maybe just Container
+    }
+
+    // O(V), could do better...
+    template <class Config>
+    inline typename Config::edges_size_type
+    num_edges(const directed_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      const graph_type& g = static_cast<const graph_type&>(g_);
+      typename Config::edges_size_type num_e = 0;
+      typename Config::vertex_iterator vi, vi_end;
+      for (boost::tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi)
+        num_e += out_degree(*vi, g);
+      return num_e;
+    }
+    // O(1) for allow_parallel_edge_tag
+    // O(log(E/V)) for disallow_parallel_edge_tag
+    template <class Config>
+    inline std::pair<typename directed_graph_helper<Config>::edge_descriptor, bool>
+    add_edge(typename Config::vertex_descriptor u,
+             typename Config::vertex_descriptor v,
+             const typename Config::edge_property_type& p,
+             directed_graph_helper<Config>& g_)
+    {
+      typedef typename Config::edge_descriptor edge_descriptor;
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::StoredEdge StoredEdge;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typename Config::OutEdgeList::iterator i;
+      bool inserted;
+      boost::tie(i, inserted) = boost::graph_detail::push(g.out_edge_list(u),
+                                            StoredEdge(v, p));
+      return std::make_pair(edge_descriptor(u, v, &(*i).get_property()),
+                            inserted);
+    }
+    // Did not use default argument here because that
+    // causes Visual C++ to get confused.
+    template <class Config>
+    inline std::pair<typename Config::edge_descriptor, bool>
+    add_edge(typename Config::vertex_descriptor u,
+             typename Config::vertex_descriptor v,
+             directed_graph_helper<Config>& g_)
+    {
+      typename Config::edge_property_type p;
+      return add_edge(u, v, p, g_);
+    }
+    //=========================================================================
+    // Undirected Graph Helper Class
+
+    template <class Config>
+    struct undirected_graph_helper;
+
+    struct undir_adj_list_traversal_tag :
+      public virtual vertex_list_graph_tag,
+      public virtual incidence_graph_tag,
+      public virtual adjacency_graph_tag,
+      public virtual edge_list_graph_tag,
+      public virtual bidirectional_graph_tag { };
+
+    namespace detail {
+
+      // using class with specialization for dispatch is a VC++ workaround.
+      template <class StoredProperty>
+      struct remove_undirected_edge_dispatch {
+
+        // O(E/V)
+        template <class edge_descriptor, class Config>
+        static void
+        apply(edge_descriptor e,
+              undirected_graph_helper<Config>& g_,
+              StoredProperty& p)
+        {
+          typedef typename Config::global_edgelist_selector EdgeListS;
+          BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+          typedef typename Config::graph_type graph_type;
+          graph_type& g = static_cast<graph_type&>(g_);
+
+          typename Config::OutEdgeList& out_el = g.out_edge_list(source(e, g));
+          typename Config::OutEdgeList::iterator out_i = out_el.begin();
+          typename Config::EdgeIter edge_iter_to_erase;
+          for (; out_i != out_el.end(); ++out_i)
+            if (&(*out_i).get_property() == &p) {
+              edge_iter_to_erase = (*out_i).get_iter();
+              out_el.erase(out_i);
+              break;
+            }
+          typename Config::OutEdgeList& in_el = g.out_edge_list(target(e, g));
+          typename Config::OutEdgeList::iterator in_i = in_el.begin();
+          for (; in_i != in_el.end(); ++in_i)
+            if (&(*in_i).get_property() == &p) {
+              in_el.erase(in_i);
+              break;
+            }
+          g.m_edges.erase(edge_iter_to_erase);
+        }
+      };
+
+      template <>
+      struct remove_undirected_edge_dispatch<no_property> {
+        // O(E/V)
+        template <class edge_descriptor, class Config>
+        static void
+        apply(edge_descriptor e,
+              undirected_graph_helper<Config>& g_,
+              no_property&)
+        {
+          typedef typename Config::global_edgelist_selector EdgeListS;
+          BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+          typedef typename Config::graph_type graph_type;
+          graph_type& g = static_cast<graph_type&>(g_);
+          no_property* p = (no_property*)e.get_property();
+          typename Config::OutEdgeList& out_el = g.out_edge_list(source(e, g));
+          typename Config::OutEdgeList::iterator out_i = out_el.begin();
+          typename Config::EdgeIter edge_iter_to_erase;
+          for (; out_i != out_el.end(); ++out_i)
+            if (&(*out_i).get_property() == p) {
+              edge_iter_to_erase = (*out_i).get_iter();
+              out_el.erase(out_i);
+              break;
+            }
+          typename Config::OutEdgeList& in_el = g.out_edge_list(target(e, g));
+          typename Config::OutEdgeList::iterator in_i = in_el.begin();
+          for (; in_i != in_el.end(); ++in_i)
+            if (&(*in_i).get_property() == p) {
+              in_el.erase(in_i);
+              break;
+            }
+          g.m_edges.erase(edge_iter_to_erase);
+        }
+      };
+
+      // O(E/V)
+      template <class Graph, class EdgeList, class Vertex>
+      inline void
+      remove_edge_and_property(Graph& g, EdgeList& el, Vertex v,
+                               boost::allow_parallel_edge_tag cat)
+      {
+        typedef typename Graph::global_edgelist_selector EdgeListS;
+        BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+        typedef typename EdgeList::value_type StoredEdge;
+        typename EdgeList::iterator i = el.begin(), end = el.end();
+        for (; i != end; ++i) {
+          if ((*i).get_target() == v) {
+            // NOTE: Wihtout this skip, this loop will double-delete properties
+            // of loop edges. This solution is based on the observation that
+            // the incidence edges of a vertex with a loop are adjacent in the
+            // out edge list. This *may* actually hold for multisets also.
+            bool skip = (boost::next(i) != end && i->get_iter() == boost::next(i)->get_iter());
+            g.m_edges.erase((*i).get_iter());
+            if (skip) ++i;
+          }
+        }
+        detail::erase_from_incidence_list(el, v, cat);
+      }
+      // O(log(E/V))
+      template <class Graph, class EdgeList, class Vertex>
+      inline void
+      remove_edge_and_property(Graph& g, EdgeList& el, Vertex v,
+                               boost::disallow_parallel_edge_tag)
+      {
+        typedef typename Graph::global_edgelist_selector EdgeListS;
+        BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+        typedef typename EdgeList::value_type StoredEdge;
+        typename EdgeList::iterator i = el.find(StoredEdge(v)), end = el.end();
+        BOOST_ASSERT ((i != end));
+        if (i != end) {
+          g.m_edges.erase((*i).get_iter());
+          el.erase(i);
+        }
+      }
+
+    } // namespace detail
+
+    template <class Vertex, class EdgeProperty>
+    struct list_edge // short name due to VC++ truncation and linker problems
+      : public boost::detail::edge_base<boost::undirected_tag, Vertex>
+    {
+      typedef EdgeProperty property_type;
+      typedef boost::detail::edge_base<boost::undirected_tag, Vertex> Base;
+      list_edge(Vertex u, Vertex v, const EdgeProperty& p = EdgeProperty())
+        : Base(u, v), m_property(p) { }
+      EdgeProperty& get_property() { return m_property; }
+      const EdgeProperty& get_property() const { return m_property; }
+      // the following methods should never be used, but are needed
+      // to make SGI MIPSpro C++ happy
+      list_edge() { }
+      bool operator==(const list_edge&) const { return false; }
+      bool operator<(const list_edge&) const { return false; }
+      EdgeProperty m_property;
+    };
+
+    template <class Config>
+    struct undirected_graph_helper {
+
+      typedef undir_adj_list_traversal_tag traversal_category;
+
+      // Placement of these overloaded remove_edge() functions
+      // inside the class avoids a VC++ bug.
+
+      // O(E/V)
+      inline void
+      remove_edge(typename Config::edge_descriptor e)
+      {
+        typedef typename Config::global_edgelist_selector EdgeListS;
+        BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+        typedef typename Config::OutEdgeList::value_type::property_type PType;
+        detail::remove_undirected_edge_dispatch<PType>::apply
+          (e, *this, *(PType*)e.get_property());
+      }
+      // O(E/V)
+      inline void
+      remove_edge(typename Config::out_edge_iterator iter)
+      {
+        this->remove_edge(*iter);
+      }
+    };
+
+    // Had to make these non-members to avoid accidental instantiation
+    // on SGI MIPSpro C++
+    template <class C>
+    inline typename C::InEdgeList&
+    in_edge_list(undirected_graph_helper<C>&,
+                 typename C::vertex_descriptor v)
+    {
+      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
+      return sv->m_out_edges;
+    }
+    template <class C>
+    inline const typename C::InEdgeList&
+    in_edge_list(const undirected_graph_helper<C>&,
+                 typename C::vertex_descriptor v) {
+      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
+      return sv->m_out_edges;
+    }
+
+    // O(E/V)
+    template <class EdgeOrIter, class Config>
+    inline void
+    remove_edge(EdgeOrIter e, undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      g_.remove_edge(e);
+    }
+
+    // O(E/V) or O(log(E/V))
+    template <class Config>
+    void
+    remove_edge(typename Config::vertex_descriptor u,
+                typename Config::vertex_descriptor v,
+                undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typedef typename Config::edge_parallel_category Cat;
+      detail::remove_edge_and_property(g, g.out_edge_list(u), v, Cat());
+      detail::erase_from_incidence_list(g.out_edge_list(v), u, Cat());
+    }
+
+    template <class Config, class Predicate>
+    void
+    remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred,
+                       undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::OutEdgeList::value_type::property_type PropT;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typename Config::out_edge_iterator first, last;
+      boost::tie(first, last) = out_edges(u, g);
+      typedef typename Config::edge_parallel_category Cat;
+      detail::undirected_remove_out_edge_if_dispatch<PropT>
+        (g, first, last, g.out_edge_list(u), pred, Cat());
+    }
+    template <class Config, class Predicate>
+    void
+    remove_in_edge_if(typename Config::vertex_descriptor u, Predicate pred,
+                      undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      remove_out_edge_if(u, pred, g_);
+    }
+
+    // O(E/V * E) or O(log(E/V) * E)
+    template <class Predicate, class Config>
+    void
+    remove_edge_if(Predicate pred, undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typename Config::edge_iterator ei, ei_end, next;
+      boost::tie(ei, ei_end) = edges(g);
+      for (next = ei; ei != ei_end; ei = next) {
+        ++next;
+        if (pred(*ei))
+          remove_edge(*ei, g);
+      }
+    }
+
+    // O(1)
+    template <class Config>
+    inline std::pair<typename Config::edge_iterator,
+                     typename Config::edge_iterator>
+    edges(const undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::edge_iterator edge_iterator;
+      const graph_type& cg = static_cast<const graph_type&>(g_);
+      graph_type& g = const_cast<graph_type&>(cg);
+      return std::make_pair( edge_iterator(g.m_edges.begin()),
+                             edge_iterator(g.m_edges.end()) );
+    }
+    // O(1)
+    template <class Config>
+    inline typename Config::edges_size_type
+    num_edges(const undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      const graph_type& g = static_cast<const graph_type&>(g_);
+      return g.m_edges.size();
+    }
+    // O(E/V * E/V)
+    template <class Config>
+    inline void
+    clear_vertex(typename Config::vertex_descriptor u,
+                 undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::edge_parallel_category Cat;
+      graph_type& g = static_cast<graph_type&>(g_);
+      while (true) {
+        typename Config::out_edge_iterator ei, ei_end;
+        boost::tie(ei, ei_end) = out_edges(u, g);
+        if (ei == ei_end) break;
+        remove_edge(*ei, g);
+      }
+    }
+    // O(1) for allow_parallel_edge_tag
+    // O(log(E/V)) for disallow_parallel_edge_tag
+    template <class Config>
+    inline std::pair<typename Config::edge_descriptor, bool>
+    add_edge(typename Config::vertex_descriptor u,
+             typename Config::vertex_descriptor v,
+             const typename Config::edge_property_type& p,
+             undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::StoredEdge StoredEdge;
+      typedef typename Config::edge_descriptor edge_descriptor;
+      typedef typename Config::graph_type graph_type;
+      graph_type& g = static_cast<graph_type&>(g_);
+
+      bool inserted;
+      typename Config::EdgeContainer::value_type e(u, v, p);
+      typename Config::EdgeContainer::iterator p_iter
+        = graph_detail::push(g.m_edges, e).first;
+
+      typename Config::OutEdgeList::iterator i;
+      boost::tie(i, inserted) = boost::graph_detail::push(g.out_edge_list(u),
+                                    StoredEdge(v, p_iter, &g.m_edges));
+      if (inserted) {
+        boost::graph_detail::push(g.out_edge_list(v), StoredEdge(u, p_iter, &g.m_edges));
+        return std::make_pair(edge_descriptor(u, v, &p_iter->get_property()),
+                              true);
+      } else {
+        g.m_edges.erase(p_iter);
+        return std::make_pair
+          (edge_descriptor(u, v, &i->get_iter()->get_property()), false);
+      }
+    }
+    template <class Config>
+    inline std::pair<typename Config::edge_descriptor, bool>
+    add_edge(typename Config::vertex_descriptor u,
+             typename Config::vertex_descriptor v,
+             undirected_graph_helper<Config>& g_)
+    {
+      typename Config::edge_property_type p;
+      return add_edge(u, v, p, g_);
+    }
+
+    // O(1)
+    template <class Config>
+    inline typename Config::degree_size_type
+    degree(typename Config::vertex_descriptor u,
+           const undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type Graph;
+      const Graph& g = static_cast<const Graph&>(g_);
+      return out_degree(u, g);
+    }
+
+    template <class Config>
+    inline std::pair<typename Config::in_edge_iterator,
+                     typename Config::in_edge_iterator>
+    in_edges(typename Config::vertex_descriptor u,
+             const undirected_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type Graph;
+      const Graph& cg = static_cast<const Graph&>(g_);
+      Graph& g = const_cast<Graph&>(cg);
+      typedef typename Config::in_edge_iterator in_edge_iterator;
+      return
+        std::make_pair(in_edge_iterator(g.out_edge_list(u).begin(), u),
+                       in_edge_iterator(g.out_edge_list(u).end(), u));
+    }
+
+    template <class Config>
+    inline typename Config::degree_size_type
+    in_degree(typename Config::vertex_descriptor u,
+              const undirected_graph_helper<Config>& g_)
+    { return degree(u, g_); }
+
+    //=========================================================================
+    // Bidirectional Graph Helper Class
+
+    struct bidir_adj_list_traversal_tag :
+      public virtual vertex_list_graph_tag,
+      public virtual incidence_graph_tag,
+      public virtual adjacency_graph_tag,
+      public virtual edge_list_graph_tag,
+      public virtual bidirectional_graph_tag { };
+
+    template <class Config>
+    struct bidirectional_graph_helper
+      : public directed_edges_helper<Config> {
+      typedef bidir_adj_list_traversal_tag traversal_category;
+    };
+
+    // Had to make these non-members to avoid accidental instantiation
+    // on SGI MIPSpro C++
+    template <class C>
+    inline typename C::InEdgeList&
+    in_edge_list(bidirectional_graph_helper<C>&,
+                 typename C::vertex_descriptor v)
+    {
+      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
+      return sv->m_in_edges;
+    }
+    template <class C>
+    inline const typename C::InEdgeList&
+    in_edge_list(const bidirectional_graph_helper<C>&,
+                 typename C::vertex_descriptor v) {
+      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
+      return sv->m_in_edges;
+    }
+
+    template <class Predicate, class Config>
+    inline void
+    remove_edge_if(Predicate pred, bidirectional_graph_helper<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typename Config::edge_iterator ei, ei_end, next;
+      boost::tie(ei, ei_end) = edges(g);
+      for (next = ei; ei != ei_end; ei = next) {
+        ++next;
+        if (pred(*ei))
+          remove_edge(*ei, g);
+      }
+    }
+
+    template <class Config>
+    inline std::pair<typename Config::in_edge_iterator,
+                     typename Config::in_edge_iterator>
+    in_edges(typename Config::vertex_descriptor u,
+             const bidirectional_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      const graph_type& cg = static_cast<const graph_type&>(g_);
+      graph_type& g = const_cast<graph_type&>(cg);
+      typedef typename Config::in_edge_iterator in_edge_iterator;
+      return
+        std::make_pair(in_edge_iterator(in_edge_list(g, u).begin(), u),
+                       in_edge_iterator(in_edge_list(g, u).end(), u));
+    }
+
+    // O(1)
+    template <class Config>
+    inline std::pair<typename Config::edge_iterator,
+                     typename Config::edge_iterator>
+    edges(const bidirectional_graph_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::edge_iterator edge_iterator;
+      const graph_type& cg = static_cast<const graph_type&>(g_);
+      graph_type& g = const_cast<graph_type&>(cg);
+      return std::make_pair( edge_iterator(g.m_edges.begin()),
+                             edge_iterator(g.m_edges.end()) );
+    }
+
+    //=========================================================================
+    // Bidirectional Graph Helper Class (with edge properties)
+
+
+    template <class Config>
+    struct bidirectional_graph_helper_with_property
+      : public bidirectional_graph_helper<Config>
+    {
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::out_edge_iterator out_edge_iterator;
+
+      std::pair<out_edge_iterator, out_edge_iterator>
+      get_parallel_edge_sublist(typename Config::edge_descriptor e,
+                                const graph_type& g,
+                                void*)
+      { return out_edges(source(e, g), g); }
+
+      std::pair<out_edge_iterator, out_edge_iterator>
+      get_parallel_edge_sublist(typename Config::edge_descriptor e,
+                                const graph_type& g,
+                                setS*)
+      { return edge_range(source(e, g), target(e, g), g); }
+
+      std::pair<out_edge_iterator, out_edge_iterator>
+      get_parallel_edge_sublist(typename Config::edge_descriptor e,
+                                const graph_type& g,
+                                multisetS*)
+      { return edge_range(source(e, g), target(e, g), g); }
+
+      std::pair<out_edge_iterator, out_edge_iterator>
+      get_parallel_edge_sublist(typename Config::edge_descriptor e,
+                                const graph_type& g,
+                                hash_setS*)
+      { return edge_range(source(e, g), target(e, g), g); }
+
+      // Placement of these overloaded remove_edge() functions
+      // inside the class avoids a VC++ bug.
+
+      // O(E/V) or O(log(E/V))
+      void
+      remove_edge(typename Config::edge_descriptor e)
+      {
+        typedef typename Config::global_edgelist_selector EdgeListS;
+        BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+        graph_type& g = static_cast<graph_type&>(*this);
+
+        typedef typename Config::edgelist_selector OutEdgeListS;
+
+        std::pair<out_edge_iterator, out_edge_iterator> rng =
+          get_parallel_edge_sublist(e, g, (OutEdgeListS*)(0));
+        rng.first = std::find(rng.first, rng.second, e);
+        BOOST_ASSERT(rng.first != rng.second);
+        remove_edge(rng.first);
+      }
+
+      inline void
+      remove_edge(typename Config::out_edge_iterator iter)
+      {
+        typedef typename Config::global_edgelist_selector EdgeListS;
+        BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+        typedef typename Config::graph_type graph_type;
+        graph_type& g = static_cast<graph_type&>(*this);
+        typename Config::edge_descriptor e = *iter;
+        typename Config::OutEdgeList& oel = g.out_edge_list(source(e, g));
+        typename Config::InEdgeList& iel = in_edge_list(g, target(e, g));
+        typedef typename Config::OutEdgeList::value_type::property_type PType;
+        PType& p = *(PType*)e.get_property();
+        detail::remove_directed_edge_dispatch(*iter, iel, p);
+        g.m_edges.erase(iter.base()->get_iter());
+        oel.erase(iter.base());
+      }
+    };
+
+    // O(E/V) for allow_parallel_edge_tag
+    // O(log(E/V)) for disallow_parallel_edge_tag
+    template <class Config>
+    inline void
+    remove_edge(typename Config::vertex_descriptor u,
+                typename Config::vertex_descriptor v,
+                bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typedef typename Config::edge_parallel_category Cat;
+      detail::remove_edge_and_property(g, g.out_edge_list(u), v, Cat());
+      detail::erase_from_incidence_list(in_edge_list(g, v), u, Cat());
+    }
+
+    // O(E/V) or O(log(E/V))
+    template <class EdgeOrIter, class Config>
+    inline void
+    remove_edge(EdgeOrIter e,
+                bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      g_.remove_edge(e);
+    }
+
+    template <class Config, class Predicate>
+    inline void
+    remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred,
+                       bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::OutEdgeList::value_type::property_type PropT;
+      graph_type& g = static_cast<graph_type&>(g_);
+
+      typedef typename Config::EdgeIter EdgeIter;
+      typedef std::vector<EdgeIter> Garbage;
+      Garbage garbage;
+
+      // First remove the edges from the targets' in-edge lists and
+      // from the graph's edge set list.
+      typename Config::out_edge_iterator out_i, out_end;
+      for (boost::tie(out_i, out_end) = out_edges(u, g); out_i != out_end; ++out_i)
+        if (pred(*out_i)) {
+          detail::remove_directed_edge_dispatch
+            (*out_i, in_edge_list(g, target(*out_i, g)),
+             *(PropT*)(*out_i).get_property());
+          // Put in garbage to delete later. Will need the properties
+          // for the remove_if of the out-edges.
+          garbage.push_back((*out_i.base()).get_iter());
+        }
+
+      // Now remove the edges from this out-edge list.
+      typename Config::out_edge_iterator first, last;
+      boost::tie(first, last) = out_edges(u, g);
+      typedef typename Config::edge_parallel_category Cat;
+      detail::remove_directed_edge_if_dispatch
+        (first, last, g.out_edge_list(u), pred, Cat());
+
+      // Now delete the edge properties from the g.m_edges list
+      for (typename Garbage::iterator i = garbage.begin();
+           i != garbage.end(); ++i)
+        g.m_edges.erase(*i);
+    }
+    template <class Config, class Predicate>
+    inline void
+    remove_in_edge_if(typename Config::vertex_descriptor v, Predicate pred,
+                      bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::OutEdgeList::value_type::property_type PropT;
+      graph_type& g = static_cast<graph_type&>(g_);
+
+      typedef typename Config::EdgeIter EdgeIter;
+      typedef std::vector<EdgeIter> Garbage;
+      Garbage garbage;
+
+      // First remove the edges from the sources' out-edge lists and
+      // from the graph's edge set list.
+      typename Config::in_edge_iterator in_i, in_end;
+      for (boost::tie(in_i, in_end) = in_edges(v, g); in_i != in_end; ++in_i)
+        if (pred(*in_i)) {
+          typename Config::vertex_descriptor u = source(*in_i, g);
+          detail::remove_directed_edge_dispatch
+            (*in_i, g.out_edge_list(u), *(PropT*)(*in_i).get_property());
+          // Put in garbage to delete later. Will need the properties
+          // for the remove_if of the out-edges.
+          garbage.push_back((*in_i.base()).get_iter());
+        }
+      // Now remove the edges from this in-edge list.
+      typename Config::in_edge_iterator first, last;
+      boost::tie(first, last) = in_edges(v, g);
+      typedef typename Config::edge_parallel_category Cat;
+      detail::remove_directed_edge_if_dispatch
+        (first, last, in_edge_list(g, v), pred, Cat());
+
+      // Now delete the edge properties from the g.m_edges list
+      for (typename Garbage::iterator i = garbage.begin();
+           i != garbage.end(); ++i)
+        g.m_edges.erase(*i);
+    }
+
+    // O(1)
+    template <class Config>
+    inline typename Config::edges_size_type
+    num_edges(const bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      const graph_type& g = static_cast<const graph_type&>(g_);
+      return g.m_edges.size();
+    }
+    // O(E/V * E/V) for allow_parallel_edge_tag
+    // O(E/V * log(E/V)) for disallow_parallel_edge_tag
+    template <class Config>
+    inline void
+    clear_vertex(typename Config::vertex_descriptor u,
+                 bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::edge_parallel_category Cat;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typename Config::OutEdgeList& el = g.out_edge_list(u);
+      typename Config::OutEdgeList::iterator
+        ei = el.begin(), ei_end = el.end();
+      for (; ei != ei_end; ++ei) {
+        detail::erase_from_incidence_list
+          (in_edge_list(g, (*ei).get_target()), u, Cat());
+        g.m_edges.erase((*ei).get_iter());
+      }
+      typename Config::InEdgeList& in_el = in_edge_list(g, u);
+      typename Config::InEdgeList::iterator
+        in_ei = in_el.begin(), in_ei_end = in_el.end();
+      for (; in_ei != in_ei_end; ++in_ei) {
+        detail::erase_from_incidence_list
+          (g.out_edge_list((*in_ei).get_target()), u, Cat());
+        g.m_edges.erase((*in_ei).get_iter());
+      }
+      g.out_edge_list(u).clear();
+      in_edge_list(g, u).clear();
+    }
+
+    template <class Config>
+    inline void
+    clear_out_edges(typename Config::vertex_descriptor u,
+                    bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::edge_parallel_category Cat;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typename Config::OutEdgeList& el = g.out_edge_list(u);
+      typename Config::OutEdgeList::iterator
+        ei = el.begin(), ei_end = el.end();
+      for (; ei != ei_end; ++ei) {
+        detail::erase_from_incidence_list
+          (in_edge_list(g, (*ei).get_target()), u, Cat());
+        g.m_edges.erase((*ei).get_iter());
+      }
+      g.out_edge_list(u).clear();
+    }
+
+    template <class Config>
+    inline void
+    clear_in_edges(typename Config::vertex_descriptor u,
+                   bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typedef typename Config::global_edgelist_selector EdgeListS;
+      BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+      typedef typename Config::graph_type graph_type;
+      typedef typename Config::edge_parallel_category Cat;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typename Config::InEdgeList& in_el = in_edge_list(g, u);
+      typename Config::InEdgeList::iterator
+        in_ei = in_el.begin(), in_ei_end = in_el.end();
+      for (; in_ei != in_ei_end; ++in_ei) {
+        detail::erase_from_incidence_list
+          (g.out_edge_list((*in_ei).get_target()), u, Cat());
+        g.m_edges.erase((*in_ei).get_iter());
+      }
+      in_edge_list(g, u).clear();
+    }
+
+    // O(1) for allow_parallel_edge_tag
+    // O(log(E/V)) for disallow_parallel_edge_tag
+    template <class Config>
+    inline std::pair<typename Config::edge_descriptor, bool>
+    add_edge(typename Config::vertex_descriptor u,
+             typename Config::vertex_descriptor v,
+             const typename Config::edge_property_type& p,
+             bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      graph_type& g = static_cast<graph_type&>(g_);
+      typedef typename Config::edge_descriptor edge_descriptor;
+      typedef typename Config::StoredEdge StoredEdge;
+      bool inserted;
+      typename Config::EdgeContainer::value_type e(u, v, p);
+      typename Config::EdgeContainer::iterator p_iter
+        = graph_detail::push(g.m_edges, e).first;
+      typename Config::OutEdgeList::iterator i;
+      boost::tie(i, inserted) = boost::graph_detail::push(g.out_edge_list(u),
+                                        StoredEdge(v, p_iter, &g.m_edges));
+      if (inserted) {
+        boost::graph_detail::push(in_edge_list(g, v), StoredEdge(u, p_iter, &g.m_edges));
+        return std::make_pair(edge_descriptor(u, v, &p_iter->m_property),
+                              true);
+      } else {
+        g.m_edges.erase(p_iter);
+        return std::make_pair(edge_descriptor(u, v,
+                                     &i->get_iter()->get_property()),
+                              false);
+      }
+    }
+
+    template <class Config>
+    inline std::pair<typename Config::edge_descriptor, bool>
+    add_edge(typename Config::vertex_descriptor u,
+             typename Config::vertex_descriptor v,
+             bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typename Config::edge_property_type p;
+      return add_edge(u, v, p, g_);
+    }
+    // O(1)
+    template <class Config>
+    inline typename Config::degree_size_type
+    degree(typename Config::vertex_descriptor u,
+           const bidirectional_graph_helper_with_property<Config>& g_)
+    {
+      typedef typename Config::graph_type graph_type;
+      const graph_type& g = static_cast<const graph_type&>(g_);
+      return in_degree(u, g) + out_degree(u, g);
+    }
+
+    //=========================================================================
+    // Adjacency List Helper Class
+
+    template <class Config, class Base>
+    struct adj_list_helper : public Base
+    {
+      typedef typename Config::graph_type AdjList;
+      typedef typename Config::vertex_descriptor vertex_descriptor;
+      typedef typename Config::edge_descriptor edge_descriptor;
+      typedef typename Config::out_edge_iterator out_edge_iterator;
+      typedef typename Config::in_edge_iterator in_edge_iterator;
+      typedef typename Config::adjacency_iterator adjacency_iterator;
+      typedef typename Config::inv_adjacency_iterator inv_adjacency_iterator;
+      typedef typename Config::vertex_iterator vertex_iterator;
+      typedef typename Config::edge_iterator edge_iterator;
+      typedef typename Config::directed_category directed_category;
+      typedef typename Config::edge_parallel_category edge_parallel_category;
+      typedef typename Config::vertices_size_type vertices_size_type;
+      typedef typename Config::edges_size_type edges_size_type;
+      typedef typename Config::degree_size_type degree_size_type;
+      typedef typename Config::StoredEdge StoredEdge;
+      typedef typename Config::vertex_property_type vertex_property_type;
+      typedef typename Config::edge_property_type edge_property_type;
+      typedef typename Config::graph_property_type graph_property_type;
+
+      typedef typename Config::global_edgelist_selector
+        global_edgelist_selector;
+
+      typedef typename lookup_one_property<vertex_property_type, vertex_bundle_t>::type vertex_bundled;
+      typedef typename lookup_one_property<edge_property_type, edge_bundle_t>::type edge_bundled;
+      typedef typename lookup_one_property<graph_property_type, graph_bundle_t>::type graph_bundled;
+    };
+
+    template <class Config, class Base>
+    inline std::pair<typename Config::adjacency_iterator,
+                     typename Config::adjacency_iterator>
+    adjacent_vertices(typename Config::vertex_descriptor u,
+                      const adj_list_helper<Config, Base>& g_)
+    {
+      typedef typename Config::graph_type AdjList;
+      const AdjList& cg = static_cast<const AdjList&>(g_);
+      AdjList& g = const_cast<AdjList&>(cg);
+      typedef typename Config::adjacency_iterator adjacency_iterator;
+      typename Config::out_edge_iterator first, last;
+      boost::tie(first, last) = out_edges(u, g);
+      return std::make_pair(adjacency_iterator(first, &g),
+                            adjacency_iterator(last, &g));
+    }
+    template <class Config, class Base>
+    inline std::pair<typename Config::inv_adjacency_iterator,
+                     typename Config::inv_adjacency_iterator>
+    inv_adjacent_vertices(typename Config::vertex_descriptor u,
+                          const adj_list_helper<Config, Base>& g_)
+    {
+      typedef typename Config::graph_type AdjList;
+      const AdjList& cg = static_cast<const AdjList&>(g_);
+      AdjList& g = const_cast<AdjList&>(cg);
+      typedef typename Config::inv_adjacency_iterator inv_adjacency_iterator;
+      typename Config::in_edge_iterator first, last;
+      boost::tie(first, last) = in_edges(u, g);
+      return std::make_pair(inv_adjacency_iterator(first, &g),
+                            inv_adjacency_iterator(last, &g));
+    }
+    template <class Config, class Base>
+    inline std::pair<typename Config::out_edge_iterator,
+                     typename Config::out_edge_iterator>
+    out_edges(typename Config::vertex_descriptor u,
+              const adj_list_helper<Config, Base>& g_)
+    {
+      typedef typename Config::graph_type AdjList;
+      typedef typename Config::out_edge_iterator out_edge_iterator;
+      const AdjList& cg = static_cast<const AdjList&>(g_);
+      AdjList& g = const_cast<AdjList&>(cg);
+      return
+        std::make_pair(out_edge_iterator(g.out_edge_list(u).begin(), u),
+                       out_edge_iterator(g.out_edge_list(u).end(), u));
+    }
+    template <class Config, class Base>
+    inline std::pair<typename Config::vertex_iterator,
+                     typename Config::vertex_iterator>
+    vertices(const adj_list_helper<Config, Base>& g_)
+    {
+      typedef typename Config::graph_type AdjList;
+      const AdjList& cg = static_cast<const AdjList&>(g_);
+      AdjList& g = const_cast<AdjList&>(cg);
+      return std::make_pair( g.vertex_set().begin(), g.vertex_set().end() );
+    }
+    template <class Config, class Base>
+    inline typename Config::vertices_size_type
+    num_vertices(const adj_list_helper<Config, Base>& g_)
+    {
+      typedef typename Config::graph_type AdjList;
+      const AdjList& g = static_cast<const AdjList&>(g_);
+      return g.vertex_set().size();
+    }
+    template <class Config, class Base>
+    inline typename Config::degree_size_type
+    out_degree(typename Config::vertex_descriptor u,
+               const adj_list_helper<Config, Base>& g_)
+    {
+      typedef typename Config::graph_type AdjList;
+      const AdjList& g = static_cast<const AdjList&>(g_);
+      return g.out_edge_list(u).size();
+    }
+    template <class Config, class Base>
+    inline std::pair<typename Config::edge_descriptor, bool>
+    edge(typename Config::vertex_descriptor u,
+         typename Config::vertex_descriptor v,
+         const adj_list_helper<Config, Base>& g_)
+    {
+      typedef typename Config::graph_type Graph;
+      typedef typename Config::StoredEdge StoredEdge;
+      const Graph& cg = static_cast<const Graph&>(g_);
+      typedef typename Config::out_edge_iterator out_edge_iterator;
+      const typename Config::OutEdgeList& el = cg.out_edge_list(u);
+      typename Config::OutEdgeList::const_iterator it = graph_detail::
+        find(el, StoredEdge(v));
+      return std::make_pair(
+               typename Config::edge_descriptor
+                     (u, v, (it == el.end() ? 0 : &(*it).get_property())),
+               (it != el.end()));
+    }
+
+    template <class Config, class Base>
+    inline std::pair<typename Config::out_edge_iterator,
+                     typename Config::out_edge_iterator>
+    edge_range(typename Config::vertex_descriptor u,
+               typename Config::vertex_descriptor v,
+               const adj_list_helper<Config, Base>& g_)
+    {
+      typedef typename Config::graph_type Graph;
+      typedef typename Config::StoredEdge StoredEdge;
+      const Graph& cg = static_cast<const Graph&>(g_);
+      Graph& g = const_cast<Graph&>(cg);
+      typedef typename Config::out_edge_iterator out_edge_iterator;
+      typename Config::OutEdgeList& el = g.out_edge_list(u);
+      typename Config::OutEdgeList::iterator first, last;
+      typename Config::EdgeContainer fake_edge_container;
+      boost::tie(first, last) = graph_detail::
+        equal_range(el, StoredEdge(v, fake_edge_container.end(),
+                                   &fake_edge_container));
+      return std::make_pair(out_edge_iterator(first, u),
+                            out_edge_iterator(last, u));
+    }
+
+    template <class Config>
+    inline typename Config::degree_size_type
+    in_degree(typename Config::vertex_descriptor u,
+              const directed_edges_helper<Config>& g_)
+    {
+      typedef typename Config::graph_type Graph;
+      const Graph& cg = static_cast<const Graph&>(g_);
+      Graph& g = const_cast<Graph&>(cg);
+      return in_edge_list(g, u).size();
+    }
+
+    namespace detail {
+      template <class Config, class Base, class Property>
+      inline
+      typename boost::property_map<typename Config::graph_type,
+        Property>::type
+      get_dispatch(adj_list_helper<Config,Base>&, Property p,
+                   boost::edge_property_tag) {
+        typedef typename Config::graph_type Graph;
+        typedef typename boost::property_map<Graph, Property>::type PA;
+        return PA(p);
+      }
+      template <class Config, class Base, class Property>
+      inline
+      typename boost::property_map<typename Config::graph_type,
+        Property>::const_type
+      get_dispatch(const adj_list_helper<Config,Base>&, Property p,
+                   boost::edge_property_tag) {
+        typedef typename Config::graph_type Graph;
+        typedef typename boost::property_map<Graph, Property>::const_type PA;
+        return PA(p);
+      }
+
+      template <class Config, class Base, class Property>
+      inline
+      typename boost::property_map<typename Config::graph_type,
+        Property>::type
+      get_dispatch(adj_list_helper<Config,Base>& g, Property p,
+                   boost::vertex_property_tag) {
+        typedef typename Config::graph_type Graph;
+        typedef typename boost::property_map<Graph, Property>::type PA;
+        return PA(&static_cast<Graph&>(g), p);
+      }
+      template <class Config, class Base, class Property>
+      inline
+      typename boost::property_map<typename Config::graph_type,
+        Property>::const_type
+      get_dispatch(const adj_list_helper<Config, Base>& g, Property p,
+                   boost::vertex_property_tag) {
+        typedef typename Config::graph_type Graph;
+        typedef typename boost::property_map<Graph, Property>::const_type PA;
+        const Graph& cg = static_cast<const Graph&>(g);
+        return PA(&cg, p);
+      }
+
+    } // namespace detail
+
+    // Implementation of the PropertyGraph interface
+    template <class Config, class Base, class Property>
+    inline
+    typename boost::property_map<typename Config::graph_type, Property>::type
+    get(Property p, adj_list_helper<Config, Base>& g) {
+      typedef typename detail::property_kind_from_graph<adj_list_helper<Config, Base>, Property>::type Kind;
+      return detail::get_dispatch(g, p, Kind());
+    }
+    template <class Config, class Base, class Property>
+    inline
+    typename boost::property_map<typename Config::graph_type,
+      Property>::const_type
+    get(Property p, const adj_list_helper<Config, Base>& g) {
+      typedef typename detail::property_kind_from_graph<adj_list_helper<Config, Base>, Property>::type Kind;
+      return detail::get_dispatch(g, p, Kind());
+    }
+
+    template <class Config, class Base, class Property, class Key>
+    inline
+    typename boost::property_traits<
+      typename boost::property_map<typename Config::graph_type,
+        Property>::type
+    >::reference
+    get(Property p, adj_list_helper<Config, Base>& g, const Key& key) {
+      return get(get(p, g), key);
+    }
+
+    template <class Config, class Base, class Property, class Key>
+    inline
+    typename boost::property_traits<
+      typename boost::property_map<typename Config::graph_type,
+        Property>::const_type
+    >::reference
+    get(Property p, const adj_list_helper<Config, Base>& g, const Key& key) {
+      return get(get(p, g), key);
+    }
+
+    template <class Config, class Base, class Property, class Key,class Value>
+    inline void
+    put(Property p, adj_list_helper<Config, Base>& g,
+        const Key& key, const Value& value)
+    {
+      typedef typename Config::graph_type Graph;
+      typedef typename boost::property_map<Graph, Property>::type Map;
+      Map pmap = get(p, static_cast<Graph&>(g));
+      put(pmap, key, value);
+    }
+
+
+    //=========================================================================
+    // Generalize Adjacency List Implementation
+
+    struct adj_list_tag { };
+
+    template <class Derived, class Config, class Base>
+    class adj_list_impl
+      : public adj_list_helper<Config, Base>
+    {
+      typedef typename Config::OutEdgeList OutEdgeList;
+      typedef typename Config::InEdgeList InEdgeList;
+      typedef typename Config::StoredVertexList StoredVertexList;
+    public:
+      typedef typename Config::stored_vertex stored_vertex;
+      typedef typename Config::EdgeContainer EdgeContainer;
+      typedef typename Config::vertex_descriptor vertex_descriptor;
+      typedef typename Config::edge_descriptor edge_descriptor;
+      typedef typename Config::vertex_iterator vertex_iterator;
+      typedef typename Config::edge_iterator edge_iterator;
+      typedef typename Config::edge_parallel_category edge_parallel_category;
+      typedef typename Config::vertices_size_type vertices_size_type;
+      typedef typename Config::edges_size_type edges_size_type;
+      typedef typename Config::degree_size_type degree_size_type;
+      typedef typename Config::edge_property_type edge_property_type;
+      typedef adj_list_tag graph_tag;
+
+      static vertex_descriptor null_vertex()
+      {
+        return 0;
+      }
+
+      inline adj_list_impl() { }
+
+      inline adj_list_impl(const adj_list_impl& x) {
+        copy_impl(x);
+      }
+      inline adj_list_impl& operator=(const adj_list_impl& x) {
+        this->clear();
+        copy_impl(x);
+        return *this;
+      }
+      inline void clear() {
+        for (typename StoredVertexList::iterator i = m_vertices.begin();
+             i != m_vertices.end(); ++i)
+          delete (stored_vertex*)*i;
+        m_vertices.clear();
+        m_edges.clear();
+      }
+      inline adj_list_impl(vertices_size_type num_vertices) {
+        for (vertices_size_type i = 0; i < num_vertices; ++i)
+          add_vertex(static_cast<Derived&>(*this));
+      }
+      template <class EdgeIterator>
+      inline adj_list_impl(vertices_size_type num_vertices,
+                           EdgeIterator first, EdgeIterator last)
+      {
+        vertex_descriptor* v = new vertex_descriptor[num_vertices];
+        for (vertices_size_type i = 0; i < num_vertices; ++i)
+          v[i] = add_vertex(static_cast<Derived&>(*this));
+
+        while (first != last) {
+          add_edge(v[(*first).first], v[(*first).second], *this);
+          ++first;
+        }
+        delete [] v;
+      }
+      template <class EdgeIterator, class EdgePropertyIterator>
+      inline adj_list_impl(vertices_size_type num_vertices,
+                           EdgeIterator first, EdgeIterator last,
+                           EdgePropertyIterator ep_iter)
+      {
+        vertex_descriptor* v = new vertex_descriptor[num_vertices];
+        for (vertices_size_type i = 0; i < num_vertices; ++i)
+          v[i] = add_vertex(static_cast<Derived&>(*this));
+
+        while (first != last) {
+          add_edge(v[(*first).first], v[(*first).second], *ep_iter, *this);
+          ++first;
+          ++ep_iter;
+        }
+        delete [] v;
+      }
+      ~adj_list_impl() {
+        for (typename StoredVertexList::iterator i = m_vertices.begin();
+             i != m_vertices.end(); ++i)
+          delete (stored_vertex*)*i;
+      }
+      //    protected:
+      inline OutEdgeList& out_edge_list(vertex_descriptor v) {
+        stored_vertex* sv = (stored_vertex*)v;
+        return sv->m_out_edges;
+      }
+      inline const OutEdgeList& out_edge_list(vertex_descriptor v) const {
+        stored_vertex* sv = (stored_vertex*)v;
+        return sv->m_out_edges;
+      }
+      inline StoredVertexList& vertex_set() { return m_vertices; }
+      inline const StoredVertexList& vertex_set() const { return m_vertices; }
+
+      inline void copy_impl(const adj_list_impl& x_)
+      {
+        const Derived& x = static_cast<const Derived&>(x_);
+
+        // Would be better to have a constant time way to get from
+        // vertices in x to the corresponding vertices in *this.
+        std::map<stored_vertex*,stored_vertex*> vertex_map;
+
+        // Copy the stored vertex objects by adding each vertex
+        // and copying its property object.
+        vertex_iterator vi, vi_end;
+        for (boost::tie(vi, vi_end) = vertices(x); vi != vi_end; ++vi) {
+          stored_vertex* v = (stored_vertex*)add_vertex(*this);
+          v->m_property = ((stored_vertex*)*vi)->m_property;
+          vertex_map[(stored_vertex*)*vi] = v;
+        }
+        // Copy the edges by adding each edge and copying its
+        // property object.
+        edge_iterator ei, ei_end;
+        for (boost::tie(ei, ei_end) = edges(x); ei != ei_end; ++ei) {
+          edge_descriptor e;
+          bool inserted;
+          vertex_descriptor s = source(*ei,x), t = target(*ei,x);
+          boost::tie(e, inserted) = add_edge(vertex_map[(stored_vertex*)s],
+                                             vertex_map[(stored_vertex*)t], *this);
+          *((edge_property_type*)e.m_eproperty)
+            = *((edge_property_type*)(*ei).m_eproperty);
+        }
+      }
+
+
+      typename Config::EdgeContainer m_edges;
+      StoredVertexList m_vertices;
+    };
+
+    // O(1)
+    template <class Derived, class Config, class Base>
+    inline typename Config::vertex_descriptor
+    add_vertex(adj_list_impl<Derived, Config, Base>& g_)
+    {
+      Derived& g = static_cast<Derived&>(g_);
+      typedef typename Config::stored_vertex stored_vertex;
+      stored_vertex* v = new stored_vertex;
+      typename Config::StoredVertexList::iterator pos;
+      bool inserted;
+      boost::tie(pos,inserted) = boost::graph_detail::push(g.m_vertices, v);
+      v->m_position = pos;
+      g.added_vertex(v);
+      return v;
+    }
+    // O(1)
+    template <class Derived, class Config, class Base>
+    inline typename Config::vertex_descriptor
+    add_vertex(const typename Config::vertex_property_type& p,
+               adj_list_impl<Derived, Config, Base>& g_)
+    {
+      typedef typename Config::vertex_descriptor vertex_descriptor;
+      Derived& g = static_cast<Derived&>(g_);
+      if (optional<vertex_descriptor> v
+            = g.vertex_by_property(get_property_value(p, vertex_bundle)))
+        return *v;
+
+      typedef typename Config::stored_vertex stored_vertex;
+      stored_vertex* v = new stored_vertex(p);
+      typename Config::StoredVertexList::iterator pos;
+      bool inserted;
+      boost::tie(pos,inserted) = boost::graph_detail::push(g.m_vertices, v);
+      v->m_position = pos;
+      g.added_vertex(v);
+      return v;
+    }
+    // O(1)
+    template <class Derived, class Config, class Base>
+    inline void remove_vertex(typename Config::vertex_descriptor u,
+                              adj_list_impl<Derived, Config, Base>& g_)
+    {
+      typedef typename Config::stored_vertex stored_vertex;
+      Derived& g = static_cast<Derived&>(g_);
+      g.removing_vertex(u);
+      stored_vertex* su = (stored_vertex*)u;
+      g.m_vertices.erase(su->m_position);
+      delete su;
+    }
+    // O(V)
+    template <class Derived, class Config, class Base>
+    inline typename Config::vertex_descriptor
+    vertex(typename Config::vertices_size_type n,
+           const adj_list_impl<Derived, Config, Base>& g_)
+    {
+      const Derived& g = static_cast<const Derived&>(g_);
+      typename Config::vertex_iterator i = vertices(g).first;
+      while (n--) ++i; // std::advance(i, n); (not VC++ portable)
+      return *i;
+    }
+
+    //=========================================================================
+    // Vector-Backbone Adjacency List Implementation
+
+    namespace detail {
+
+      template <class Graph, class vertex_descriptor>
+      inline void
+      remove_vertex_dispatch(Graph& g, vertex_descriptor u,
+                             boost::directed_tag)
+      {
+        typedef typename Graph::edge_parallel_category edge_parallel_category;
+        g.m_vertices.erase(g.m_vertices.begin() + u);
+        vertex_descriptor V = num_vertices(g);
+        if (u != V) {
+          for (vertex_descriptor v = 0; v < V; ++v)
+            reindex_edge_list(g.out_edge_list(v), u, edge_parallel_category());
+        }
+      }
+
+      template <class Graph, class vertex_descriptor>
+      inline void
+      remove_vertex_dispatch(Graph& g, vertex_descriptor u,
+                             boost::undirected_tag)
+      {
+        typedef typename Graph::global_edgelist_selector EdgeListS;
+        BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+        typedef typename Graph::edge_parallel_category edge_parallel_category;
+        g.m_vertices.erase(g.m_vertices.begin() + u);
+        vertex_descriptor V = num_vertices(g);
+        for (vertex_descriptor v = 0; v < V; ++v)
+          reindex_edge_list(g.out_edge_list(v), u,
+                            edge_parallel_category());
+        typedef typename Graph::EdgeContainer Container;
+        typedef typename Container::iterator Iter;
+        Iter ei = g.m_edges.begin(), ei_end = g.m_edges.end();
+        for (; ei != ei_end; ++ei) {
+          if (ei->m_source > u)
+            --ei->m_source;
+          if (ei->m_target > u)
+            --ei->m_target;
+        }
+      }
+      template <class Graph, class vertex_descriptor>
+      inline void
+      remove_vertex_dispatch(Graph& g, vertex_descriptor u,
+                             boost::bidirectional_tag)
+      {
+        typedef typename Graph::global_edgelist_selector EdgeListS;
+        BOOST_STATIC_ASSERT((!is_random_access_selector<EdgeListS>::value));
+
+        typedef typename Graph::edge_parallel_category edge_parallel_category;
+        g.m_vertices.erase(g.m_vertices.begin() + u);
+        vertex_descriptor V = num_vertices(g);
+        vertex_descriptor v;
+        if (u != V) {
+          for (v = 0; v < V; ++v)
+            reindex_edge_list(g.out_edge_list(v), u,
+                              edge_parallel_category());
+          for (v = 0; v < V; ++v)
+            reindex_edge_list(in_edge_list(g, v), u,
+                              edge_parallel_category());
+
+          typedef typename Graph::EdgeContainer Container;
+          typedef typename Container::iterator Iter;
+          Iter ei = g.m_edges.begin(), ei_end = g.m_edges.end();
+          for (; ei != ei_end; ++ei) {
+            if (ei->m_source > u)
+              --ei->m_source;
+            if (ei->m_target > u)
+              --ei->m_target;
+          }
+        }
+      }
+
+      template <class EdgeList, class vertex_descriptor>
+      inline void
+      reindex_edge_list(EdgeList& el, vertex_descriptor u,
+                        boost::allow_parallel_edge_tag)
+      {
+        typename EdgeList::iterator ei = el.begin(), e_end = el.end();
+        for (; ei != e_end; ++ei)
+          if ((*ei).get_target() > u)
+            --(*ei).get_target();
+      }
+      template <class EdgeList, class vertex_descriptor>
+      inline void
+      reindex_edge_list(EdgeList& el, vertex_descriptor u,
+                        boost::disallow_parallel_edge_tag)
+      {
+        typename EdgeList::iterator ei = el.begin(), e_end = el.end();
+        while (ei != e_end) {
+          typename EdgeList::value_type ce = *ei;
+          ++ei;
+          if (ce.get_target() > u) {
+            el.erase(ce);
+            --ce.get_target();
+            el.insert(ce);
+          }
+        }
+      }
+    } // namespace detail
+
+    struct vec_adj_list_tag { };
+
+    template <class Graph, class Config, class Base>
+    class vec_adj_list_impl
+      : public adj_list_helper<Config, Base>
+    {
+      typedef typename Config::OutEdgeList OutEdgeList;
+      typedef typename Config::InEdgeList InEdgeList;
+      typedef typename Config::StoredVertexList StoredVertexList;
+    public:
+      typedef typename Config::vertex_descriptor vertex_descriptor;
+      typedef typename Config::edge_descriptor edge_descriptor;
+      typedef typename Config::out_edge_iterator out_edge_iterator;
+      typedef typename Config::edge_iterator edge_iterator;
+      typedef typename Config::directed_category directed_category;
+      typedef typename Config::vertices_size_type vertices_size_type;
+      typedef typename Config::edges_size_type edges_size_type;
+      typedef typename Config::degree_size_type degree_size_type;
+      typedef typename Config::StoredEdge StoredEdge;
+      typedef typename Config::stored_vertex stored_vertex;
+      typedef typename Config::EdgeContainer EdgeContainer;
+      typedef typename Config::edge_property_type edge_property_type;
+      typedef vec_adj_list_tag graph_tag;
+
+      static vertex_descriptor null_vertex()
+      {
+        return (std::numeric_limits<vertex_descriptor>::max)();
+      }
+
+      inline vec_adj_list_impl() { }
+
+      inline vec_adj_list_impl(const vec_adj_list_impl& x) {
+        copy_impl(x);
+      }
+      inline vec_adj_list_impl& operator=(const vec_adj_list_impl& x) {
+        this->clear();
+        copy_impl(x);
+        return *this;
+      }
+      inline void clear() {
+        m_vertices.clear();
+        m_edges.clear();
+      }
+
+      inline vec_adj_list_impl(vertices_size_type _num_vertices)
+        : m_vertices(_num_vertices) { }
+
+      template <class EdgeIterator>
+      inline vec_adj_list_impl(vertices_size_type num_vertices,
+                               EdgeIterator first, EdgeIterator last)
+        : m_vertices(num_vertices)
+      {
+        while (first != last) {
+          add_edge((*first).first, (*first).second,
+                   static_cast<Graph&>(*this));
+          ++first;
+        }
+      }
+      template <class EdgeIterator, class EdgePropertyIterator>
+      inline vec_adj_list_impl(vertices_size_type num_vertices,
+                               EdgeIterator first, EdgeIterator last,
+                               EdgePropertyIterator ep_iter)
+        : m_vertices(num_vertices)
+      {
+        while (first != last) {
+          add_edge((*first).first, (*first).second, *ep_iter,
+                   static_cast<Graph&>(*this));
+          ++first;
+          ++ep_iter;
+        }
+      }
+
+      //    protected:
+      inline boost::integer_range<vertex_descriptor> vertex_set() const {
+        return boost::integer_range<vertex_descriptor>(0, m_vertices.size());
+      }
+      inline OutEdgeList& out_edge_list(vertex_descriptor v) {
+        return m_vertices[v].m_out_edges;
+      }
+      inline const OutEdgeList& out_edge_list(vertex_descriptor v) const {
+        return m_vertices[v].m_out_edges;
+      }
+      inline void copy_impl(const vec_adj_list_impl& x_)
+      {
+        const Graph& x = static_cast<const Graph&>(x_);
+        // Copy the stored vertex objects by adding each vertex
+        // and copying its property object.
+        for (vertices_size_type i = 0; i < num_vertices(x); ++i) {
+          vertex_descriptor v = add_vertex(*this);
+          m_vertices[v].m_property = x.m_vertices[i].m_property;
+        }
+        // Copy the edges by adding each edge and copying its
+        // property object.
+        edge_iterator ei, ei_end;
+        for (boost::tie(ei, ei_end) = edges(x); ei != ei_end; ++ei) {
+          edge_descriptor e;
+          bool inserted;
+          boost::tie(e, inserted) = add_edge(source(*ei,x), target(*ei,x) , *this);
+          *((edge_property_type*)e.m_eproperty)
+            = *((edge_property_type*)(*ei).m_eproperty);
+        }
+      }
+      typename Config::EdgeContainer m_edges;
+      StoredVertexList m_vertices;
+    };
+    // Had to make these non-members to avoid accidental instantiation
+    // on SGI MIPSpro C++
+    template <class G, class C, class B>
+    inline typename C::InEdgeList&
+    in_edge_list(vec_adj_list_impl<G,C,B>& g,
+                 typename C::vertex_descriptor v) {
+      return g.m_vertices[v].m_in_edges;
+    }
+    template <class G, class C, class B>
+    inline const typename C::InEdgeList&
+    in_edge_list(const vec_adj_list_impl<G,C,B>& g,
+                 typename C::vertex_descriptor v) {
+      return g.m_vertices[v].m_in_edges;
+    }
+
+      // O(1)
+    template <class Graph, class Config, class Base>
+    inline typename Config::vertex_descriptor
+    add_vertex(vec_adj_list_impl<Graph, Config, Base>& g_) {
+      Graph& g = static_cast<Graph&>(g_);
+      g.m_vertices.resize(g.m_vertices.size() + 1);
+      g.added_vertex(g.m_vertices.size() - 1);
+      return g.m_vertices.size() - 1;
+    }
+
+    template <class Graph, class Config, class Base>
+    inline typename Config::vertex_descriptor
+    add_vertex(const typename Config::vertex_property_type& p,
+               vec_adj_list_impl<Graph, Config, Base>& g_) {
+      typedef typename Config::vertex_descriptor vertex_descriptor;
+      Graph& g = static_cast<Graph&>(g_);
+      if (optional<vertex_descriptor> v
+            = g.vertex_by_property(get_property_value(p, vertex_bundle)))
+        return *v;
+      typedef typename Config::stored_vertex stored_vertex;
+      g.m_vertices.push_back(stored_vertex(p));
+      g.added_vertex(g.m_vertices.size() - 1);
+      return g.m_vertices.size() - 1;
+    }
+
+    // Here we override the directed_graph_helper add_edge() function
+    // so that the number of vertices is automatically changed if
+    // either u or v is greater than the number of vertices.
+    template <class Graph, class Config, class Base>
+    inline std::pair<typename Config::edge_descriptor, bool>
+    add_edge(typename Config::vertex_descriptor u,
+             typename Config::vertex_descriptor v,
+             const typename Config::edge_property_type& p,
+             vec_adj_list_impl<Graph, Config, Base>& g_)
+    {
+      BOOST_USING_STD_MAX();
+      typename Config::vertex_descriptor x = max BOOST_PREVENT_MACRO_SUBSTITUTION(u, v);
+      if (x >= num_vertices(g_))
+        g_.m_vertices.resize(x + 1);
+      adj_list_helper<Config, Base>& g = g_;
+      return add_edge(u, v, p, g);
+    }
+    template <class Graph, class Config, class Base>
+    inline std::pair<typename Config::edge_descriptor, bool>
+    add_edge(typename Config::vertex_descriptor u,
+             typename Config::vertex_descriptor v,
+             vec_adj_list_impl<Graph, Config, Base>& g_)
+    {
+      typename Config::edge_property_type p;
+      return add_edge(u, v, p, g_);
+    }
+
+
+    // O(V + E)
+    template <class Graph, class Config, class Base>
+    inline void remove_vertex(typename Config::vertex_descriptor v,
+                              vec_adj_list_impl<Graph, Config, Base>& g_)
+    {
+      typedef typename Config::directed_category Cat;
+      Graph& g = static_cast<Graph&>(g_);
+      g.removing_vertex(v);
+      detail::remove_vertex_dispatch(g, v, Cat());
+    }
+    // O(1)
+    template <class Graph, class Config, class Base>
+    inline typename Config::vertex_descriptor
+    vertex(typename Config::vertices_size_type n,
+           const vec_adj_list_impl<Graph, Config, Base>&)
+    {
+      return n;
+    }
+
+
+  namespace detail {
+
+    //=========================================================================
+    // Adjacency List Generator
+
+    template <class Graph, class VertexListS, class OutEdgeListS,
+              class DirectedS, class VertexProperty, class EdgeProperty,
+              class GraphProperty, class EdgeListS>
+    struct adj_list_gen
+    {
+      // Remove these assertions once PtrContainer support is implemented.
+      BOOST_STATIC_ASSERT((!is_ptr_selector<VertexListS>::value));
+      BOOST_STATIC_ASSERT((!is_ptr_selector<OutEdgeListS>::value));
+      BOOST_STATIC_ASSERT((!is_ptr_selector<EdgeListS>::value));
+
+      typedef typename is_random_access_selector<VertexListS>::type
+        is_rand_access;
+      typedef typename has_property<EdgeProperty>::type has_edge_property;
+      typedef typename DirectedS::is_directed_t DirectedT;
+      typedef typename DirectedS::is_bidir_t BidirectionalT;
+
+      struct config
+      {
+        typedef OutEdgeListS edgelist_selector;
+        typedef EdgeListS global_edgelist_selector;
+
+        typedef Graph graph_type;
+        typedef EdgeProperty edge_property_type;
+        typedef VertexProperty vertex_property_type;
+        typedef GraphProperty graph_property_type;
+        typedef std::size_t vertices_size_type;
+
+        typedef adjacency_list_traits<OutEdgeListS, VertexListS, DirectedS>
+           Traits;
+
+        typedef typename Traits::directed_category directed_category;
+        typedef typename Traits::edge_parallel_category edge_parallel_category;
+        typedef typename Traits::vertex_descriptor vertex_descriptor;
+        typedef typename Traits::edge_descriptor edge_descriptor;
+
+        typedef void* vertex_ptr;
+
+        // need to reorganize this to avoid instantiating stuff
+        // that doesn't get used -JGS
+
+        // VertexList and vertex_iterator
+        typedef typename container_gen<VertexListS,
+          vertex_ptr>::type SeqVertexList;
+        typedef boost::integer_range<vertex_descriptor> RandVertexList;
+        typedef typename mpl::if_<is_rand_access,
+          RandVertexList, SeqVertexList>::type VertexList;
+
+        typedef typename VertexList::iterator vertex_iterator;
+
+        // EdgeContainer and StoredEdge
+
+        typedef typename container_gen<EdgeListS,
+          list_edge<vertex_descriptor, EdgeProperty> >::type EdgeContainer;
+
+        typedef typename mpl::and_<DirectedT,
+             typename mpl::not_<BidirectionalT>::type >::type on_edge_storage;
+
+        typedef typename mpl::if_<on_edge_storage,
+          std::size_t, typename EdgeContainer::size_type
+        >::type edges_size_type;
+
+        typedef typename EdgeContainer::iterator EdgeIter;
+
+        typedef typename is_random_access_selector<EdgeListS>::type is_edge_ra;
+
+        typedef typename mpl::if_<on_edge_storage,
+          stored_edge_property<vertex_descriptor, EdgeProperty>,
+          typename mpl::if_<is_edge_ra,
+            stored_ra_edge_iter<vertex_descriptor, EdgeContainer, EdgeProperty>,
+            stored_edge_iter<vertex_descriptor, EdgeIter, EdgeProperty>
+          >::type
+        >::type StoredEdge;
+
+        // Adjacency Types
+
+        typedef typename container_gen<OutEdgeListS, StoredEdge>::type
+          OutEdgeList;
+        typedef typename OutEdgeList::size_type degree_size_type;
+        typedef typename OutEdgeList::iterator OutEdgeIter;
+
+        typedef boost::detail::iterator_traits<OutEdgeIter> OutEdgeIterTraits;
+        typedef typename OutEdgeIterTraits::iterator_category OutEdgeIterCat;
+        typedef typename OutEdgeIterTraits::difference_type OutEdgeIterDiff;
+
+        typedef out_edge_iter<
+            OutEdgeIter, vertex_descriptor, edge_descriptor, OutEdgeIterDiff
+        > out_edge_iterator;
+
+        typedef typename adjacency_iterator_generator<graph_type,
+           vertex_descriptor, out_edge_iterator>::type adjacency_iterator;
+
+        typedef OutEdgeList InEdgeList;
+        typedef OutEdgeIter InEdgeIter;
+        typedef OutEdgeIterCat InEdgeIterCat;
+        typedef OutEdgeIterDiff InEdgeIterDiff;
+
+        typedef in_edge_iter<
+            InEdgeIter, vertex_descriptor, edge_descriptor, InEdgeIterDiff
+        > in_edge_iterator;
+
+        typedef typename inv_adjacency_iterator_generator<graph_type,
+           vertex_descriptor, in_edge_iterator>::type inv_adjacency_iterator;
+
+        // Edge Iterator
+
+        typedef boost::detail::iterator_traits<EdgeIter> EdgeIterTraits;
+        typedef typename EdgeIterTraits::iterator_category EdgeIterCat;
+        typedef typename EdgeIterTraits::difference_type EdgeIterDiff;
+
+        typedef undirected_edge_iter<
+            EdgeIter
+          , edge_descriptor
+          , EdgeIterDiff
+        > UndirectedEdgeIter; // also used for bidirectional
+
+        typedef adj_list_edge_iterator<vertex_iterator, out_edge_iterator,
+           graph_type> DirectedEdgeIter;
+
+        typedef typename mpl::if_<on_edge_storage,
+          DirectedEdgeIter, UndirectedEdgeIter>::type edge_iterator;
+
+        // stored_vertex and StoredVertexList
+        typedef typename container_gen<VertexListS, vertex_ptr>::type
+          SeqStoredVertexList;
+        struct seq_stored_vertex {
+          seq_stored_vertex() { }
+          seq_stored_vertex(const VertexProperty& p) : m_property(p) { }
+          OutEdgeList m_out_edges;
+          VertexProperty m_property;
+          typename SeqStoredVertexList::iterator m_position;
+        };
+        struct bidir_seq_stored_vertex {
+          bidir_seq_stored_vertex() { }
+          bidir_seq_stored_vertex(const VertexProperty& p) : m_property(p) { }
+          OutEdgeList m_out_edges;
+          InEdgeList m_in_edges;
+          VertexProperty m_property;
+          typename SeqStoredVertexList::iterator m_position;
+        };
+        struct rand_stored_vertex {
+          rand_stored_vertex() { }
+          rand_stored_vertex(const VertexProperty& p) : m_property(p) { }
+          OutEdgeList m_out_edges;
+          VertexProperty m_property;
+        };
+        struct bidir_rand_stored_vertex {
+          bidir_rand_stored_vertex() { }
+          bidir_rand_stored_vertex(const VertexProperty& p) : m_property(p) { }
+          OutEdgeList m_out_edges;
+          InEdgeList m_in_edges;
+          VertexProperty m_property;
+        };
+        typedef typename mpl::if_<is_rand_access,
+          typename mpl::if_<BidirectionalT,
+            bidir_rand_stored_vertex, rand_stored_vertex>::type,
+          typename mpl::if_<BidirectionalT,
+            bidir_seq_stored_vertex, seq_stored_vertex>::type
+        >::type StoredVertex;
+        struct stored_vertex : public StoredVertex {
+          stored_vertex() { }
+          stored_vertex(const VertexProperty& p) : StoredVertex(p) { }
+        };
+
+        typedef typename container_gen<VertexListS, stored_vertex>::type
+          RandStoredVertexList;
+        typedef typename mpl::if_< is_rand_access,
+          RandStoredVertexList, SeqStoredVertexList>::type StoredVertexList;
+      }; // end of config
+
+
+      typedef typename mpl::if_<BidirectionalT,
+        bidirectional_graph_helper_with_property<config>,
+        typename mpl::if_<DirectedT,
+          directed_graph_helper<config>,
+          undirected_graph_helper<config>
+        >::type
+      >::type DirectedHelper;
+
+      typedef typename mpl::if_<is_rand_access,
+        vec_adj_list_impl<Graph, config, DirectedHelper>,
+        adj_list_impl<Graph, config, DirectedHelper>
+      >::type type;
+
+    };
+
+  } // namespace detail
+
+    //=========================================================================
+    // Vertex Property Maps
+
+    template <class Graph, class ValueType, class Reference, class Tag>
+    struct adj_list_vertex_property_map
+      : public boost::put_get_helper<
+          Reference,
+          adj_list_vertex_property_map<Graph, ValueType, Reference, Tag>
+        >
+    {
+      typedef typename Graph::stored_vertex StoredVertex;
+      typedef ValueType value_type;
+      typedef Reference reference;
+      typedef typename Graph::vertex_descriptor key_type;
+      typedef boost::lvalue_property_map_tag category;
+      inline adj_list_vertex_property_map(const Graph* = 0, Tag tag = Tag()): m_tag(tag) { }
+      inline Reference operator[](key_type v) const {
+        StoredVertex* sv = (StoredVertex*)v;
+        return get_property_value(sv->m_property, m_tag);
+      }
+      inline Reference operator()(key_type v) const {
+        return this->operator[](v);
+      }
+      Tag m_tag;
+    };
+
+    template <class Graph, class Property, class PropRef>
+    struct adj_list_vertex_all_properties_map
+      : public boost::put_get_helper<PropRef,
+          adj_list_vertex_all_properties_map<Graph, Property, PropRef>
+        >
+    {
+      typedef typename Graph::stored_vertex StoredVertex;
+      typedef Property value_type;
+      typedef PropRef reference;
+      typedef typename Graph::vertex_descriptor key_type;
+      typedef boost::lvalue_property_map_tag category;
+      inline adj_list_vertex_all_properties_map(const Graph* = 0, vertex_all_t = vertex_all_t()) { }
+      inline PropRef operator[](key_type v) const {
+        StoredVertex* sv = (StoredVertex*)v;
+        return sv->m_property;
+      }
+      inline PropRef operator()(key_type v) const {
+        return this->operator[](v);
+      }
+    };
+
+    template <class Graph, class GraphPtr, class ValueType, class Reference,
+              class Tag>
+    struct vec_adj_list_vertex_property_map
+      : public boost::put_get_helper<
+          Reference,
+          vec_adj_list_vertex_property_map<Graph,GraphPtr,ValueType,Reference,
+             Tag>
+        >
+    {
+      typedef ValueType value_type;
+      typedef Reference reference;
+      typedef typename boost::graph_traits<Graph>::vertex_descriptor key_type;
+      typedef boost::lvalue_property_map_tag category;
+      vec_adj_list_vertex_property_map(GraphPtr g = 0, Tag tag = Tag()) : m_g(g), m_tag(tag) { }
+      inline Reference operator[](key_type v) const {
+        return get_property_value(m_g->m_vertices[v].m_property, m_tag);
+      }
+      inline Reference operator()(key_type v) const {
+        return this->operator[](v);
+      }
+      GraphPtr m_g;
+      Tag m_tag;
+    };
+
+    template <class Graph, class GraphPtr, class Property, class PropertyRef>
+    struct vec_adj_list_vertex_all_properties_map
+      : public boost::put_get_helper<PropertyRef,
+          vec_adj_list_vertex_all_properties_map<Graph,GraphPtr,Property,
+            PropertyRef>
+        >
+    {
+      typedef Property value_type;
+      typedef PropertyRef reference;
+      typedef typename boost::graph_traits<Graph>::vertex_descriptor key_type;
+      typedef boost::lvalue_property_map_tag category;
+      vec_adj_list_vertex_all_properties_map(GraphPtr g = 0, vertex_all_t = vertex_all_t()) : m_g(g) { }
+      inline PropertyRef operator[](key_type v) const {
+        return m_g->m_vertices[v].m_property;
+      }
+      inline PropertyRef operator()(key_type v) const {
+        return this->operator[](v);
+      }
+      GraphPtr m_g;
+    };
+
+    struct adj_list_any_vertex_pa {
+      template <class Tag, class Graph, class Property>
+      struct bind_ {
+        typedef typename property_value<Property, Tag>::type value_type;
+        typedef value_type& reference;
+        typedef const value_type& const_reference;
+
+        typedef adj_list_vertex_property_map
+          <Graph, value_type, reference, Tag> type;
+        typedef adj_list_vertex_property_map
+          <Graph, value_type, const_reference, Tag> const_type;
+      };
+    };
+    struct adj_list_all_vertex_pa {
+      template <class Tag, class Graph, class Property>
+      struct bind_ {
+        typedef typename Graph::vertex_descriptor Vertex;
+        typedef adj_list_vertex_all_properties_map<Graph,Property,
+          Property&> type;
+        typedef adj_list_vertex_all_properties_map<Graph,Property,
+          const Property&> const_type;
+      };
+    };
+
+    template <class Property, class Vertex>
+    struct vec_adj_list_vertex_id_map
+      : public boost::put_get_helper<
+          Vertex, vec_adj_list_vertex_id_map<Property, Vertex>
+        >
+    {
+      typedef Vertex value_type;
+      typedef Vertex key_type;
+      typedef Vertex reference;
+      typedef boost::readable_property_map_tag category;
+      inline vec_adj_list_vertex_id_map() { }
+      template <class Graph>
+      inline vec_adj_list_vertex_id_map(const Graph&, vertex_index_t) { }
+      inline value_type operator[](key_type v) const { return v; }
+      inline value_type operator()(key_type v) const { return v; }
+    };
+
+    struct vec_adj_list_any_vertex_pa {
+      template <class Tag, class Graph, class Property>
+      struct bind_ {
+        typedef typename property_value<Property, Tag>::type value_type;
+        typedef value_type& reference;
+        typedef const value_type& const_reference;
+
+        typedef vec_adj_list_vertex_property_map
+          <Graph, Graph*, value_type, reference, Tag> type;
+        typedef vec_adj_list_vertex_property_map
+          <Graph, const Graph*, value_type, const_reference, Tag> const_type;
+      };
+    };
+    struct vec_adj_list_id_vertex_pa {
+      template <class Tag, class Graph, class Property>
+      struct bind_ {
+        typedef typename Graph::vertex_descriptor Vertex;
+        typedef vec_adj_list_vertex_id_map<Property, Vertex> type;
+        typedef vec_adj_list_vertex_id_map<Property, Vertex> const_type;
+      };
+    };
+    struct vec_adj_list_all_vertex_pa {
+      template <class Tag, class Graph, class Property>
+      struct bind_ {
+        typedef typename Graph::vertex_descriptor Vertex;
+        typedef vec_adj_list_vertex_all_properties_map
+          <Graph, Graph*, Property, Property&> type;
+        typedef vec_adj_list_vertex_all_properties_map
+          <Graph, const Graph*, Property, const Property&> const_type;
+      };
+    };
+  namespace detail {
+    template <class Tag, class Graph, class Property>
+    struct adj_list_choose_vertex_pa
+      : boost::mpl::if_<
+          boost::is_same<Tag, vertex_all_t>,
+          adj_list_all_vertex_pa,
+          adj_list_any_vertex_pa>::type
+        ::template bind_<Tag, Graph, Property>
+    {};
+
+
+    template <class Tag>
+    struct vec_adj_list_choose_vertex_pa_helper {
+      typedef vec_adj_list_any_vertex_pa type;
+    };
+    template <>
+    struct vec_adj_list_choose_vertex_pa_helper<vertex_index_t> {
+      typedef vec_adj_list_id_vertex_pa type;
+    };
+    template <>
+    struct vec_adj_list_choose_vertex_pa_helper<vertex_all_t> {
+      typedef vec_adj_list_all_vertex_pa type;
+    };
+    template <class Tag, class Graph, class Property>
+    struct vec_adj_list_choose_vertex_pa
+      : vec_adj_list_choose_vertex_pa_helper<Tag>::type::template bind_<Tag,Graph,Property>
+    {};
+  } // namespace detail
+
+    //=========================================================================
+    // Edge Property Map
+
+    template <class Directed, class Value, class Ref, class Vertex,
+              class Property, class Tag>
+    struct adj_list_edge_property_map
+      : public put_get_helper<
+          Ref,
+          adj_list_edge_property_map<Directed, Value, Ref, Vertex, Property,
+            Tag>
+        >
+    {
+      Tag tag;
+      explicit adj_list_edge_property_map(Tag tag = Tag()): tag(tag) {}
+
+      typedef Value value_type;
+      typedef Ref reference;
+      typedef detail::edge_desc_impl<Directed, Vertex> key_type;
+      typedef boost::lvalue_property_map_tag category;
+      inline Ref operator[](key_type e) const {
+        Property& p = *(Property*)e.get_property();
+        return get_property_value(p, tag);
+      }
+      inline Ref operator()(key_type e) const {
+        return this->operator[](e);
+      }
+    };
+
+    template <class Directed, class Property, class PropRef, class PropPtr,
+      class Vertex>
+    struct adj_list_edge_all_properties_map
+      : public put_get_helper<PropRef,
+          adj_list_edge_all_properties_map<Directed, Property, PropRef,
+            PropPtr, Vertex>
+        >
+    {
+      explicit adj_list_edge_all_properties_map(edge_all_t = edge_all_t()) {}
+      typedef Property value_type;
+      typedef PropRef reference;
+      typedef detail::edge_desc_impl<Directed, Vertex> key_type;
+      typedef boost::lvalue_property_map_tag category;
+      inline PropRef operator[](key_type e) const {
+        return *(PropPtr)e.get_property();
+      }
+      inline PropRef operator()(key_type e) const {
+        return this->operator[](e);
+      }
+    };
+
+  // Edge Property Maps
+
+  namespace detail {
+    struct adj_list_any_edge_pmap {
+      template <class Graph, class Property, class Tag>
+      struct bind_ {
+        typedef typename property_value<Property,Tag>::type value_type;
+        typedef value_type& reference;
+        typedef const value_type& const_reference;
+
+        typedef adj_list_edge_property_map
+           <typename Graph::directed_category, value_type, reference,
+            typename Graph::vertex_descriptor,Property,Tag> type;
+        typedef adj_list_edge_property_map
+           <typename Graph::directed_category, value_type, const_reference,
+            typename Graph::vertex_descriptor,const Property, Tag> const_type;
+      };
+    };
+    struct adj_list_all_edge_pmap {
+      template <class Graph, class Property, class Tag>
+      struct bind_ {
+        typedef adj_list_edge_all_properties_map
+        <typename Graph::directed_category, Property, Property&, Property*,
+            typename Graph::vertex_descriptor> type;
+        typedef adj_list_edge_all_properties_map
+        <typename Graph::directed_category, Property, const Property&,
+            const Property*, typename Graph::vertex_descriptor> const_type;
+      };
+    };
+
+    template <class Tag>
+    struct adj_list_choose_edge_pmap_helper {
+      typedef adj_list_any_edge_pmap type;
+    };
+    template <>
+    struct adj_list_choose_edge_pmap_helper<edge_all_t> {
+      typedef adj_list_all_edge_pmap type;
+    };
+    template <class Tag, class Graph, class Property>
+    struct adj_list_choose_edge_pmap
+      : adj_list_choose_edge_pmap_helper<Tag>::type::template bind_<Graph, Property, Tag>
+      {};
+    struct adj_list_edge_property_selector {
+      template <class Graph, class Property, class Tag>
+      struct bind_: adj_list_choose_edge_pmap<Tag, Graph, Property> {};
+    };
+  } // namespace detail
+
+  template <>
+  struct edge_property_selector<adj_list_tag> {
+    typedef detail::adj_list_edge_property_selector type;
+  };
+  template <>
+  struct edge_property_selector<vec_adj_list_tag> {
+    typedef detail::adj_list_edge_property_selector type;
+  };
+
+  // Vertex Property Maps
+
+  struct adj_list_vertex_property_selector {
+    template <class Graph, class Property, class Tag>
+    struct bind_
+      : detail::adj_list_choose_vertex_pa<Tag,Graph,Property>
+    {};
+  };
+  template <>
+  struct vertex_property_selector<adj_list_tag> {
+    typedef adj_list_vertex_property_selector type;
+  };
+
+  struct vec_adj_list_vertex_property_selector {
+    template <class Graph, class Property, class Tag>
+    struct bind_: detail::vec_adj_list_choose_vertex_pa<Tag,Graph,Property> {};
+  };
+  template <>
+  struct vertex_property_selector<vec_adj_list_tag> {
+    typedef vec_adj_list_vertex_property_selector type;
+  };
+
+} // namespace boost
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+namespace boost {
+
+  template <typename V>
+  struct hash< boost::detail::stored_edge<V> >
+  {
+    std::size_t
+    operator()(const boost::detail::stored_edge<V>& e) const
+    {
+      return hash<V>()(e.m_target);
+    }
+  };
+
+  template <typename V, typename P>
+  struct hash< boost::detail::stored_edge_property <V,P> >
+  {
+    std::size_t
+    operator()(const boost::detail::stored_edge_property<V,P>& e) const
+    {
+      return hash<V>()(e.m_target);
+    }
+  };
+
+  template <typename V, typename I, typename P>
+  struct hash< boost::detail::stored_edge_iter<V,I, P> >
+  {
+    std::size_t
+    operator()(const boost::detail::stored_edge_iter<V,I,P>& e) const
+    {
+      return hash<V>()(e.m_target);
+    }
+  };
+
+}
+#endif
+
+
+#endif // BOOST_GRAPH_DETAIL_DETAIL_ADJACENCY_LIST_CCT
+
+/*
+  Implementation Notes:
+
+  Many of the public interface functions in this file would have been
+  more conveniently implemented as inline friend functions.
+  However there are a few compiler bugs that make that approach
+  non-portable.
+
+  1. g++ inline friend in namespace bug
+  2. g++ using clause doesn't work with inline friends
+  3. VC++ doesn't have Koenig lookup
+
+  For these reasons, the functions were all written as non-inline free
+  functions, and static cast was used to convert from the helper
+  class to the adjacency_list derived class.
+
+  Looking back, it might have been better to write out all functions
+  in terms of the adjacency_list, and then use a tag to dispatch
+  to the various helpers instead of using inheritance.
+
+ */
Added: sandbox/container_gen/boost/graph/detail/metafunction/is_front_insertion_sequence.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/graph/detail/metafunction/is_front_insertion_sequence.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,51 @@
+// 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_GRAPH_DETAIL_METAFUNCTION_IS_FRONT_INSERTION_SEQUENCE_HPP
+#define BOOST_GRAPH_DETAIL_METAFUNCTION_IS_FRONT_INSERTION_SEQUENCE_HPP
+
+#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/is_sequence.hpp>
+
+namespace boost { namespace graph_detail {
+
+    // Major BGL assumption:
+    // A Front Insertion Sequence is a Sequence without
+    // Bidirectional Iterators.
+    template <typename T>
+    struct is_front_insertion_sequence_impl
+      : ::boost::mpl::if_<
+            ::std::tr1::is_convertible<
+                typename ::boost::BOOST_ITERATOR_CATEGORY<
+                    typename T::iterator
+                >::type
+              , ::std::bidirectional_iterator_tag
+            >
+          , ::boost::mpl::false_
+          , ::boost::mpl::true_
+        >
+    {
+    };
+
+    template <typename T>
+    struct is_front_insertion_sequence
+      : ::boost::mpl::eval_if<
+            ::boost::detail::metafunction::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::graph_detail
+
+#endif  // BOOST_GRAPH_DETAIL_METAFUNCTION_IS_FRONT_INSERTION_SEQUENCE_HPP
+
Added: sandbox/container_gen/boost/pending/container_traits.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/pending/container_traits.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,863 @@
+//  (C) Copyright Jeremy Siek 2004 
+//  (C) Copyright Thomas Claveirole 2010
+//  (C) Copyright Ignacy Gawedzki 2010
+//  (C) Copyright Cromwell D. Enage 2012
+//  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_GRAPH_DETAIL_CONTAINER_TRAITS_H
+#define BOOST_GRAPH_DETAIL_CONTAINER_TRAITS_H
+
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/next_prior.hpp>
+#include <algorithm>
+
+#if defined BOOST_MPL_CFG_NO_HAS_XXX
+
+// Sure would be nice to be able to forward declare these
+// instead of pulling in all the headers. Too bad that
+// is not legal. There ought to be a standard <stlfwd> header. -JGS 
+
+#include <vector>
+#include <list>
+#include <set>
+#include <map>
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_SLIST
+#  ifdef 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 BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+// Stay out of the way of concept checking class templates
+# define Container Container_
+# define AssociativeContainer AssociativeContainer_
+#endif
+
+// The content of this file is in 'graph_detail' because otherwise
+// there will be name clashes with 
+// sandbox/boost/sequence_algo/container_traits.hpp
+// The 'detail' subnamespace will still cause problems.
+namespace boost { namespace graph_detail {
+
+  //======================================================================
+  // Container Category Tags
+  //
+  //   They use virtual inheritance because there are lots of
+  //   inheritance diamonds.
+
+  struct container_tag { };
+  struct forward_container_tag : virtual public container_tag { };
+  struct reversible_container_tag : virtual public forward_container_tag { };
+  struct random_access_container_tag
+    : virtual public reversible_container_tag { };
+  
+  struct sequence_tag : virtual public forward_container_tag { };
+
+  struct associative_container_tag : virtual public forward_container_tag { };
+
+  struct sorted_associative_container_tag 
+    : virtual public associative_container_tag,
+      virtual public reversible_container_tag { };
+
+  struct front_insertion_sequence_tag : virtual public sequence_tag { };
+  struct back_insertion_sequence_tag : virtual public sequence_tag { };
+
+  struct unique_associative_container_tag 
+    : virtual public associative_container_tag { };
+  struct multiple_associative_container_tag 
+    : virtual public associative_container_tag { };
+  struct simple_associative_container_tag 
+    : virtual public associative_container_tag { };
+  struct pair_associative_container_tag 
+    : virtual public associative_container_tag { };
+
+
+  //======================================================================
+  // Iterator Stability Tags
+  //
+  // Do mutating operations such as insert/erase/resize invalidate all
+  // outstanding iterators?
+
+  struct stable_tag { };
+  struct unstable_tag { };
+
+  //======================================================================
+  // Container Traits Class and container_category() function
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+  // don't use this unless there is partial specialization 
+  template <class Container>
+  struct container_traits {
+    typedef typename Container::category category;
+    typedef typename Container::iterator_stability iterator_stability;
+  };
+#endif
+
+  // Use this as a compile-time assertion that X is stable
+  inline void require_stable(stable_tag) { }
+
+  // std::vector
+  struct vector_tag :
+    virtual public random_access_container_tag,
+    virtual public back_insertion_sequence_tag { };
+
+  template <class T, class Alloc>
+  vector_tag container_category(const std::vector<T,Alloc>&)
+    { return vector_tag(); }
+
+  template <class T, class Alloc>
+  unstable_tag iterator_stability(const std::vector<T,Alloc>&)
+    { return unstable_tag(); }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+  template <class T, class Alloc>
+  struct container_traits< std::vector<T,Alloc> > {
+    typedef vector_tag category;
+    typedef unstable_tag iterator_stability;
+  };
+#endif
+
+  // std::list
+  struct list_tag :
+    virtual public reversible_container_tag,
+    virtual public back_insertion_sequence_tag
+    // this causes problems for push_dispatch...
+    //    virtual public front_insertion_sequence_tag
+    { };
+
+  template <class T, class Alloc>
+  list_tag container_category(const std::list<T,Alloc>&)
+    { return list_tag(); }
+
+  template <class T, class Alloc>
+  stable_tag iterator_stability(const std::list<T,Alloc>&)
+    { return stable_tag(); }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+  template <class T, class Alloc>
+  struct container_traits< std::list<T,Alloc> > {
+    typedef list_tag category;
+    typedef stable_tag iterator_stability;
+  };
+#endif
+
+
+  // std::slist
+#if !defined BOOST_NO_SLIST
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+  template <class T, class Alloc>
+  struct container_traits<BOOST_STD_EXTENSION_NAMESPACE::slist<T,Alloc> > {
+    typedef front_insertion_sequence_tag category;
+    typedef stable_tag iterator_stability;
+  };
+#endif
+  template <class T, class Alloc>
+  front_insertion_sequence_tag container_category(
+    const BOOST_STD_EXTENSION_NAMESPACE::slist<T,Alloc>&
+  )
+    { return front_insertion_sequence_tag(); }
+
+  template <class T, class Alloc>
+  stable_tag iterator_stability(
+    const BOOST_STD_EXTENSION_NAMESPACE::slist<T,Alloc>&
+  )
+    { return stable_tag(); }
+#endif
+
+
+  // std::set
+  struct set_tag :
+    virtual public sorted_associative_container_tag,
+    virtual public simple_associative_container_tag,
+    virtual public unique_associative_container_tag 
+    { };
+
+  template <class Key, class Cmp, class Alloc> 
+  set_tag container_category(const std::set<Key,Cmp,Alloc>&)
+  { return set_tag(); }
+
+  template <class Key, class Cmp, class Alloc> 
+  stable_tag iterator_stability(const std::set<Key,Cmp,Alloc>&)
+  { return stable_tag(); }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+  template <class Key, class Cmp, class Alloc> 
+  struct container_traits< std::set<Key,Cmp,Alloc> > {
+    typedef set_tag category;
+    typedef stable_tag iterator_stability;
+  };
+#endif
+
+  // std::multiset
+  struct multiset_tag :
+    virtual public sorted_associative_container_tag,
+    virtual public simple_associative_container_tag,
+    virtual public multiple_associative_container_tag 
+    { };
+
+  template <class Key, class Cmp, class Alloc> 
+  multiset_tag container_category(const std::multiset<Key,Cmp,Alloc>&)
+  { return multiset_tag(); }
+
+  template <class Key, class Cmp, class Alloc> 
+  stable_tag iterator_stability(const std::multiset<Key,Cmp,Alloc>&)
+  { return stable_tag(); }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+  template <class Key, class Cmp, class Alloc> 
+  struct container_traits< std::multiset<Key,Cmp,Alloc> > {
+    typedef multiset_tag category;
+    typedef stable_tag iterator_stability;
+  };
+#endif
+
+  // deque
+
+  // std::map
+  struct map_tag :
+    virtual public sorted_associative_container_tag,
+    virtual public pair_associative_container_tag,
+    virtual public unique_associative_container_tag 
+    { };
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+  template <class Key, class T, class Cmp, class Alloc> 
+  struct container_traits< std::map<Key,T,Cmp,Alloc> > {
+    typedef map_tag category;
+    typedef stable_tag iterator_stability;
+  };
+#endif
+
+  template <class Key, class T, class Cmp, class Alloc> 
+  map_tag container_category(const std::map<Key,T,Cmp,Alloc>&)
+  { return map_tag(); }
+
+  template <class Key, class T, class Cmp, class Alloc> 
+  stable_tag iterator_stability(const std::map<Key,T,Cmp,Alloc>&)
+  { return stable_tag(); }
+
+  // std::multimap
+  struct multimap_tag :
+    virtual public sorted_associative_container_tag,
+    virtual public pair_associative_container_tag,
+    virtual public multiple_associative_container_tag 
+    { };
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+  template <class Key, class T, class Cmp, class Alloc> 
+  struct container_traits< std::multimap<Key,T,Cmp,Alloc> > {
+    typedef multimap_tag category;
+    typedef stable_tag iterator_stability;
+  };
+#endif
+
+  template <class Key, class T, class Cmp, class Alloc> 
+  multimap_tag container_category(const std::multimap<Key,T,Cmp,Alloc>&)
+  { return multimap_tag(); }
+
+  template <class Key, class T, class Cmp, class Alloc> 
+  stable_tag iterator_stability(const std::multimap<Key,T,Cmp,Alloc>&)
+  { return stable_tag(); }
+
+
+ // hash_set, hash_map
+
+  struct unordered_set_tag :
+    virtual public simple_associative_container_tag,
+    virtual public unique_associative_container_tag
+    { };
+
+  struct unordered_multiset_tag :
+    virtual public simple_associative_container_tag,
+    virtual public multiple_associative_container_tag
+    { };
+
+
+  struct unordered_map_tag :
+    virtual public pair_associative_container_tag,
+    virtual public unique_associative_container_tag
+    { };
+
+  struct unordered_multimap_tag :
+    virtual public pair_associative_container_tag,
+    virtual public multiple_associative_container_tag
+    { };
+
+#if defined BOOST_HAS_HASH
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+  template <class Key, class Eq, class Hash, class Alloc> 
+  struct container_traits<
+    BOOST_STD_EXTENSION_NAMESPACE::hash_set<Key,Eq,Hash,Alloc>
+  > {
+    typedef unordered_set_tag category;
+    typedef unstable_tag iterator_stability;
+  };
+  template <class Key, class T, class Eq, class Hash, class Alloc>
+  struct container_traits<
+    BOOST_STD_EXTENSION_NAMESPACE::hash_map<Key,T,Eq,Hash,Alloc>
+  > {
+    typedef unordered_map_tag category;
+    typedef unstable_tag iterator_stability;
+  };
+  template <class Key, class Eq, class Hash, class Alloc>
+  struct container_traits<
+    BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<Key,Eq,Hash,Alloc>
+  > {
+    typedef unordered_multiset_tag category;
+    typedef unstable_tag iterator_stability;
+  };
+  template <class Key, class T, class Eq, class Hash, class Alloc>
+  struct container_traits<
+    BOOST_STD_EXTENSION_NAMESPACE::hash_multimap<Key,T,Eq,Hash,Alloc>
+  > {
+    typedef unordered_multimap_tag category;
+    typedef unstable_tag iterator_stability;
+  };
+#endif  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+  template <class Key, class Eq, class Hash, class Alloc>
+  unordered_set_tag container_category(
+    const BOOST_STD_EXTENSION_NAMESPACE::hash_set<Key,Eq,Hash,Alloc>&
+  )
+  { return unordered_set_tag(); }
+
+  template <class Key, class T, class Eq, class Hash, class Alloc>
+  unordered_map_tag container_category(
+    const BOOST_STD_EXTENSION_NAMESPACE::hash_map<Key,T,Eq,Hash,Alloc>&
+  )
+  { return unordered_map_tag(); }
+
+  template <class Key, class Eq, class Hash, class Alloc>
+  unstable_tag iterator_stability(
+    const BOOST_STD_EXTENSION_NAMESPACE::hash_set<Key,Eq,Hash,Alloc>&
+  )
+  { return unstable_tag(); }
+
+  template <class Key, class T, class Eq, class Hash, class Alloc>
+  unstable_tag iterator_stability(
+    const BOOST_STD_EXTENSION_NAMESPACE::hash_map<Key,T,Eq,Hash,Alloc>&
+  )
+  { return unstable_tag(); }
+  template <class Key, class Eq, class Hash, class Alloc>
+  unordered_multiset_tag container_category(
+    const BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<Key,Eq,Hash,Alloc>&
+  )
+  { return unordered_multiset_tag(); }
+
+  template <class Key, class T, class Eq, class Hash, class Alloc>
+  unordered_multimap_tag container_category(
+    const BOOST_STD_EXTENSION_NAMESPACE::hash_multimap<Key,T,Eq,Hash,Alloc>&
+  )
+  { return unordered_multimap_tag(); }
+
+  template <class Key, class Eq, class Hash, class Alloc>
+  unstable_tag iterator_stability(
+    const BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<Key,Eq,Hash,Alloc>&
+  )
+  { return unstable_tag(); }
+
+  template <class Key, class T, class Eq, class Hash, class Alloc>
+  unstable_tag iterator_stability(
+    const BOOST_STD_EXTENSION_NAMESPACE::hash_multimap<Key,T,Eq,Hash,Alloc>&
+  )
+  { return unstable_tag(); }
+#endif  // BOOST_HAS_HASH
+
+
+
+  //===========================================================================
+  // Generalized Container Functions
+
+
+  // Erase
+  template <class Sequence, class T>
+  void erase_dispatch(Sequence& c, const T& x, 
+                      sequence_tag)
+  {
+    c.erase(std::remove(c.begin(), c.end(), x), c.end());
+  }
+
+  template <class AssociativeContainer, class T>
+  void erase_dispatch(AssociativeContainer& c, const T& x, 
+                      associative_container_tag)
+  {
+    c.erase(x);
+  }
+  template <class Container, class T>
+  void erase(Container& c, const T& x)
+  {
+    erase_dispatch(c, x, container_category(c));
+  }
+
+  // Erase If
+  template <class Sequence, class Predicate, class IteratorStability>
+  void erase_if_dispatch(Sequence& c, Predicate p,
+                         sequence_tag, IteratorStability)
+  {
+#if 0
+    c.erase(std::remove_if(c.begin(), c.end(), p), c.end());
+#else
+    if (! c.empty())
+      c.erase(std::remove_if(c.begin(), c.end(), p), c.end());
+#endif
+  }
+  template <class AssociativeContainer, class Predicate>
+  void erase_if_dispatch(AssociativeContainer& c, Predicate p,
+                         associative_container_tag, stable_tag)
+  {
+    typename AssociativeContainer::iterator i, next;
+    for (i = next = c.begin(); next != c.end(); i = next) {
+      ++next;
+      if (p(*i))
+        c.erase(i);
+    }
+  }
+  template <class AssociativeContainer, class Predicate>
+  void erase_if_dispatch(AssociativeContainer& c, Predicate p,
+                         associative_container_tag, unstable_tag)
+  {
+    // This method is really slow, so hopefully we won't have any
+    // associative containers with unstable iterators!
+    // Is there a better way to do this?
+    typename AssociativeContainer::iterator i;
+    typename AssociativeContainer::size_type n = c.size();
+    while (n--)
+      for (i = c.begin(); i != c.end(); ++i)
+        if (p(*i)) {
+          c.erase(i);
+          break;
+        }
+  }
+  template <class Container, class Predicate>
+  void erase_if(Container& c, Predicate p)
+  {
+    erase_if_dispatch(c, p, container_category(c), iterator_stability(c));
+  }
+
+  // Push
+  template <class Container, class T>
+  std::pair<typename Container::iterator, bool>
+  push_dispatch(Container& c, const T& v, back_insertion_sequence_tag)
+  {
+    c.push_back(v);
+    return std::make_pair(boost::prior(c.end()), true);
+  }
+
+  template <class Container, class T>
+  std::pair<typename Container::iterator, bool>
+  push_dispatch(Container& c, const T& v, front_insertion_sequence_tag)
+  {
+    c.push_front(v);
+    return std::make_pair(c.begin(), true);
+  }
+
+  template <class AssociativeContainer, class T>
+  std::pair<typename AssociativeContainer::iterator, bool>
+  push_dispatch(AssociativeContainer& c, const T& v, 
+                unique_associative_container_tag)
+  {
+    return c.insert(v);
+  }
+
+  template <class AssociativeContainer, class T>
+  std::pair<typename AssociativeContainer::iterator, bool>
+  push_dispatch(AssociativeContainer& c, const T& v,
+                multiple_associative_container_tag)
+  {
+    return std::make_pair(c.insert(v), true);
+  }
+
+  template <class Container, class T>
+  std::pair<typename Container::iterator,bool>
+  push(Container& c, const T& v)
+  {
+    return push_dispatch(c, v, container_category(c));
+  }
+
+  // Find
+  template <class Container, class Value>
+  typename Container::iterator
+  find_dispatch(Container& c,
+                const Value& value,
+                container_tag)
+  {
+    return std::find(c.begin(), c.end(), value);
+  }
+
+  template <class AssociativeContainer, class Value>
+  typename AssociativeContainer::iterator
+  find_dispatch(AssociativeContainer& c,
+                const Value& value,
+                associative_container_tag)
+  {
+    return c.find(value);
+  }
+
+  template <class Container, class Value>
+  typename Container::iterator
+  find(Container& c,
+       const Value& value)
+  {
+    return find_dispatch(c, value, graph_detail::container_category(c));
+  }
+
+  // Find (const versions)
+  template <class Container, class Value>
+  typename Container::const_iterator
+  find_dispatch(const Container& c,
+                const Value& value,
+                container_tag)
+  {
+    return std::find(c.begin(), c.end(), value);
+  }
+
+  template <class AssociativeContainer, class Value>
+  typename AssociativeContainer::const_iterator
+  find_dispatch(const AssociativeContainer& c,
+                const Value& value,
+                associative_container_tag)
+  {
+    return c.find(value);
+  }
+
+  template <class Container, class Value>
+  typename Container::const_iterator
+  find(const Container& c,
+       const Value& value)
+  {
+    return find_dispatch(c, value, graph_detail::container_category(c));
+  }
+
+  // Equal range
+#if 0
+  // Make the dispatch fail if c is not an Associative Container (and thus
+  // doesn't have equal_range unless it is sorted, which we cannot check
+  // statically and is not typically true for BGL's uses of this function).
+  template <class Container,
+            class LessThanComparable>
+  std::pair<typename Container::iterator, typename Container::iterator>
+  equal_range_dispatch(Container& c,
+                       const LessThanComparable& value,
+                       container_tag)
+  {
+    // c must be sorted for std::equal_range to behave properly.
+    return std::equal_range(c.begin(), c.end(), value);
+  }
+#endif
+
+  template <class AssociativeContainer, class Value>
+  std::pair<typename AssociativeContainer::iterator,
+            typename AssociativeContainer::iterator>
+  equal_range_dispatch(AssociativeContainer& c,
+                       const Value& value,
+                       associative_container_tag)
+  {
+    return c.equal_range(value);
+  }
+
+  template <class Container, class Value>
+  std::pair<typename Container::iterator, typename Container::iterator>
+  equal_range(Container& c,
+              const Value& value)
+  {
+    return equal_range_dispatch(c, value, graph_detail::container_category(c));
+  }
+
+}} // namespace boost::graph_detail
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+// Stay out of the way of concept checking class templates
+# undef Container
+# undef AssociativeContainer
+#endif
+
+#else  // !defined BOOST_MPL_CFG_NO_HAS_XXX
+
+#include <utility>
+#include <boost/mpl/bool.hpp>
+#include <boost/detail/metafunction/is_associative_container.hpp>
+#include <boost/detail/metafunction/is_unique_assoc_container.hpp>
+#include <boost/detail/metafunction/has_stable_iterators.hpp>
+#include <boost/graph/detail/metafunction/is_front_insertion_sequence.hpp>
+
+namespace boost { namespace graph_detail {
+
+    template <typename AC, typename Value>
+    inline void erase_dispatch(AC& c, Value const& value, ::boost::mpl::true_)
+    {
+        c.erase(value);
+    }
+
+    template <typename C, typename Value>
+    inline void erase_dispatch(C& c, Value const& value, ::boost::mpl::false_)
+    {
+        c.erase(::std::remove(c.begin(), c.end(), value), c.end());
+    }
+
+    template <typename C, typename Value>
+    inline void erase(C& c, Value const& value)
+    {
+        erase_dispatch(
+            c
+          , value
+          , ::boost::detail::metafunction::is_associative_container<C>()
+        );
+    }
+
+    template <typename AC, typename Pred>
+    void erase_if_dispatch_assoc(AC& c, Pred p, ::boost::mpl::true_)
+    {
+        typename AC::iterator i, next;
+
+        for (i = next = c.begin(); next != c.end(); i = next)
+        {
+            ++next;
+
+            if (p(*i))
+            {
+                c.erase(i);
+            }
+        }
+    }
+
+    template <typename AC, typename Pred>
+    void erase_if_dispatch_assoc(AC& c, Pred p, ::boost::mpl::false_)
+    {
+        // Major assumption:
+        // The erase(iterator) method of all Associative Containers without
+        // iterator stability returns the next valid iterator.
+        typename AC::iterator i = c.begin();
+
+        while (i != c.end())
+        {
+            if (p(*i))
+            {
+                i = c.erase(i);
+            }
+            else
+            {
+                ++i;
+            }
+        }
+    }
+
+    template <typename AC, typename Pred>
+    inline void erase_if_dispatch(AC& c, Pred p, ::boost::mpl::true_)
+    {
+        erase_if_dispatch_assoc(
+            c
+          , p
+          , ::boost::detail::metafunction::has_stable_iterators<AC>()
+        );
+    }
+
+    template <typename C, typename Pred>
+    inline void erase_if_dispatch(C& c, Pred p, ::boost::mpl::false_)
+    {
+        if (!c.empty())
+        {
+            c.erase(::std::remove_if(c.begin(), c.end(), p), c.end());
+        }
+    }
+
+    template <typename C, typename Pred>
+    inline void erase_if(C& c, Pred p)
+    {
+        erase_if_dispatch(
+            c
+          , p
+          , ::boost::detail::metafunction::is_associative_container<C>()
+        );
+    }
+
+    template <typename AC, typename Value>
+    inline ::std::pair<typename AC::iterator,bool>
+        push_dispatch_associative(
+            AC& c
+          , Value const& value
+          , ::boost::mpl::true_  // is_unique_associative_container
+        )
+    {
+        return c.insert(value);
+    }
+
+    template <typename AC, typename Value>
+    inline ::std::pair<typename AC::iterator,bool>
+        push_dispatch_associative(
+            AC& c
+          , Value const& value
+          , ::boost::mpl::false_  // is_multiple_associative_container
+        )
+    {
+        return std::make_pair(c.insert(value), true);
+    }
+
+    template <typename C, typename Value>
+    inline ::std::pair<typename C::iterator,bool>
+        push_dispatch_sequence(
+            C& c
+          , Value const& value
+          , ::boost::mpl::true_  // is_front_insertion_sequence
+        )
+    {
+        c.push_front(value);
+        return ::std::make_pair(c.begin(), true);
+    }
+
+    template <typename C, typename Value>
+    inline ::std::pair<typename C::iterator,bool>
+        push_dispatch_sequence(
+            C& c
+          , Value const& value
+          , ::boost::mpl::false_  // is_back_insertion_sequence
+        )
+    {
+        c.push_back(value);
+        return ::std::make_pair(::boost::prior(c.end()), true);
+    }
+
+    template <typename AC, typename Value>
+    inline ::std::pair<typename AC::iterator,bool>
+        push_dispatch(
+            AC& c
+          , Value const& value
+          , ::boost::mpl::true_  // is_associative_container
+        )
+    {
+        return push_dispatch_associative(
+            c
+          , value
+          , ::boost::detail::metafunction::is_unique_associative_container<AC>()
+        );
+    }
+
+    template <typename C, typename Value>
+    inline ::std::pair<typename C::iterator,bool>
+        push_dispatch(
+            C& c
+          , Value const& value
+          , ::boost::mpl::false_  // is_sequence
+        )
+    {
+        return push_dispatch_sequence(
+            c
+          , value
+          , ::boost::graph_detail::is_front_insertion_sequence<C>()
+        );
+    }
+
+    template <typename C, typename Value>
+    inline ::std::pair<typename C::iterator,bool>
+        push(C& c, Value const& value)
+    {
+        return push_dispatch(
+            c
+          , value
+          , ::boost::detail::metafunction::is_associative_container<C>()
+        );
+    }
+
+    template <typename AC, typename Value>
+    inline typename AC::iterator
+        find_dispatch(AC& c, Value const& value, ::boost::mpl::true_)
+    {
+        return c.find(value);
+    }
+
+    template <typename C, typename Value>
+    inline typename C::iterator
+        find_dispatch(C& c, Value const& value, ::boost::mpl::false_)
+    {
+        return ::std::find(c.begin(), c.end(), value);
+    }
+
+    template <typename C, typename Value>
+    inline typename C::iterator find(C& c, Value const& value)
+    {
+        return find_dispatch(
+            c
+          , value
+          , ::boost::detail::metafunction::is_associative_container<C>()
+        );
+    }
+
+    template <typename AC, typename Value>
+    inline typename AC::const_iterator
+        find_dispatch(AC const& c, Value const& value, ::boost::mpl::true_)
+    {
+        return c.find(value);
+    }
+
+    template <typename C, typename Value>
+    inline typename C::const_iterator
+        find_dispatch(C const& c, Value const& value, ::boost::mpl::false_)
+    {
+        return ::std::find(c.begin(), c.end(), value);
+    }
+
+    template <typename C, typename Value>
+    inline typename C::const_iterator find(C const& c, Value const& value)
+    {
+        return find_dispatch(
+            c
+          , value
+          , ::boost::detail::metafunction::is_associative_container<C>()
+        );
+    }
+
+    template <typename AC, typename Value>
+    inline ::std::pair<typename AC::iterator,typename AC::iterator>
+        equal_range_dispatch(AC& c, Value const& value, ::boost::mpl::true_)
+    {
+        return c.equal_range(value);
+    }
+
+#if 0
+    // Make the dispatch fail if c is not an Associative Container (and thus
+    // doesn't have equal_range unless it is sorted, which we cannot check
+    // statically and is not typically true for BGL's uses of this function).
+    template <typename AC, typename Value>
+    inline ::std::pair<typename AC::iterator,typename AC::iterator>
+        equal_range_dispatch(AC& c, Value const& value, ::boost::mpl::false_)
+    {
+        return ::std::equal_range(c.begin(), c.end(), value);
+    }
+#endif
+
+    template <typename C, typename Value>
+    inline ::std::pair<typename C::iterator,typename C::iterator>
+        equal_range(C& c, Value const& value)
+    {
+        return equal_range_dispatch(
+            c
+          , value
+          , ::boost::detail::metafunction::is_associative_container<C>()
+        );
+    }
+
+}} // namespace boost::graph_detail
+
+#endif  // BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif  // BOOST_GRAPH_DETAIL_CONTAINER_TRAITS_H
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulator_base.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulator_base.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,21 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_BASE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_BASE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/framework/accumulators_base.hpp>
+#include <boost/typeof/accumulators/framework/accumulator_concept.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::detail::void_)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::dont_care)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::accumulator_base)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_BASE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulator_concept.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulator_concept.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATOR_CONCEPT_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATOR_CONCEPT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/framework/accumulator_concept.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::accumulator_concept, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATOR_CONCEPT_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulator_set.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulator_set.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,31 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATOR_SET_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATOR_SET_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/framework/accumulator_set.hpp>
+#include <boost/typeof/boost/accumulators/framework/depends_on.hpp>
+#include <boost/typeof/boost/accumulators/framework/accumulator_concept.hpp>
+#include <boost/typeof/boost/accumulators/framework/accumulators/external_accumulator.hpp>
+#include <boost/typeof/boost/accumulators/framework/accumulators/droppable_accumulator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::accumulator_visitor
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::detail::accumulator_params)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::detail::accumulator_set_base)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::is_accumulator_set
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::accumulator_set, 3)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATOR_SET_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/droppable_accumulator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/droppable_accumulator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,31 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_DROPPABLE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_DROPPABLE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/framework/accumulators/droppable_accumulator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::add_ref_visitor
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::detail::accumulator_params)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::detail::accumulator_set_base)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::detail::drop_visitor, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::droppable_accumulator_base
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::droppable_accumulator, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::with_cached_result, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::as_droppable, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::droppable, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_DROPPABLE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/external_accumulator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/external_accumulator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,18 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_EXTERNAL_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_EXTERNAL_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/framework/accumulators/reference_accumulator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::external_impl, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::external, 3)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_EXTERNAL_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/reference_accumulator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/reference_accumulator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_REFERENCE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_REFERENCE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/framework/accumulators/reference_accumulator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::reference_accumulator_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::reference_tag, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::reference, 2)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_REFERENCE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/value_accumulator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/framework/accumulators/value_accumulator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_VALUE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_VALUE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/framework/accumulators/value_accumulator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::value_accumulator_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::value_tag, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::value, 2)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_ACCUMULATORS_VALUE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/framework/depends_on.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/framework/depends_on.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,118 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_DEPENDS_ON_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_DEPENDS_ON_HPP
+
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/framework/depends_on.hpp>
+
+namespace boost { namespace accumulators {
+
+    typedef depends_on<> depends_on_nothing;
+}}
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::as_feature, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::as_weighted_feature, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::feature_of, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::detail::feature_tag, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::detail::undroppable, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::is_dependent_on
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::dependencies_of
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::set_insert_range
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::collect_abstract_features
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::depends_on_base
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::matches_feature
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::contains_feature_of
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::contains_feature_of_
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::build_acc_list
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::build_acc_list
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::meta::make_acc_list
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::checked_as_weighted_feature
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::as_feature_list
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::accumulator_wrapper
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::to_accumulator
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::insert_feature
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::insert_dependencies
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::insert_sequence
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::make_accumulator_tuple
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::depends_on_nothing)
+
+#define BOOST_TYPEOF_REGISTER_BOOST_ACCUMULATORS_TEMPLATE(z, n, Type)        \
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::Type, BOOST_PP_INC(n)) \
+//
+
+BOOST_PP_REPEAT(
+    BOOST_PP_DEC(BOOST_ACCUMULATORS_MAX_FEATURES)
+  , BOOST_TYPEOF_REGISTER_BOOST_ACCUMULATORS_TEMPLATE
+  , depends_on
+)
+
+#undef BOOST_TYPEOF_REGISTER_BOOST_ACCUMULATORS_TEMPLATE
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_DEPENDS_ON_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/framework/extractor.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/framework/extractor.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,29 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_EXTRACTOR_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_EXTRACTOR_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::accumulator_set_result
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::argument_pack_result
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::extractor_result
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::extractor, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_FRAMEWORK_EXTRACTOR_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/framework/features.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/framework/features.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_FEATURES_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_FEATURES_HPP
+
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/framework/features.hpp>
+
+namespace boost { namespace accumulators {
+
+    typedef features<> no_features;
+}}  // namespace boost::accumulators
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::no_features)
+
+#define BOOST_TYPEOF_REGISTER_BOOST_ACCUMULATORS_TEMPLATE(z, n, Type)        \
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::Type, BOOST_PP_INC(n)) \
+//
+
+BOOST_PP_REPEAT(
+    BOOST_PP_DEC(BOOST_ACCUMULATORS_MAX_FEATURES)
+  , BOOST_TYPEOF_REGISTER_BOOST_ACCUMULATORS_TEMPLATE
+  , features
+)
+
+#undef BOOST_TYPEOF_REGISTER_BOOST_ACCUMULATORS_TEMPLATE
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_FEATURES_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/count.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/count.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_COUNT_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_COUNT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/count.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::impl::count_impl)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::count)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_COUNT_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/covariance.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/covariance.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,32 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_COVARIANCE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_COVARIANCE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/covariance.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::numeric::functional::outer_product_base
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::numeric::functional::outer_product_base
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::numeric::functional::outer_product, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::numeric::functional::outer_product, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::numeric::functional::outer_product, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::numeric::op::outer_product)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::covariance_impl, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::covariance, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::abstract_covariance)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_COVARIANCE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/density.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/density.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_DENSITY_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_DENSITY_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/density.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::density_impl, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::density)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_DENSITY_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/error_of.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/error_of.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,23 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ERROR_OF_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ERROR_OF_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/error_of.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::this_feature_has_no_error_calculation
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::error_of_impl, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::error_of, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ERROR_OF_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/error_of_mean.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/error_of_mean.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ERROR_OF_MEAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ERROR_OF_MEAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/error_of_mean.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+#include <boost/typeof/boost/accumulators/statistics/error_of.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::error_of_mean_impl
+  , 2
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ERROR_OF_MEAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/extended_p_square.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/extended_p_square.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_EXTENDED_P_SQUARE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_EXTENDED_P_SQUARE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/extended_p_square.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::extended_p_square_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::extended_p_square)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_EXTENDED_P_SQUARE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/extended_p_square_quantile.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/extended_p_square_quantile.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,33 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_EXTENDED_SINGLE_QUANTILE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_EXTENDED_SINGLE_QUANTILE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/extended_p_square_quantile.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::extended_p_square_quantile_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::extended_p_square_quantile
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::extended_p_square_quantile_quadratic
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::weighted_extended_p_square_quantile
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::weighted_extended_p_square_quantile_quadratic
+)
+
+#endif  // header include guard
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/kurtosis.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/kurtosis.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_KURTOSIS_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_KURTOSIS_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/kurtosis.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::kurtosis_impl, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::kurtosis)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_KURTOSIS_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/max.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/max.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MAX_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MAX_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/max.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::max_impl, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::max)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MAX_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/mean.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/mean.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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)
+
+#ifndef BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MEAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MEAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/mean.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::mean_impl, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::immediate_mean_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::mean)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::immediate_mean)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::mean_of_weights)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::immediate_mean_of_weights
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::mean_of_variates
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::immediate_mean_of_variates
+  , 2
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MEAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/median.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/median.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,31 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MEDIAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MEDIAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/median.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::median_impl, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::with_density_median_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+::boost::accumulators::impl::with_p_square_cumulative_distribution_median_impl
+, 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::mean)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::with_density_median)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::with_p_square_cumulative_distribution_median
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MEDIAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/min.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/min.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MIN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MIN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/min.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::min_impl, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::min)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MIN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/moment.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/moment.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MOMENT_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MOMENT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/moment.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::moment_impl, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::moment, (int))
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_MOMENT_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/p_square_cumul_dist.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/p_square_cumul_dist.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,24 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_P_SQUARE_CUMUL_DIST_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_P_SQUARE_CUMUL_DIST_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/p_square_cumul_dist.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::p_square_cumulative_distribution_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::p_square_cumulative_distribution
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_P_SQUARE_CUMUL_DIST_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/p_square_quantile.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/p_square_quantile.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,25 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_P_SQUARE_QUANTILE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_P_SQUARE_QUANTILE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/p_square_quantile.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::p_square_quantile_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::p_square_quantile)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::p_square_quantile_for_median
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_P_SQUARE_QUANTILE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/peaks_over_threshold.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/peaks_over_threshold.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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)
+
+#ifndef BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_PEAKS_OVER_THRESHOLD_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_PEAKS_OVER_THRESHOLD_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/peaks_over_threshold.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::peaks_over_threshold_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::peaks_over_threshold_prob_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::peaks_over_threshold
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::peaks_over_threshold_prob
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::abstract_peaks_over_threshold
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_PEAKS_OVER_THRESHOLD_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/pot_quantile.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/pot_quantile.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,34 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_POT_QUANTILE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_POT_QUANTILE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/pot_quantile.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::pot_quantile_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::pot_quantile, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::pot_quantile_prob
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_pot_quantile
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_pot_quantile_prob
+  , 1
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_POT_QUANTILE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/pot_tail_mean.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/pot_tail_mean.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,34 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_POT_TAIL_MEAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_POT_TAIL_MEAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/pot_tail_mean.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::pot_tail_mean_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::pot_tail_mean, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::pot_tail_mean_prob
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_pot_tail_mean
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_pot_tail_mean_prob
+  , 1
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_POT_TAIL_MEAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_count.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_count.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_COUNT_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_COUNT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/rolling_count.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::rolling_count_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::rolling_count)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_COUNT_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_mean.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_mean.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_MEAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_MEAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/rolling_mean.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::rolling_mean_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::rolling_mean)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_MEAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_sum.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_sum.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_SUM_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_SUM_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/rolling_sum.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::rolling_sum_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::rolling_sum)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_SUM_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_window.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/rolling_window.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_WINDOW_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_WINDOW_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/rolling_window.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::rolling_window_plus1_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::rolling_window_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::rolling_window_plus1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::rolling_window)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_ROLLING_WINDOW_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/skewness.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/skewness.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_SKEWNESS_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_SKEWNESS_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/skewness.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::skewness_impl, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::skewness)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_SKEWNESS_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/stats.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/stats.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_STATS_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_STATS_HPP
+
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/stats.hpp>
+
+namespace boost { namespace accumulators {
+
+    typedef stats<> no_stats;
+}}  // namespace boost::accumulators
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::no_stats)
+
+#define BOOST_TYPEOF_REGISTER_BOOST_ACCUMULATORS_TEMPLATE(z, n, Type)        \
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::Type, BOOST_PP_INC(n)) \
+//
+
+BOOST_PP_REPEAT(
+    BOOST_PP_DEC(BOOST_ACCUMULATORS_MAX_FEATURES)
+  , BOOST_TYPEOF_REGISTER_BOOST_ACCUMULATORS_TEMPLATE
+  , stats
+)
+
+#undef BOOST_TYPEOF_REGISTER_BOOST_ACCUMULATORS_TEMPLATE
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_STATS_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/sum.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/sum.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,24 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_SUM_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_SUM_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/sum.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::sum_impl, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::sum)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::sum_of_weights)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::sum_of_variates, 2)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::abstract_sum_of_variates
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_SUM_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/sum_kahan.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/sum_kahan.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_SUM_KAHAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_SUM_KAHAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/sum_kahan.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::sum_kahan_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::sum_kahan)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::sum_of_weights_kahan)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::sum_of_variates_kahan
+  , 2
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_SUM_KAHAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,33 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/tail.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::detail::tail_range, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::stat_assign_visitor
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::is_tail_variate_feature
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::impl::tail_impl, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tail_cache_size_named_arg
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::tail, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::abstract_tail)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_mean.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_mean.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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)
+
+#ifndef BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_MEAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_MEAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/tail_mean.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::coherent_tail_mean_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::non_coherent_tail_mean_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::coherent_tail_mean
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::non_coherent_tail_mean
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::abstract_non_coherent_tail_mean
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_MEAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_quantile.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_quantile.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_QUANTILE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_QUANTILE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/tail_quantile.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::tail_quantile_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::accumulators::tag::tail_quantile, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_QUANTILE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_variate.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_variate.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,31 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_VARIATE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_VARIATE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/tail_variate.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::tail_variate_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::tail_variate
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::abstract_tail_variate)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::tail_weights
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::abstract_tail_weights)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_VARIATE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_variate_means.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/tail_variate_means.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_VARIATE_MEANS_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_VARIATE_MEANS_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/tail_variate_means.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::tail_variate_means_impl
+  , 4
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::absolute_tail_variate_means
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::relative_tail_variate_means
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::abstract_absolute_tail_variate_means
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::abstract_relative_tail_variate_means
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TAIL_VARIATE_MEANS_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/times2_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/times2_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,21 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TIMES2_ITERATOR_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TIMES2_ITERATOR_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/times2_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::detail::times2_iterator)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::detail::lvalue_index_iterator
+  , 1
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_TIMES2_ITERATOR_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/variance.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/variance.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_VARIANCE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_VARIANCE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/variance.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::lazy_variance_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::variance_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::lazy_variance)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::variance)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_VARIANCE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_covariance.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_covariance.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,25 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_COVARIANCE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_COVARIANCE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_covariance.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_covariance_impl
+  , 4
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_covariance
+  , 2
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_COVARIANCE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_density.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_density.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_DENSITY_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_DENSITY_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_density.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_density_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::weighted_density)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_DENSITY_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_extended_p_square.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_extended_p_square.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,24 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATS_WEIGHTED_EXTENDED_P_SQUARE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATS_WEIGHTED_EXTENDED_P_SQUARE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_extended_p_square.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_extended_p_square_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::weighted_extended_p_square
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATS_WEIGHTED_EXTENDED_P_SQUARE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_kurtosis.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_kurtosis.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_KURTOSIS_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_KURTOSIS_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_kurtosis.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_kurtosis_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::weighted_kurtosis)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_KURTOSIS_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_mean.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_mean.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_MEAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_MEAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_mean.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_mean_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::immediate_weighted_mean_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::weighted_mean)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::immediate_weighted_mean)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_mean_of_variates
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::immediate_weighted_mean_of_variates
+  , 2
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_MEAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_median.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_median.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,38 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_MEDIAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_MEDIAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_median.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_median_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::with_density_weighted_median_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl
+    ::with_p_square_cumulative_distribution_weighted_median_impl
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::weighted_median)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::with_density_weighted_median
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag
+    ::with_p_square_cumulative_distribution_weighted_median
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_MEDIAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_moment.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_moment.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,25 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_MOMENT_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_MOMENT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_moment.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_moment_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_moment
+  , (int)
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_MOMENT_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,24 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATS_WEIGHTED_P_SQUARE_CUMUL_DIST_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATS_WEIGHTED_P_SQUARE_CUMUL_DIST_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_p_square_cumulative_distribution_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::weighted_p_square_cumulative_distribution
+)
+
+#endif  // header include guard
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_p_square_cumulative_distribution.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,19 @@
+///////////////////////////////////////////////////////////////////////////////
+// weighted_p_square_cumulative_distribution.hpp
+//
+//  Copyright 2012 Eric Niebler. 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_ACCUMULATORS_STATISTICS_WEIGHTED_P_SQUARE_CUMULATIVE_DISTRIBUTION_HPP_03_19_2012
+#define BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_P_SQUARE_CUMULATIVE_DISTRIBUTION_HPP_03_19_2012
+
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__)
+#  pragma message ("Warning: This header is deprecated. Please use: boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp")
+#elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__)
+#  warning "This header is deprecated. Please use: boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp"
+#endif
+
+#include <boost/accumulators/statistics/weighted_p_square_cumul_dist.hpp>
+
+#endif
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_p_square_quantile.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_p_square_quantile.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATS_WEIGHTED_P_SQUARE_QUANTILE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATS_WEIGHTED_P_SQUARE_QUANTILE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_p_square_quantile.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_p_square_quantile_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::weighted_p_square_quantile
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::weighted_p_square_quantile_for_median
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATS_WEIGHTED_P_SQUARE_QUANTILE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_peaks_over_threshold.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_peaks_over_threshold.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,33 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_PO_THRESHOLD_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_PO_THRESHOLD_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_peaks_over_threshold.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_peaks_over_threshold_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_peaks_over_threshold_prob_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_peaks_over_threshold
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_peaks_over_threshold_prob
+  , 1
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_PO_THRESHOLD_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_skewness.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_skewness.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_SKEWNESS_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_SKEWNESS_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_skewness.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_skewness_impl
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::weighted_skewness)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_SKEWNESS_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_sum.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_sum.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,29 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_SUM_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_SUM_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_sum.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_sum_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::weighted_sum)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_sum_of_variates
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+    ::boost::accumulators::tag::abstract_weighted_sum_of_variates
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_SUM_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_sum_kahan.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_sum_kahan.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,26 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_SUM_KAHAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_SUM_KAHAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_sum_kahan.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_sum_kahan_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::weighted_sum_kahan)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_sum_of_variates_kahan
+  , 2
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_SUM_KAHAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_tail_mean.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_tail_mean.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_TAIL_MEAN_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_TAIL_MEAN_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_tail_mean.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+/*
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::coherent_weighted_tail_mean_impl
+  , 3
+)
+*/
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::non_coherent_weighted_tail_mean_impl
+  , 3
+)
+/*
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::coherent_weighted_tail_mean
+  , 1
+)
+*/
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::non_coherent_weighted_tail_mean
+  , 1
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_TAIL_MEAN_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_tail_quantile.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_tail_quantile.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,25 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_TAIL_QUANTILE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_TAIL_QUANTILE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_tail_quantile.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_tail_quantile_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::weighted_tail_quantile
+  , 1
+)
+
+#endif  // header include guard
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_tail_variate_means.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_tail_variate_means.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,33 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATS_WEIGHTED_TAIL_VARIATE_MEANS_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATS_WEIGHTED_TAIL_VARIATE_MEANS_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_tail_variate_means.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::numeric::functional::multiply_and_promote_to_double
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_tail_variate_means_impl
+  , 4
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::absolute_weighted_tail_variate_means
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::tag::relative_weighted_tail_variate_means
+  , 3
+)
+
+#endif  // header include guard
+
Added: sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_variance.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/accumulators/statistics/weighted_variance.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_VARIANCE_HPP
+#define BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_VARIANCE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/accumulators/statistics/weighted_variance.hpp>
+#include <boost/typeof/boost/accumulators/framework/extractor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::lazy_weighted_variance_impl
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::accumulators::impl::weighted_variance_impl
+  , 4
+)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::lazy_weighted_variance)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::accumulators::tag::weighted_variance)
+
+#endif  // BOOST_TYPEOF_BOOST_ACCUMULATORS_STATISTICS_WEIGHTED_VARIANCE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/array.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/array.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ARRAY_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_ARRAY_HPP_INCLUDED
+
+#include <boost/array.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::array
+  , (typename)(BOOST_TYPEOF_INTEGRAL(::std::size_t))
+)
+
+#endif  // BOOST_TYPEOF_BOOST_ARRAY_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/allocator_traits.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/allocator_traits.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_CONTAINER_ALLOCATOR_TRAITS_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_ALLOCATOR_TRAITS_HPP_INCLUDED
+
+#include <boost/container/allocator_traits.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::allocator_traits, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_ALLOCATOR_TRAITS_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/deque.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/deque.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_CONTAINER_DEQUE_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_DEQUE_INCLUDED
+
+#include <boost/container/deque.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/std/iterator.hpp>
+#include <boost/typeof/boost/container/allocator_traits.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::deque_base, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::deque, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::deque, 2)
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_DEQUE_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/flat_map.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/flat_map.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,25 @@
+// 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_TYPEOF_BOOST_CONTAINER_FLAT_MAP_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_FLAT_MAP_HPP_INCLUDED
+
+#include <boost/container/flat_map.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/utility.hpp>
+#include <boost/typeof/std/memory.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_map, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_map, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_map, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_multimap, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_multimap, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_multimap, 4)
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_FLAT_MAP_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/flat_set.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/flat_set.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,24 @@
+// 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_TYPEOF_BOOST_CONTAINER_FLAT_SET_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_FLAT_SET_HPP_INCLUDED
+
+#include <boost/container/flat_set.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/memory.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_set, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_set, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_set, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_multiset, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_multiset, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::flat_multiset, 3)
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_FLAT_SET_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/list.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/list.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,21 @@
+// 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_TYPEOF_BOOST_CONTAINER_LIST_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_LIST_INCLUDED
+
+#include <boost/container/list.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/std/iterator.hpp>
+#include <boost/typeof/boost/container/allocator_traits.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::list, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::list, 2)
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_LIST_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/map.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/map.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,25 @@
+// 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_TYPEOF_BOOST_CONTAINER_MAP_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_MAP_HPP_INCLUDED
+
+#include <boost/container/map.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/utility.hpp>
+#include <boost/typeof/std/memory.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::map, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::map, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::map, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::multimap, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::multimap, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::multimap, 4)
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_MAP_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/set.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/set.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,24 @@
+// 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_TYPEOF_BOOST_CONTAINER_SET_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_SET_HPP_INCLUDED
+
+#include <boost/container/set.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/memory.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::set, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::set, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::set, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::multiset, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::multiset, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::multiset, 3)
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_SET_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/slist.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/slist.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_CONTAINER_SLIST_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_SLIST_HPP_INCLUDED
+
+#include <boost/container/slist.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/boost/container/allocator_traits.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::slist, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::slist, 2)
+
+#endif//BOOST_TYPEOF_BOOST_CONTAINER_SLIST_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/stable_vector.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/stable_vector.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,25 @@
+// 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_TYPEOF_BOOST_CONTAINER_STABLE_VECTOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_STABLE_VECTOR_HPP_INCLUDED
+
+#include <boost/container/stable_vector.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/std/iterator.hpp>
+#include <boost/typeof/boost/container/allocator_traits.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::container::stable_vector_detail::iterator
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::stable_vector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::stable_vector, 2)
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_STABLE_VECTOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/string.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/string.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_BOOST_CONTAINER_STRING_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_STRING_HPP_INCLUDED
+
+#include <boost/container/string.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/std/string.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::basic_string, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::basic_string, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::basic_string, 3)
+
+#ifndef __BORLANDC__
+//Borland chokes on these "double definitions" of string and wstring
+BOOST_TYPEOF_REGISTER_TYPE(::boost::container::string)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::container::wstring)
+#endif
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_STRING_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container/vector.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container/vector.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,29 @@
+// 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_TYPEOF_BOOST_CONTAINER_VECTOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_VECTOR_HPP_INCLUDED
+
+#include <boost/container/vector.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/std/iterator.hpp>
+#include <boost/typeof/boost/container/allocator_traits.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::container::container_detail::vector_const_iterator
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::container::container_detail::vector_iterator
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::vector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::container::vector, 2)
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_VECTOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container_gen/c_str_cmp_selectors.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container_gen/c_str_cmp_selectors.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+//=============================================================================
+// 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_TYPEOF_BOOST_CONTAINER_GEN_C_STR_CMP_SELECTORS_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_GEN_C_STR_CMP_SELECTORS_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/container_gen/c_str_cmp_selectors.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::c_str_equal_to_selector);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::c_str_less_than_selector);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::c_str_greater_than_selector);
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_GEN_C_STR_CMP_SELECTORS_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/container_gen/selectors.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/container_gen/selectors.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,237 @@
+//=============================================================================
+// 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_TYPEOF_BOOST_CONTAINER_GEN_SELECTORS_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_CONTAINER_GEN_SELECTORS_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/container_gen/selectors.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/parameter/aux_/void.hpp>
+#endif
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::equal_to_selector);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::less_than_selector);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::greater_than_selector);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::boost_hash_selector);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tr1_hash_selector);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::std_allocator_selector);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::std_flat_allocator_selector);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::vector_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::vector_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::vector_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::vecS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::deque_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::deque_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::deque_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::dequeS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::list_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::list_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::list_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::listS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::set_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::set_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::set_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::set_selector, 3)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::setS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::map_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::map_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::map_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::map_selector, 3)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::mapS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::multiset_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::multiset_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::multiset_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::multiset_selector, 3)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::multisetS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::multimap_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::multimap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::multimap_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::multimap_selector, 3)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::multimapS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_vector_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_vector_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_vector_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_vecS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_deque_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_deque_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_deque_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_dequeS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_list_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_list_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_list_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_listS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_set_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_set_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_set_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_set_selector, 3)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_setS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_map_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_map_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_map_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_map_selector, 3)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_mapS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multiset_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multiset_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multiset_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multiset_selector, 3)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_multisetS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multimap_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multimap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multimap_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multimap_selector, 3)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_multimapS);
+
+#if !defined BOOST_MSVC
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::array_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::array_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_array_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_array_selector, 2)
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || \
+    !defined BOOST_NO_SLIST
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::slist_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::slist_selector, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::slistS);
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_set_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_set_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_set_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_set_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_set_selector, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::hash_setS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_map_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_map_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_map_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_map_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_map_selector, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::hash_mapS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_multiset_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_multiset_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_multiset_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_multiset_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_multiset_selector, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::hash_multisetS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_multimap_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_multimap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_multimap_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_multimap_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash_multimap_selector, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::hash_multimapS);
+#endif  // supports partial specialization or has SGI hash
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::stable_vector_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::stable_vector_selector, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::stable_vecS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_set_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_set_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_set_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::flat_setS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_map_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_map_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_map_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::flat_mapS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_multiset_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_multiset_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_multiset_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::flat_multisetS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_multimap_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_multimap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::flat_multimap_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::flat_multimapS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_set_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_set_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_set_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_set_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_set_selector, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_hash_setS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_map_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_map_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_map_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_map_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_map_selector, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_hash_mapS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_multiset_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_multiset_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_multiset_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_multiset_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_multiset_selector, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_hash_multisetS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_multimap_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_multimap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_multimap_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_multimap_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_hash_multimap_selector, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ptr_hash_multimapS);
+#endif  // !BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::stack_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::stack_selector, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::stackS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::queue_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::queue_selector, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::queueS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::std_heap_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::std_heap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::std_heap_selector, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::std_heapS);
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::priority_queue_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::priority_queue_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::priority_queue_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::priority_queue_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::priority_queue_selector, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::priority_queueS);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::d_ary_heap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::d_ary_heap_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::d_ary_heap_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::d_ary_heap_selector, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::d_ary_heap_selector, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::d_ary_heap_selector, 6)
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::binomial_heap_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::binomial_heap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::binomial_heap_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::binomial_heap_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::binomial_heap_selector, 4)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::binomial_heapS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::fibonacci_heap_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::fibonacci_heap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::fibonacci_heap_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::fibonacci_heap_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::fibonacci_heap_selector, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::fibonacci_heap_selector, 5)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::fibonacci_heapS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::pairing_heap_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::pairing_heap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::pairing_heap_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::pairing_heap_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::pairing_heap_selector, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::pairing_heap_selector, 5)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::pairing_heapS);
+//BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::skew_heap_selector, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::skew_heap_selector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::skew_heap_selector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::skew_heap_selector, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::skew_heap_selector, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::skew_heap_selector, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::skew_heap_selector, 6)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::skew_heapS);
+#endif  // !BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif  // BOOST_TYPEOF_BOOST_CONTAINER_GEN_SELECTORS_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/function.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/function.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,61 @@
+// 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_TYPEOF_BOOST_FUNCTION_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_FUNCTION_HPP_INCLUDED
+
+#include <boost/function.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function, 1)
+
+#if BOOST_FUNCTION_MAX_ARGS >= 0
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function0, 1)
+#endif
+
+#if BOOST_FUNCTION_MAX_ARGS >= 1
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function1, 2)
+#endif
+
+#if BOOST_FUNCTION_MAX_ARGS >= 2
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function2, 3)
+#endif
+
+#if BOOST_FUNCTION_MAX_ARGS >= 3
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function3, 4)
+#endif
+
+#if BOOST_FUNCTION_MAX_ARGS >= 4
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function4, 5)
+#endif
+
+#if BOOST_FUNCTION_MAX_ARGS >= 5
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function5, 6)
+#endif
+
+#if BOOST_FUNCTION_MAX_ARGS >= 6
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function6, 7)
+#endif
+
+#if BOOST_FUNCTION_MAX_ARGS >= 7
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function7, 8)
+#endif
+
+#if BOOST_FUNCTION_MAX_ARGS >= 8
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function8, 9)
+#endif
+
+#if BOOST_FUNCTION_MAX_ARGS >= 9
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function9, 10)
+#endif
+
+#if BOOST_FUNCTION_MAX_ARGS >= 10
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function10, 11)
+#endif
+
+#endif  // BOOST_TYPEOF_BOOST_FUNCTION_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/function_output_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/function_output_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_FUNCTION_OUTPUT_ITERATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_FUNCTION_OUTPUT_ITERATOR_HPP_INCLUDED
+
+#include <boost/function_output_iterator.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::function_output_iterator, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_FUNCTION_OUTPUT_ITERATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/functional/hash.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/functional/hash.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_FUNCTIONAL_HASH_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_FUNCTIONAL_HASH_HPP_INCLUDED
+
+#include <boost/functional/hash.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::hash, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_FUNCTIONAL_HASH_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/heap/binomial_heap.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/binomial_heap.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_BOOST_HEAP_BINOMIAL_HEAP_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_BINOMIAL_HEAP_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/void.hpp>
+#include <boost/typeof/boost/heap/detail/heap_comparison.hpp>
+#include <boost/typeof/boost/heap/detail/heap_node.hpp>
+#include <boost/typeof/boost/heap/detail/stable_heap.hpp>
+#include <boost/typeof/boost/heap/detail/tree_iterator.hpp>
+#include <boost/heap/binomial_heap.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::binomial_heap, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::binomial_heap, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::binomial_heap, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::binomial_heap, 4);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::binomial_heap, 5);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_BINOMIAL_HEAP_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/d_ary_heap.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/d_ary_heap.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,28 @@
+// 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_TYPEOF_BOOST_HEAP_D_ARY_HEAP_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_D_ARY_HEAP_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/void.hpp>
+#include <boost/typeof/boost/heap/detail/heap_comparison.hpp>
+#include <boost/typeof/boost/heap/detail/ordered_adaptor_iterator.hpp>
+#include <boost/typeof/boost/heap/detail/stable_heap.hpp>
+#include <boost/typeof/boost/heap/detail/mutable_heap.hpp>
+#include <boost/heap/d_ary_heap.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::d_ary_heap, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::d_ary_heap, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::d_ary_heap, 4);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::d_ary_heap, 5);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::d_ary_heap, 6);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::d_ary_heap, 7);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_D_ARY_HEAP_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/detail/heap_comparison.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/detail/heap_comparison.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_HEAP_DETAIL_HEAP_COMPARISON_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_DETAIL_HEAP_COMPARISON_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/heap/detail/heap_comparison.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::detail::heap_equivalence_copy);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::detail::heap_equivalence_iteration);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::detail::heap_compare_iteration);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::detail::heap_compare_copy);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_DETAIL_HEAP_COMPARISON_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/detail/heap_node.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/detail/heap_node.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_HEAP_DETAIL_HEAP_NODE_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_DETAIL_HEAP_NODE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/heap/detail/heap_node.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::heap_node_base
+  , (BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::detail::nop_disposer);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::node_cloner, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::node_disposer, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::heap_node, (typename));
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::heap_node
+  , (typename)(BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::parent_pointing_heap_node
+  , 1
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::marked_heap_node, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::cmp_by_degree, 1);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_DETAIL_HEAP_NODE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/detail/ilog2.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/detail/ilog2.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,18 @@
+// 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_TYPEOF_BOOST_HEAP_DETAIL_ILOG2_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_DETAIL_ILOG2_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/heap/detail/ilog2.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::log2, 1);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_DETAIL_ILOG2_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/detail/mutable_heap.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/detail/mutable_heap.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,26 @@
+// 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_TYPEOF_BOOST_HEAP_DETAIL_MUTABLE_HEAP_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_DETAIL_MUTABLE_HEAP_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/list.hpp>
+#include <boost/typeof/std/utility.hpp>
+#include <boost/typeof/boost/noncopyable.hpp>
+#include <boost/typeof/boost/iterator/iterator_adaptor.hpp>
+#include <boost/typeof/boost/heap/detail/ordered_adaptor_iterator.hpp>
+#include <boost/heap/detail/mutable_heap.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::priority_queue_mutable_wrapper
+  , 1
+);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_DETAIL_MUTABLE_HEAP_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/detail/ordered_adaptor_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/detail/ordered_adaptor_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_HEAP_DETAIL_ORDERED_ADAPTOR_ITERATOR_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_DETAIL_ORDERED_ADAPTOR_ITERATOR_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/iterator/iterator_adaptor.hpp>
+#include <boost/typeof/boost/heap/detail/tree_iterator.hpp>
+#include <boost/heap/detail/ordered_adaptor_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::ordered_adaptor_iterator
+  , 6
+);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_DETAIL_ORDERED_ADAPTOR_ITERATOR_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/detail/stable_heap.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/detail/stable_heap.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,48 @@
+// 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_TYPEOF_BOOST_HEAP_DETAIL_STABLE_HEAP_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_DETAIL_STABLE_HEAP_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/utility.hpp>
+#include <boost/typeof/boost/iterator/iterator_adaptor.hpp>
+#include <boost/typeof/boost/heap/policies.hpp>
+#include <boost/heap/detail/stable_heap.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::size_holder
+  , (BOOST_TYPEOF_INTEGRAL(bool))(typename)
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::heap_base
+  , (typename)(typename)(BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::heap_base
+  , (typename)(typename)(BOOST_TYPEOF_INTEGRAL(bool))(typename)
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::heap_base
+  , (typename)(typename)(BOOST_TYPEOF_INTEGRAL(bool))(typename)
+    (BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::node_handle, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::value_extractor, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::stable_heap_iterator, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::make_heap_base
+  , (typename)(typename)(BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::extract_allocator_types
+  , 1
+);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_DETAIL_STABLE_HEAP_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/detail/tree_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/detail/tree_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_HEAP_DETAIL_TREE_ITERATOR_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_DETAIL_TREE_ITERATOR_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/vector.hpp>
+#include <boost/typeof/std/queue.hpp>
+#include <boost/typeof/boost/iterator/iterator_adaptor.hpp>
+#include <boost/heap/detail/tree_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::identity, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::caster, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::dereferencer, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::pointer_to_reference, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::unordered_tree_iterator_storage
+  , 3
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::ordered_tree_iterator_storage
+  , 5
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::list_iterator_converter
+  , 2
+);
+#if 0
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::tree_iterator
+  , (typename)(typename)
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::tree_iterator
+  , (typename)(typename)(typename)
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::tree_iterator
+  , (typename)(typename)(typename)(typename)
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::tree_iterator
+  , (typename)(typename)(typename)(typename)(typename)
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::tree_iterator
+  , (typename)(typename)(typename)(typename)(typename)
+    (BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::tree_iterator
+  , (typename)(typename)(typename)(typename)(typename)
+    (BOOST_TYPEOF_INTEGRAL(bool))(BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::tree_iterator
+  , (typename)(typename)(typename)(typename)(typename)
+    (BOOST_TYPEOF_INTEGRAL(bool))(BOOST_TYPEOF_INTEGRAL(bool))(typename)
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::recursive_tree_iterator
+  , 3
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::recursive_tree_iterator
+  , 4
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::detail::recursive_tree_iterator
+  , 5
+);
+#endif
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_DETAIL_TREE_ITERATOR_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/fibonacci_heap.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/fibonacci_heap.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,28 @@
+// 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_TYPEOF_BOOST_HEAP_FIBONACCI_HEAP_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_FIBONACCI_HEAP_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/void.hpp>
+#include <boost/typeof/boost/heap/detail/heap_comparison.hpp>
+#include <boost/typeof/boost/heap/detail/heap_node.hpp>
+#include <boost/typeof/boost/heap/detail/stable_heap.hpp>
+#include <boost/typeof/boost/heap/detail/tree_iterator.hpp>
+#include <boost/heap/fibonacci_heap.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::fibonacci_heap, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::fibonacci_heap, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::fibonacci_heap, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::fibonacci_heap, 4);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::fibonacci_heap, 5);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::fibonacci_heap, 6);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_FIBONACCI_HEAP_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/pairing_heap.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/pairing_heap.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,29 @@
+// 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_TYPEOF_BOOST_HEAP_PAIRING_HEAP_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_PAIRING_HEAP_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/void.hpp>
+#include <boost/typeof/boost/heap/detail/heap_comparison.hpp>
+#include <boost/typeof/boost/heap/detail/heap_node.hpp>
+#include <boost/typeof/boost/heap/detail/stable_heap.hpp>
+#include <boost/typeof/boost/heap/detail/tree_iterator.hpp>
+#include <boost/typeof/boost/heap/policies.hpp>
+#include <boost/heap/pairing_heap.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::pairing_heap, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::pairing_heap, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::pairing_heap, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::pairing_heap, 4);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::pairing_heap, 5);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::pairing_heap, 6);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_PAIRING_HEAP_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/policies.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/policies.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_HEAP_POLICIES_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_POLICIES_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/typeof/boost/mpl/int.hpp>
+#include <boost/typeof/boost/mpl/void.hpp>
+#include <boost/heap/policies.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::tag::allocator);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::tag::compare);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::tag::stable);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::tag::mutable_);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::tag::constant_time_size);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::tag::store_parent_pointer);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::tag::arity);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::tag::objects_per_page);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap::tag::stability_counter_type);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::allocator, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::compare, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::stable
+  , (BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::mutable_
+  , (BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::constant_time_size
+  , (BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::store_parent_pointer
+  , (BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::arity
+  , (BOOST_TYPEOF_INTEGRAL(unsigned int))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::heap::objects_per_page
+  , (BOOST_TYPEOF_INTEGRAL(unsigned int))
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::stability_counter_type, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::has_arg, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::extract_stable, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::detail::extract_mutable, 1);
+
+#endif // BOOST_TYPEOF_BOOST_HEAP_POLICIES_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/priority_queue.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/priority_queue.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,25 @@
+// 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_TYPEOF_BOOST_HEAP_PRIORITY_QUEUE_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_PRIORITY_QUEUE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/void.hpp>
+#include <boost/typeof/boost/heap/detail/heap_comparison.hpp>
+#include <boost/typeof/boost/heap/detail/stable_heap.hpp>
+#include <boost/heap/priority_queue.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::priority_queue, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::priority_queue, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::priority_queue, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::priority_queue, 4);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::priority_queue, 5);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_PRIORITY_QUEUE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/heap/skew_heap.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/heap/skew_heap.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,30 @@
+// 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_TYPEOF_BOOST_HEAP_SKEW_HEAP_HPP
+#define BOOST_TYPEOF_BOOST_HEAP_SKEW_HEAP_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/void.hpp>
+#include <boost/typeof/boost/heap/detail/heap_comparison.hpp>
+#include <boost/typeof/boost/heap/detail/heap_node.hpp>
+#include <boost/typeof/boost/heap/detail/stable_heap.hpp>
+#include <boost/typeof/boost/heap/detail/tree_iterator.hpp>
+#include <boost/heap/skew_heap.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::skew_heap, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::skew_heap, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::skew_heap, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::skew_heap, 4);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::skew_heap, 5);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::skew_heap, 6);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::skew_heap, 7);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::heap::skew_heap, 8);
+
+#endif  // BOOST_TYPEOF_BOOST_HEAP_SKEW_HEAP_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/iterator/counting_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/iterator/counting_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ITERATOR_COUNTING_ITERATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_ITERATOR_COUNTING_ITERATOR_HPP_INCLUDED
+
+#include <boost/iterator/counting_iterator.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/iterator/iterator_adaptor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::counting_iterator, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::counting_iterator, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::counting_iterator, 3)
+
+#endif  // BOOST_TYPEOF_BOOST_ITERATOR_COUNTING_ITERATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/iterator/filter_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/iterator/filter_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_ITERATOR_FILTER_ITERATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_ITERATOR_FILTER_ITERATOR_HPP_INCLUDED
+
+#include <boost/iterator/filter_iterator.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::filter_iterator, 2)
+
+#endif  // BOOST_TYPEOF_BOOST_ITERATOR_FILTER_ITERATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/iterator/indirect_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/iterator/indirect_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ITERATOR_INDIRECT_ITERATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_ITERATOR_INDIRECT_ITERATOR_HPP_INCLUDED
+
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/iterator/iterator_adaptor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::indirect_iterator, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::indirect_iterator, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::indirect_iterator, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::indirect_iterator, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::indirect_iterator, 5)
+
+#endif  // BOOST_TYPEOF_BOOST_ITERATOR_INDIRECT_ITERATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/iterator/iterator_adaptor.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/iterator/iterator_adaptor.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_ITERATOR_ITERATOR_ADAPTOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_ITERATOR_ITERATOR_ADAPTOR_HPP_INCLUDED
+
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+//BOOST_TYPEOF_REGISTER_TYPE(::boost::use_default)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::iterator_adaptor, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::iterator_adaptor, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::iterator_adaptor, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::iterator_adaptor, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::iterator_adaptor, 6)
+
+#endif  // BOOST_TYPEOF_BOOST_ITERATOR_ITERATOR_ADAPTOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/iterator/iterator_facade.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/iterator/iterator_facade.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ITERATOR_ITERATOR_FACADE_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_ITERATOR_ITERATOR_FACADE_HPP_INCLUDED
+
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::iterator_facade, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::iterator_facade, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::iterator_facade, 5)
+
+#endif  // BOOST_TYPEOF_BOOST_ITERATOR_ITERATOR_FACADE_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/iterator/permutation_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/iterator/permutation_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_ITERATOR_PERMUTATION_ITERATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_ITERATOR_PERMUTATION_ITERATOR_HPP_INCLUDED
+
+#include <boost/iterator/permutation_iterator.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::permutation_iterator, 2)
+
+#endif  // BOOST_TYPEOF_BOOST_ITERATOR_PERMUTATION_ITERATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/iterator/reverse_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/iterator/reverse_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_ITERATOR_REVERSE_ITERATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_ITERATOR_REVERSE_ITERATOR_HPP_INCLUDED
+
+#include <boost/iterator/reverse_iterator.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::reverse_iterator, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_ITERATOR_REVERSE_ITERATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/iterator/transform_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/iterator/transform_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_ITERATOR_TRANSFORM_ITERATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_ITERATOR_TRANSFORM_ITERATOR_HPP_INCLUDED
+
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/iterator/iterator_adaptor.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::transform_iterator, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::transform_iterator, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::transform_iterator, 4)
+
+#endif  // BOOST_TYPEOF_BOOST_ITERATOR_TRANSFORM_ITERATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/iterator/zip_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/iterator/zip_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_ITERATOR_ZIP_ITERATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_ITERATOR_ZIP_ITERATOR_HPP_INCLUDED
+
+#include <boost/iterator/zip_iterator.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::zip_iterator, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_ITERATOR_ZIP_ITERATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/mpl/bool.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/mpl/bool.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_MPL_BOOL_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_MPL_BOOL_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::mpl::bool_
+  , (BOOST_TYPEOF_INTEGRAL(bool))
+);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::mpl::true_);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::mpl::false_);
+
+#endif  // BOOST_TYPEOF_BOOST_MPL_BOOL_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/mpl/char.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/mpl/char.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,20 @@
+// 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_TYPEOF_BOOST_MPL_CHAR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_MPL_CHAR_HPP_INCLUDED
+
+#include <boost/mpl/char.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::mpl::char_
+  , (BOOST_TYPEOF_INTEGRAL(char))
+);
+
+#endif  // BOOST_TYPEOF_BOOST_MPL_CHAR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/mpl/int.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/mpl/int.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,20 @@
+// 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_TYPEOF_BOOST_MPL_INT_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_MPL_INT_HPP_INCLUDED
+
+#include <boost/mpl/int.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::mpl::int_
+  , (BOOST_TYPEOF_INTEGRAL(int))
+);
+
+#endif  // BOOST_TYPEOF_BOOST_MPL_INT_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/mpl/long.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/mpl/long.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,20 @@
+// 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_TYPEOF_BOOST_MPL_LONG_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_MPL_LONG_HPP_INCLUDED
+
+#include <boost/mpl/long.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::mpl::long_
+  , (BOOST_TYPEOF_INTEGRAL(long))
+);
+
+#endif  // BOOST_TYPEOF_BOOST_MPL_LONG_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/mpl/size_t.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/mpl/size_t.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,20 @@
+// 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_TYPEOF_BOOST_MPL_SIZE_T_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_MPL_SIZE_T_HPP_INCLUDED
+
+#include <boost/mpl/size_t.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::mpl::size_t
+  , (BOOST_TYPEOF_INTEGRAL(::std::size_t))
+);
+
+#endif  // BOOST_TYPEOF_BOOST_MPL_SIZE_T_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/mpl/void.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/mpl/void.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_MPL_VOID_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_MPL_VOID_HPP_INCLUDED
+
+#include <boost/mpl/void.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::mpl::void_);
+
+#endif  // BOOST_TYPEOF_BOOST_MPL_VOID_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/noncopyable.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/noncopyable.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,18 @@
+// 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_TYPEOF_BOOST_NONCOPYABLE_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_NONCOPYABLE_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/noncopyable.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::noncopyable_::noncopyable);
+
+#endif  // BOOST_TYPEOF_BOOST_NONCOPYABLE_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/optional.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/optional.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_OPTIONAL_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_OPTIONAL_HPP_INCLUDED
+
+#include <boost/optional.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::optional, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_OPTIONAL_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/parameter.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_HPP
+
+#include <boost/parameter/parameters.hpp>
+#include <boost/typeof/boost/parameter/keyword.hpp>
+#include <boost/typeof/boost/parameter/binding.hpp>
+#include <boost/typeof/boost/parameter/value_type.hpp>
+#include <boost/parameter/macros.hpp>
+#include <boost/parameter/match.hpp>
+#include <boost/typeof/boost/parameter/name.hpp>
+#include <boost/parameter/preprocessor.hpp>
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/arg_list.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/arg_list.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_BOOST_PARAMETER_AUX_ARG_LIST_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_ARG_LIST_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/void.hpp>
+#include <boost/typeof/boost/parameter/aux_/result_of0.hpp>
+#include <boost/typeof/boost/parameter/aux_/default.hpp>
+#include <boost/typeof/boost/parameter/aux_/parameter_requirements.hpp>
+#include <boost/typeof/boost/parameter/aux_/yesno.hpp>
+#include <boost/typeof/boost/parameter/aux_/is_maybe.hpp>
+#include <boost/parameter/aux_/arg_list.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::parameter::aux::empty_arg_list);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::get_reference, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::arg_list, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::arg_list, 2);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_ARG_LIST_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/cast.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/cast.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_BOOST_PARAMETER_AUX_CAST_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_CAST_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/parameter/aux_/cast.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::parameter::aux::use_default_tag);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::cast, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::parameter::aux::as_placeholder_expr
+  , 1
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::parameter::aux::as_placeholder_expr
+  , 2
+);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_CAST_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/default.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/default.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_AUX_DEFAULT_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_DEFAULT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/parameter/aux_/default.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::default_, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::lazy_default, 2);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_DEFAULT_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/is_maybe.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/is_maybe.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_AUX_IS_MAYBE_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_IS_MAYBE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/parameter/aux_/is_maybe.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::parameter::aux::maybe_base);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::is_maybe, 1);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_IS_MAYBE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/maybe.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/maybe.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_AUX_MAYBE_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_MAYBE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/is_maybe.hpp>
+#include <boost/parameter/aux_/maybe.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::referent_size, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::referent_storage, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::maybe, 1);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_MAYBE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/parameter_requirements.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/parameter_requirements.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_AUX_PARAMETER_REQUIREMENTS_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_PARAMETER_REQUIREMENTS_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/parameter/aux_/parameter_requirements.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::parameter::aux::parameter_requirements
+  , 3
+);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_PARAMETER_REQUIREMENTS_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/parenthesized_type.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/parenthesized_type.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_AUX_PARENTHESIZED_TYPE_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_PARENTHESIZED_TYPE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/parameter/aux_/parenthesized_type.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::parameter::aux::unaryfunptr_arg_type
+  , 1
+);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_PARENTHESIZED_TYPE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/result_of0.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/result_of0.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,18 @@
+// 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_TYPEOF_BOOST_PARAMETER_AUX_RESULT_OF0_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_RESULT_OF0_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/parameter/aux_/result_of0.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::result_of0, 1);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_RESULT_OF0_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/set.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/set.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_SET_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_SET_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/parameter/aux_/set.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::parameter::aux::set0);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::insert_, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::has_key_, 2);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_SET_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/tag.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/tag.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,24 @@
+// 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_TYPEOF_BOOST_PARAMETER_AUX_TAG_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_TAG_HPP
+
+#include <boost/detail/workaround.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/unwrap_cv_reference.hpp>
+#include <boost/typeof/boost/parameter/aux_/tagged_argument.hpp>
+#include <boost/parameter/aux_/tag.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::tag, 2);
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::tag, 3);
+#endif
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_TAG_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/tagged_argument.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/tagged_argument.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,28 @@
+// 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_TYPEOF_BOOST_PARAMETER_AUX_TAGGED_ARGUMENT_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_TAGGED_ARGUMENT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/void.hpp>
+#include <boost/typeof/boost/parameter/aux_/arg_list.hpp>
+#include <boost/typeof/boost/parameter/aux_/result_of0.hpp>
+#include <boost/parameter/aux_/tagged_argument.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::parameter::aux::arg_list_tag);
+BOOST_TYPEOF_REGISTER_TYPE(::boost::parameter::aux::tagged_argument_base);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::tagged_argument, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::parameter::aux::is_tagged_argument_aux
+  , 1
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::is_tagged_argument, 1);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_TAGGED_ARGUMENT_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/template_keyword.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/template_keyword.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_TEMPLATE_KEYWORD_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_TEMPLATE_KEYWORD_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/parameter/aux_/template_keyword.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::parameter::aux::template_keyword_tag);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::parameter::aux::is_template_keyword
+  , 1
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::template_keyword, 2);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_TEMPLATE_KEYWORD_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/unwrap_cv_reference.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/unwrap_cv_reference.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_AUX_UNWRAP_CV_REFERENCE_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_UNWRAP_CV_REFERENCE_HPP
+
+#include <boost/detail/workaround.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/typeof/boost/ref.hpp>
+#include <boost/typeof/boost/parameter/aux_/yesno.hpp>
+#include <boost/parameter/aux_/unwrap_cv_reference.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::parameter::aux::template_keyword_tag);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::parameter::aux::is_cv_reference_wrapper
+  , 1
+);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::get_type, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::parameter::aux::unwrap_cv_reference
+  , 1
+);
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::parameter::aux::unwrap_cv_reference
+  , 2
+);
+#endif
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_UNWRAP_CV_REFERENCE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/void.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/void.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,18 @@
+// 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_TYPEOF_BOOST_PARAMETER_VOID_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_VOID_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/parameter/aux_/void.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::parameter::void_);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_VOID_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/aux_/yesno.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/aux_/yesno.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,15 @@
+// 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_TYPEOF_BOOST_PARAMETER_AUX_YESNO_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_AUX_YESNO_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/parameter/aux_/yesno.hpp>
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_AUX_YESNO_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/binding.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/binding.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_PARAMETER_BINDING_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_BINDING_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/result_of0.hpp>
+#include <boost/typeof/boost/parameter/aux_/void.hpp>
+#include <boost/parameter/binding.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::binding, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::binding, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::lazy_binding, 3);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_BINDING_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/config.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/config.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,14 @@
+// Copyright Daniel Wallin, David Abrahams 2005. Use, modification and
+// distribution is subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_PARAMETER_CONFIG_050403_HPP
+#define BOOST_PARAMETER_CONFIG_050403_HPP
+
+#ifndef BOOST_PARAMETER_MAX_ARITY
+# define BOOST_PARAMETER_MAX_ARITY 8
+#endif
+
+#endif // BOOST_PARAMETER_CONFIG_050403_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/keyword.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/keyword.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_KEYWORD_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_KEYWORD_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/parameter/aux_/unwrap_cv_reference.hpp>
+#include <boost/typeof/boost/parameter/aux_/tag.hpp>
+#include <boost/typeof/boost/parameter/aux_/default.hpp>
+#include <boost/parameter/keyword.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::keyword, 1);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_KEYWORD_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/macros.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/macros.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,99 @@
+// Copyright David Abrahams, Daniel Wallin 2003. Use, modification and 
+// distribution is subject to the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_PARAMETER_MACROS_050412_HPP
+#define BOOST_PARAMETER_MACROS_050412_HPP
+
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/logical/bool.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/control/expr_if.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/detail/workaround.hpp>
+
+#define BOOST_PARAMETER_FUN_TEMPLATE_HEAD1(n) \
+    template<BOOST_PP_ENUM_PARAMS(n, class T)>
+
+#define BOOST_PARAMETER_FUN_TEMPLATE_HEAD0(n)
+
+#if ! defined(BOOST_NO_SFINAE) && ! BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) 
+
+# define BOOST_PARAMETER_MATCH_TYPE(n, param)           \
+            BOOST_PP_EXPR_IF(n, typename) param::match  \
+            <                                           \
+                BOOST_PP_ENUM_PARAMS(n, T)              \
+            >::type 
+
+#else
+
+# define BOOST_PARAMETER_MATCH_TYPE(n, param) param
+
+#endif
+
+#define BOOST_PARAMETER_FUN_DECL(z, n, params)                                      \
+                                                                                    \
+    BOOST_PP_CAT(BOOST_PARAMETER_FUN_TEMPLATE_HEAD, BOOST_PP_BOOL(n))(n)            \
+                                                                                    \
+    BOOST_PP_TUPLE_ELEM(3, 0, params)                                               \
+        BOOST_PP_TUPLE_ELEM(3, 1, params)(                                          \
+            BOOST_PP_ENUM_BINARY_PARAMS(n, T, const& p)                             \
+            BOOST_PP_COMMA_IF(n)                                                    \
+            BOOST_PARAMETER_MATCH_TYPE(n,BOOST_PP_TUPLE_ELEM(3, 2, params))         \
+            kw = BOOST_PP_TUPLE_ELEM(3, 2, params)()                                \
+        )                                                                           \
+    {                                                                               \
+        return BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(3, 1, params), _with_named_params)( \
+            kw(BOOST_PP_ENUM_PARAMS(n, p))                                          \
+        );                                                                          \
+    }
+
+// Generates:
+//
+// template<class Params>
+// ret name ## _with_named_params(Params const&);
+//
+// template<class T0>
+// ret name(T0 const& p0, typename parameters::match<T0>::type kw = parameters())
+// {
+//     return name ## _with_named_params(kw(p0));
+// }
+//
+// template<class T0, ..., class TN>
+// ret name(T0 const& p0, ..., TN const& PN
+//    , typename parameters::match<T0, ..., TN>::type kw = parameters())
+// {
+//     return name ## _with_named_params(kw(p0, ..., pN));
+// }
+//
+// template<class Params>
+// ret name ## _with_named_params(Params const&)
+//
+// lo and hi determines the min and max arity of the generated functions.
+
+#define BOOST_PARAMETER_FUN(ret, name, lo, hi, parameters)                          \
+                                                                                    \
+    template<class Params>                                                          \
+    ret BOOST_PP_CAT(name, _with_named_params)(Params const& p);                    \
+                                                                                    \
+    BOOST_PP_REPEAT_FROM_TO(                                                        \
+        lo, BOOST_PP_INC(hi), BOOST_PARAMETER_FUN_DECL, (ret, name, parameters))    \
+                                                                                    \
+    template<class Params>                                                          \
+    ret BOOST_PP_CAT(name, _with_named_params)(Params const& p)
+
+#define BOOST_PARAMETER_MEMFUN(ret, name, lo, hi, parameters)                       \
+                                                                                    \
+    BOOST_PP_REPEAT_FROM_TO(                                                        \
+        lo, BOOST_PP_INC(hi), BOOST_PARAMETER_FUN_DECL, (ret, name, parameters))    \
+                                                                                    \
+    template<class Params>                                                          \
+    ret BOOST_PP_CAT(name, _with_named_params)(Params const& p)
+
+#endif // BOOST_PARAMETER_MACROS_050412_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/match.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/match.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,55 @@
+// Copyright David Abrahams 2005. 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_PARAMETER_MATCH_DWA2005714_HPP
+# define BOOST_PARAMETER_MATCH_DWA2005714_HPP
+
+# include <boost/detail/workaround.hpp>
+# include <boost/preprocessor/seq/enum.hpp>
+
+# if BOOST_WORKAROUND(__MWERKS__, <= 0x3003)
+// Temporary version of BOOST_PP_SEQ_ENUM until Paul M. integrates the workaround.
+#  define BOOST_PARAMETER_SEQ_ENUM_I(size,seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, size) seq
+#  define BOOST_PARAMETER_SEQ_ENUM(seq) BOOST_PARAMETER_SEQ_ENUM_I(BOOST_PP_SEQ_SIZE(seq), seq)
+# else
+#  define BOOST_PARAMETER_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM(seq)
+# endif 
+
+# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+
+#  include <boost/parameter/config.hpp>
+#  include <boost/parameter/aux_/void.hpp>
+#  include <boost/preprocessor/arithmetic/sub.hpp>
+#  include <boost/preprocessor/facilities/intercept.hpp>
+#  include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+
+#  define BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes)              \
+        BOOST_PP_ENUM_TRAILING_PARAMS(                          \
+            BOOST_PP_SUB(                                       \
+                BOOST_PARAMETER_MAX_ARITY                       \
+              , BOOST_PP_SEQ_SIZE(ArgTypes)                     \
+            )                                                   \
+          , ::boost::parameter::void_ BOOST_PP_INTERCEPT   \
+        )
+
+# else
+
+#  define BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes)
+
+# endif 
+
+//
+// Generates, e.g.
+//
+//    typename dfs_params::match<A1,A2>::type name = dfs_params()
+//
+// with workarounds for Borland compatibility.
+//
+
+# define BOOST_PARAMETER_MATCH(ParameterSpec, ArgTypes, name)   \
+    typename ParameterSpec ::match<                             \
+        BOOST_PARAMETER_SEQ_ENUM(ArgTypes)                      \
+        BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes)                \
+    >::type name = ParameterSpec ()
+
+#endif // BOOST_PARAMETER_MATCH_DWA2005714_HPP
Added: sandbox/container_gen/boost/typeof/boost/parameter/name.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/name.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_PARAMETER_NAME_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_NAME_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/typeof/boost/parameter/keyword.hpp>
+#include <boost/typeof/boost/parameter/value_type.hpp>
+#include <boost/parameter/name.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::parameter::aux::name_tag_base);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::name_tag, 1);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::aux::is_name_tag, 1);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_NAME_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/preprocessor.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/preprocessor.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,1178 @@
+// Copyright Daniel Wallin 2006. Use, modification and distribution is
+// subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_PARAMETER_PREPROCESSOR_060206_HPP
+# define BOOST_PARAMETER_PREPROCESSOR_060206_HPP
+
+# include <boost/parameter/parameters.hpp>
+# include <boost/parameter/binding.hpp>
+# include <boost/parameter/match.hpp>
+
+# include <boost/parameter/aux_/parenthesized_type.hpp>
+# include <boost/parameter/aux_/cast.hpp>
+# include <boost/parameter/aux_/preprocessor/flatten.hpp>
+
+# include <boost/preprocessor/repetition/repeat_from_to.hpp>
+# include <boost/preprocessor/comparison/equal.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/control/expr_if.hpp>
+# include <boost/preprocessor/repetition/enum_params.hpp>
+# include <boost/preprocessor/repetition/enum_binary_params.hpp>
+# include <boost/preprocessor/repetition/enum_trailing.hpp>
+# include <boost/preprocessor/seq/first_n.hpp>
+# include <boost/preprocessor/seq/for_each_product.hpp>
+# include <boost/preprocessor/seq/for_each_i.hpp> 
+# include <boost/preprocessor/tuple/elem.hpp> 
+# include <boost/preprocessor/tuple/eat.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/seq/push_back.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/seq/enum.hpp>
+# include <boost/preprocessor/seq/push_back.hpp>
+
+# include <boost/preprocessor/detail/is_nullary.hpp>
+
+# include <boost/mpl/always.hpp>
+# include <boost/mpl/apply_wrap.hpp>
+
+# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#  include <boost/type.hpp>
+# endif
+
+namespace boost { namespace parameter { namespace aux {
+
+#  if ! defined(BOOST_NO_SFINAE) && ! BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592))
+
+// Given Match, which is "void x" where x is an argument matching
+// criterion, extract a corresponding MPL predicate.
+template <class Match>
+struct unwrap_predicate;
+
+// Match anything
+template <>
+struct unwrap_predicate<void*>
+{
+    typedef mpl::always<mpl::true_> type;
+};
+
+#if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x580))
+
+typedef void* voidstar;
+
+// A matching predicate is explicitly specified
+template <class Predicate>
+struct unwrap_predicate<voidstar (Predicate)>
+{
+    typedef Predicate type;
+};
+
+#else
+
+// A matching predicate is explicitly specified
+template <class Predicate>
+struct unwrap_predicate<void *(Predicate)>
+{
+    typedef Predicate type;
+};
+
+#endif 
+
+
+// A type to which the argument is supposed to be convertible is
+// specified
+template <class Target>
+struct unwrap_predicate<void (Target)>
+{
+    typedef is_convertible<mpl::_, Target> type;
+};
+
+// Recast the ParameterSpec's nested match metafunction as a free metafunction
+template <
+    class Parameters
+  , BOOST_PP_ENUM_BINARY_PARAMS(
+        BOOST_PARAMETER_MAX_ARITY, class A, = boost::parameter::void_ BOOST_PP_INTERCEPT
+    )
+>
+struct match
+  : Parameters::template match<
+        BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, A)
+    >
+{};
+# endif 
+
+# if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+
+// Function template argument deduction does many of the same things
+// as type matching during partial specialization, so we call a
+// function template to "store" T into the type memory addressed by
+// void(*)(T).
+template <class T>
+msvc_store_type<T,void*(*)(void**(T))>
+msvc_store_predicate_type(void*(*)(void**(T)));
+
+template <class T>
+msvc_store_type<boost::is_convertible<mpl::_,T>,void*(*)(void*(T))>
+msvc_store_predicate_type(void*(*)(void*(T)));
+
+template <class FunctionType>
+struct unwrap_predicate
+{
+    static FunctionType f;
+
+    // We don't want the function to be evaluated, just instantiated,
+    // so protect it inside of sizeof.
+    enum { dummy = sizeof(msvc_store_predicate_type(f)) };
+
+    // Now pull the type out of the instantiated base class
+    typedef typename msvc_type_memory<FunctionType>::storage::type type;
+};
+
+template <>
+struct unwrap_predicate<void*(*)(void**)>
+{
+    typedef mpl::always<mpl::true_> type;
+};
+
+# endif
+
+# undef false_
+
+template <
+    class Parameters
+  , BOOST_PP_ENUM_BINARY_PARAMS(
+        BOOST_PARAMETER_MAX_ARITY, class A, = boost::parameter::void_ BOOST_PP_INTERCEPT
+    )
+>
+struct argument_pack
+{
+    typedef typename make_arg_list<
+        typename BOOST_PARAMETER_build_arg_list(
+            BOOST_PARAMETER_MAX_ARITY, make_items, typename Parameters::parameter_spec, A
+        )::type
+      , typename Parameters::deduced_list
+      , tag_keyword_arg
+      , mpl::false_
+    >::type result;
+    typedef typename mpl::first<result>::type type;
+};
+
+# if 1 //BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+// Works around VC6 problem where it won't accept rvalues.
+template <class T>
+T& as_lvalue(T& value, long)
+{
+    return value;
+}
+
+template <class T>
+T const& as_lvalue(T const& value, int)
+{
+    return value;
+}
+# endif
+
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+  || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+
+template <class Predicate, class T, class Args>
+struct apply_predicate
+{
+    BOOST_MPL_ASSERT((
+        mpl::and_<mpl::false_,T>
+    ));
+
+    typedef typename mpl::if_<
+        typename mpl::apply2<Predicate,T,Args>::type
+      , char
+      , int
+    >::type type;
+};
+
+template <class P>
+struct funptr_predicate
+{
+    static P p;
+
+    template <class T, class Args, class P0>
+    static typename apply_predicate<P0,T,Args>::type
+    check_predicate(type<T>, Args*, void**(*)(P0));
+
+    template <class T, class Args, class P0>
+    static typename mpl::if_<
+        is_convertible<T,P0>
+      , char
+      , int
+     >::type check_predicate(type<T>, Args*, void*(*)(P0));
+
+    template <class T, class Args>
+    struct apply
+    {
+        BOOST_STATIC_CONSTANT(bool, result = 
+            sizeof(check_predicate(boost::type<T>(), (Args*)0, &p)) == 1
+        );
+
+        typedef mpl::bool_<apply<T,Args>::result> type;
+    };
+};
+
+template <>
+struct funptr_predicate<void**>
+  : mpl::always<mpl::true_>
+{};
+
+# endif
+
+}}} // namespace boost::parameter::aux
+
+# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+// From Paul Mensonides
+#  define BOOST_PARAMETER_IS_NULLARY(x) \
+    BOOST_PP_SPLIT(1, BOOST_PARAMETER_IS_NULLARY_C x BOOST_PP_COMMA() 0) \
+    /**/
+#  define BOOST_PARAMETER_IS_NULLARY_C() \
+    ~, 1 BOOST_PP_RPAREN() \
+    BOOST_PP_TUPLE_EAT(2) BOOST_PP_LPAREN() ~ \
+    /**/
+# else
+#  define BOOST_PARAMETER_IS_NULLARY(x) BOOST_PP_IS_NULLARY(x)
+# endif
+
+# define BOOST_PARAMETER_MEMBER_FUNCTION_CHECK_STATIC_static ()
+# define BOOST_PARAMETER_MEMBER_FUNCTION_IS_STATIC(name) \
+    BOOST_PARAMETER_IS_NULLARY( \
+        BOOST_PP_CAT(BOOST_PARAMETER_MEMBER_FUNCTION_CHECK_STATIC_,name) \
+    )
+
+# if !defined(BOOST_MSVC)
+#  define BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_static
+#  define BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC(name) \
+    BOOST_PP_CAT(BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_, name)
+# else
+// Workaround for MSVC preprocessor.
+//
+// When stripping static from "static f", msvc will produce
+// " f". The leading whitespace doesn't go away when pasting
+// the token with something else, so this thing is a hack to
+// strip the whitespace.
+#  define BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_static (
+#  define BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_AUX(name) \
+    BOOST_PP_CAT(BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_, name))
+#  define BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC(name) \
+    BOOST_PP_SEQ_HEAD( \
+        BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_AUX(name) \
+    )
+# endif
+
+# define BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(name) \
+    BOOST_PP_EXPR_IF( \
+        BOOST_PARAMETER_MEMBER_FUNCTION_IS_STATIC(name) \
+      , static \
+    )
+
+# define BOOST_PARAMETER_MEMBER_FUNCTION_NAME(name) \
+    BOOST_PP_IF( \
+        BOOST_PARAMETER_MEMBER_FUNCTION_IS_STATIC(name) \
+      , BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC \
+      , name BOOST_PP_TUPLE_EAT(1) \
+    )(name)
+
+// Calculates [begin, end) arity range.
+
+# define BOOST_PARAMETER_ARITY_RANGE_M_optional(state) state
+# define BOOST_PARAMETER_ARITY_RANGE_M_deduced_optional(state) state
+# define BOOST_PARAMETER_ARITY_RANGE_M_required(state) BOOST_PP_INC(state)
+# define BOOST_PARAMETER_ARITY_RANGE_M_deduced_required(state) BOOST_PP_INC(state)
+
+# define BOOST_PARAMETER_ARITY_RANGE_M(s, state, x) \
+    BOOST_PP_CAT( \
+        BOOST_PARAMETER_ARITY_RANGE_M_ \
+      , BOOST_PARAMETER_FN_ARG_QUALIFIER(x) \
+    )(state)
+/**/
+
+# define BOOST_PARAMETER_ARITY_RANGE(args) \
+    ( \
+        BOOST_PP_SEQ_FOLD_LEFT(BOOST_PARAMETER_ARITY_RANGE_M, 0, args) \
+      , BOOST_PP_INC(BOOST_PP_SEQ_SIZE(args)) \
+    )
+/**/
+
+// Accessor macros for the argument specs tuple.
+# define BOOST_PARAMETER_FN_ARG_QUALIFIER(x) \
+    BOOST_PP_TUPLE_ELEM(4,0,x)
+/**/
+
+# define BOOST_PARAMETER_FN_ARG_NAME(x) \
+    BOOST_PP_TUPLE_ELEM(4,1,x)
+/**/
+
+# define BOOST_PARAMETER_FN_ARG_PRED(x) \
+    BOOST_PP_TUPLE_ELEM(4,2,x)
+/**/
+
+# define BOOST_PARAMETER_FN_ARG_DEFAULT(x) \
+    BOOST_PP_TUPLE_ELEM(4,3,x)
+/**/
+
+# define BOOST_PARAMETETER_FUNCTION_EAT_KEYWORD_QUALIFIER_out(x)
+# define BOOST_PARAMETETER_FUNCTION_EAT_KEYWORD_QUALIFIER_in_out(x)
+
+// Returns 1 if x is either "out(k)" or "in_out(k)".
+# define BOOST_PARAMETER_FUNCTION_IS_KEYWORD_QUALIFIER(x) \
+    BOOST_PP_IS_EMPTY( \
+        BOOST_PP_CAT(BOOST_PARAMETETER_FUNCTION_EAT_KEYWORD_QUALIFIER_, x) \
+    ) \
+/**/
+
+# define BOOST_PARAMETETER_FUNCTION_GET_KEYWORD_QUALIFIER_out(x) x
+# define BOOST_PARAMETETER_FUNCTION_GET_KEYWORD_QUALIFIER_in_out(x) x
+# define BOOST_PARAMETER_FUNCTION_KEYWORD_GET(x) \
+    BOOST_PP_CAT(BOOST_PARAMETETER_FUNCTION_GET_KEYWORD_QUALIFIER_, x)
+/**/
+
+// Returns the keyword of x, where x is either a keyword qualifier
+// or a keyword.
+//
+//   k => k
+//   out(k) => k
+//   in_out(k) => k
+//
+# define BOOST_PARAMETER_FUNCTION_KEYWORD(x) \
+    BOOST_PP_IF( \
+        BOOST_PARAMETER_FUNCTION_IS_KEYWORD_QUALIFIER(x) \
+      , BOOST_PARAMETER_FUNCTION_KEYWORD_GET \
+      , x BOOST_PP_TUPLE_EAT(1) \
+    )(x)
+/**/
+
+# define BOOST_PARAMETER_FN_ARG_KEYWORD(x) \
+    BOOST_PARAMETER_FUNCTION_KEYWORD( \
+        BOOST_PARAMETER_FN_ARG_NAME(x) \
+    )
+
+// Builds forwarding functions.
+
+# define BOOST_PARAMETER_FUNCTION_FWD_FUNCTION_TEMPLATE_Z(z, n) \
+    template<BOOST_PP_ENUM_PARAMS_Z(z, n, class ParameterArgumentType)>
+/**/
+
+# if ! defined(BOOST_NO_SFINAE) && ! BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592))
+#  define BOOST_PARAMETER_FUNCTION_FWD_MATCH_Z(z, name, parameters, n) \
+    , typename boost::parameter::aux::match< \
+          parameters, BOOST_PP_ENUM_PARAMS(n, ParameterArgumentType) \
+      >::type = parameters()
+# else
+#  define BOOST_PARAMETER_FUNCTION_FWD_MATCH_Z(z, name, parameters, n)
+# endif
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_PARAMETERS_NAME(base) \
+    BOOST_PP_CAT( \
+        boost_param_parameters_ \
+      , BOOST_PP_CAT(__LINE__, BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base)) \
+    )
+
+// Produce a name for a result type metafunction for the function
+// named base
+# define BOOST_PARAMETER_FUNCTION_RESULT_NAME(base) \
+    BOOST_PP_CAT( \
+        boost_param_result_ \
+      , BOOST_PP_CAT(__LINE__,BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base)) \
+    )
+
+// Can't do boost_param_impl_ ## basee because base might start with an underscore
+// daniel: what? how is that relevant? the reason for using CAT() is to make sure
+// base is expanded. i'm not sure we need to here, but it's more stable to do it.
+# define BOOST_PARAMETER_IMPL(base) \
+    BOOST_PP_CAT(boost_param_impl,BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base))
+
+# define BOOST_PARAMETER_FUNCTION_FWD_FUNCTION00(z, n, r, data, elem) \
+    BOOST_PP_IF( \
+        n \
+      , BOOST_PARAMETER_FUNCTION_FWD_FUNCTION_TEMPLATE_Z, BOOST_PP_TUPLE_EAT(2) \
+    )(z,n) \
+    BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(BOOST_PP_TUPLE_ELEM(7,3,data)) \
+    inline \
+    BOOST_PP_EXPR_IF(n, typename) \
+        BOOST_PARAMETER_FUNCTION_RESULT_NAME(BOOST_PP_TUPLE_ELEM(7,3,data))<   \
+        BOOST_PP_EXPR_IF(n, typename) \
+        boost::parameter::aux::argument_pack< \
+            BOOST_PARAMETER_FUNCTION_PARAMETERS_NAME(BOOST_PP_TUPLE_ELEM(7,3,data)) \
+            BOOST_PP_COMMA_IF(n) \
+            BOOST_PP_IF( \
+                n, BOOST_PP_SEQ_ENUM, BOOST_PP_TUPLE_EAT(1) \
+            )(elem) \
+        >::type \
+    >::type \
+    BOOST_PARAMETER_MEMBER_FUNCTION_NAME(BOOST_PP_TUPLE_ELEM(7,3,data))( \
+        BOOST_PP_IF( \
+            n \
+          , BOOST_PP_SEQ_FOR_EACH_I_R \
+          , BOOST_PP_TUPLE_EAT(4) \
+        )( \
+            r \
+          , BOOST_PARAMETER_FUNCTION_ARGUMENT \
+          , ~ \
+          , elem \
+        ) \
+        BOOST_PP_IF(n, BOOST_PARAMETER_FUNCTION_FWD_MATCH_Z, BOOST_PP_TUPLE_EAT(4))( \
+            z \
+          , BOOST_PP_TUPLE_ELEM(7,3,data) \
+          , BOOST_PARAMETER_FUNCTION_PARAMETERS_NAME(BOOST_PP_TUPLE_ELEM(7,3,data)) \
+          , n \
+        ) \
+    ) BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(7,4,data), const) \
+    { \
+        return BOOST_PARAMETER_IMPL(BOOST_PP_TUPLE_ELEM(7,3,data))( \
+            BOOST_PARAMETER_FUNCTION_PARAMETERS_NAME(BOOST_PP_TUPLE_ELEM(7,3,data))()( \
+                BOOST_PP_ENUM_PARAMS_Z(z, n, a) \
+            ) \
+        ); \
+    }
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_FUNCTION0(r, data, elem) \
+    BOOST_PARAMETER_FUNCTION_FWD_FUNCTION00( \
+        BOOST_PP_TUPLE_ELEM(7,0,data) \
+      , BOOST_PP_TUPLE_ELEM(7,1,data) \
+      , r \
+      , data \
+      , elem \
+    )
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_FUNCTION_ARITY_0(z, n, data) \
+    BOOST_PARAMETER_FUNCTION_FWD_FUNCTION00( \
+        z, n, BOOST_PP_DEDUCE_R() \
+      , (z, n, BOOST_PP_TUPLE_REM(5) data) \
+      , ~ \
+    )
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_FUNCTION_ARITY_N(z, n, data) \
+    BOOST_PP_SEQ_FOR_EACH( \
+        BOOST_PARAMETER_FUNCTION_FWD_FUNCTION0 \
+      , (z, n, BOOST_PP_TUPLE_REM(5) data) \
+      , BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
+            BOOST_PARAMETER_FUNCTION_FWD_PRODUCT \
+          , BOOST_PP_SEQ_FIRST_N( \
+                n, BOOST_PP_TUPLE_ELEM(5,3,data) \
+            ) \
+        ) \
+    )
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_FUNCTION(z, n, data) \
+    BOOST_PP_IF( \
+        n \
+      , BOOST_PARAMETER_FUNCTION_FWD_FUNCTION_ARITY_N \
+      , BOOST_PARAMETER_FUNCTION_FWD_FUNCTION_ARITY_0 \
+    )(z,n,data) \
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_FUNCTIONS0( \
+    result,name,args,const_,combinations,range \
+) \
+    BOOST_PP_REPEAT_FROM_TO( \
+        BOOST_PP_TUPLE_ELEM(2,0,range), BOOST_PP_TUPLE_ELEM(2,1,range) \
+      , BOOST_PARAMETER_FUNCTION_FWD_FUNCTION \
+      , (result,name,const_,combinations,BOOST_PP_TUPLE_ELEM(2,1,range)) \
+    )
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_FUNCTIONS(result,name,args, const_, combinations) \
+    BOOST_PARAMETER_FUNCTION_FWD_FUNCTIONS0( \
+        result, name, args, const_, combinations, BOOST_PARAMETER_ARITY_RANGE(args) \
+    )
+/**/
+
+// Builds boost::parameter::parameters<> specialization
+#  define BOOST_PARAMETER_FUNCTION_PARAMETERS_QUALIFIER_optional(tag) \
+    optional<tag
+
+#  define BOOST_PARAMETER_FUNCTION_PARAMETERS_QUALIFIER_required(tag) \
+    required<tag
+
+#  define BOOST_PARAMETER_FUNCTION_PARAMETERS_QUALIFIER_deduced_optional(tag) \
+    optional<boost::parameter::deduced<tag>
+
+#  define BOOST_PARAMETER_FUNCTION_PARAMETERS_QUALIFIER_deduced_required(tag) \
+    required<boost::parameter::deduced<tag>
+
+# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) && !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+
+#  if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+#   define BOOST_PARAMETER_PREDICATE_TYPE(p) void*(*) (void* p)
+#  else
+#   define BOOST_PARAMETER_PREDICATE_TYPE(p) void p
+#  endif
+
+#  define BOOST_PARAMETER_FUNCTION_PARAMETERS_M(r,tag_namespace,i,elem) \
+    BOOST_PP_COMMA_IF(i) \
+    boost::parameter::BOOST_PP_CAT( \
+        BOOST_PARAMETER_FUNCTION_PARAMETERS_QUALIFIER_ \
+      , BOOST_PARAMETER_FN_ARG_QUALIFIER(elem) \
+    )( \
+        tag_namespace::BOOST_PARAMETER_FUNCTION_KEYWORD( \
+            BOOST_PARAMETER_FN_ARG_KEYWORD(elem) \
+        ) \
+    ) \
+      , typename boost::parameter::aux::unwrap_predicate< \
+            BOOST_PARAMETER_PREDICATE_TYPE(BOOST_PARAMETER_FN_ARG_PRED(elem)) \
+        >::type \
+    >
+# elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#  define BOOST_PARAMETER_FUNCTION_PARAMETERS_M(r,tag_namespace,i,elem) \
+    BOOST_PP_COMMA_IF(i) \
+    boost::parameter::BOOST_PP_CAT( \
+        BOOST_PARAMETER_FUNCTION_PARAMETERS_QUALIFIER_ \
+      , BOOST_PARAMETER_FN_ARG_QUALIFIER(elem) \
+    )( \
+        tag_namespace::BOOST_PARAMETER_FUNCTION_KEYWORD( \
+            BOOST_PARAMETER_FN_ARG_KEYWORD(elem) \
+        ) \
+    ) \
+      , boost::parameter::aux::funptr_predicate< \
+            void* BOOST_PARAMETER_FN_ARG_PRED(elem) \
+        > \
+    >
+# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#  define BOOST_PARAMETER_FUNCTION_PARAMETERS_M(r,tag_namespace,i,elem) \
+    BOOST_PP_COMMA_IF(i) \
+    boost::parameter::BOOST_PP_CAT( \
+        BOOST_PARAMETER_FUNCTION_PARAMETERS_QUALIFIER_ \
+      , BOOST_PARAMETER_FN_ARG_QUALIFIER(elem) \
+    )( \
+        tag_namespace::BOOST_PARAMETER_FUNCTION_KEYWORD( \
+            BOOST_PARAMETER_FN_ARG_KEYWORD(elem) \
+        ) \
+    ) \
+      , boost::mpl::always<boost::mpl::true_> \
+    >
+# endif
+
+# define BOOST_PARAMETER_FUNCTION_PARAMETERS(tag_namespace, base, args)             \
+    template <class BoostParameterDummy>                                            \
+    struct BOOST_PP_CAT(                                                            \
+            BOOST_PP_CAT(boost_param_params_, __LINE__)                             \
+          , BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base)                              \
+    ) : boost::parameter::parameters<                                               \
+            BOOST_PP_SEQ_FOR_EACH_I(                                                \
+                BOOST_PARAMETER_FUNCTION_PARAMETERS_M, tag_namespace, args          \
+            )                                                                       \
+        >                                                                           \
+    {};                                                                             \
+                                                                                    \
+    typedef BOOST_PP_CAT( \
+            BOOST_PP_CAT(boost_param_params_, __LINE__) \
+          , BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base) \
+    )<int>
+
+// Defines result type metafunction
+# define BOOST_PARAMETER_FUNCTION_RESULT_ARG(z, _, i, x) \
+    BOOST_PP_COMMA_IF(i) class BOOST_PP_TUPLE_ELEM(3,1,x)
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_RESULT_(result, name, args)                                   \
+    template <class Args>                                                                       \
+    struct BOOST_PARAMETER_FUNCTION_RESULT_NAME(name)                                           \
+    {                                                                                           \
+        typedef typename BOOST_PARAMETER_PARENTHESIZED_TYPE(result) type;                       \
+    };
+
+# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+
+#  define BOOST_PARAMETER_FUNCTION_RESULT(result, name, args)  \
+    BOOST_PARAMETER_FUNCTION_RESULT_(result, name, args)        \
+    template <>                                                 \
+    struct BOOST_PARAMETER_FUNCTION_RESULT_NAME(name)<int>      \
+    { typedef int type; };
+
+# else
+
+#  define BOOST_PARAMETER_FUNCTION_RESULT(result, name, args)  \
+    BOOST_PARAMETER_FUNCTION_RESULT_(result, name, args)
+
+# endif
+
+// Defines implementation function
+# define BOOST_PARAMETER_FUNCTION_IMPL_HEAD(name)           \
+    template <class Args>                                   \
+    typename BOOST_PARAMETER_FUNCTION_RESULT_NAME(name)<    \
+       Args                                                 \
+    >::type BOOST_PARAMETER_IMPL(name)(Args const& args)
+
+# define BOOST_PARAMETER_FUNCTION_IMPL_FWD(name) \
+    BOOST_PARAMETER_FUNCTION_IMPL_HEAD(name);
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_SPLIT_ARG_required(state, arg) \
+    ( \
+        BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(4, 0, state)) \
+      , BOOST_PP_SEQ_PUSH_BACK(BOOST_PP_TUPLE_ELEM(4, 1, state), arg) \
+      , BOOST_PP_TUPLE_ELEM(4, 2, state) \
+      , BOOST_PP_TUPLE_ELEM(4, 3, state) \
+    )
+
+# define BOOST_PARAMETER_FUNCTION_SPLIT_ARG_deduced_required(state, arg) \
+    BOOST_PARAMETER_FUNCTION_SPLIT_ARG_required(state, arg)
+
+# define BOOST_PARAMETER_FUNCTION_SPLIT_ARG_optional(state, arg) \
+    ( \
+        BOOST_PP_TUPLE_ELEM(4, 0, state) \
+      , BOOST_PP_TUPLE_ELEM(4, 1, state) \
+      , BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(4, 2, state)) \
+      , BOOST_PP_SEQ_PUSH_BACK(BOOST_PP_TUPLE_ELEM(4, 3, state), arg) \
+    )
+
+# define BOOST_PARAMETER_FUNCTION_SPLIT_ARG_deduced_optional(state, arg) \
+    BOOST_PARAMETER_FUNCTION_SPLIT_ARG_optional(state, arg)
+
+# define BOOST_PARAMETER_FUNCTION_SPLIT_ARG(s, state, arg) \
+    BOOST_PP_CAT( \
+        BOOST_PARAMETER_FUNCTION_SPLIT_ARG_ \
+      , BOOST_PARAMETER_FN_ARG_QUALIFIER(arg) \
+    )(state, arg)
+
+// Returns (required_count, required, optional_count, optionals) tuple
+# define BOOST_PARAMETER_FUNCTION_SPLIT_ARGS(args) \
+    BOOST_PP_SEQ_FOLD_LEFT( \
+        BOOST_PARAMETER_FUNCTION_SPLIT_ARG \
+      , (0,BOOST_PP_SEQ_NIL, 0,BOOST_PP_SEQ_NIL) \
+      , args \
+    )
+
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_ARG_NAME(keyword) \
+    BOOST_PP_CAT(BOOST_PP_CAT(keyword,_),type)
+
+// Helpers used as parameters to BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS.
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_TEMPLATE_ARG(r, _, arg) \
+    , class BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_ARG_NAME( \
+              BOOST_PARAMETER_FN_ARG_KEYWORD(arg) \
+      )
+
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_ARG(r, _, arg) \
+    , BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_ARG_NAME( \
+              BOOST_PARAMETER_FN_ARG_KEYWORD(arg) \
+      )& BOOST_PARAMETER_FN_ARG_KEYWORD(arg)
+
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_PARAMETER(r, _, arg) \
+    , BOOST_PARAMETER_FN_ARG_KEYWORD(arg)
+
+// Produces a name for the dispatch functions.
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_NAME(name) \
+    BOOST_PP_CAT( \
+        boost_param_default_ \
+      , BOOST_PP_CAT(__LINE__, BOOST_PARAMETER_MEMBER_FUNCTION_NAME(name)) \
+    )
+
+// Helper macro used below to produce lists based on the keyword argument
+// names. macro is applied to every element. n is the number of
+// optional arguments that should be included.
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS(macro, n, split_args) \
+    BOOST_PP_SEQ_FOR_EACH( \
+        macro \
+      , ~ \
+      , BOOST_PP_TUPLE_ELEM(4,1,split_args) \
+    ) \
+    BOOST_PP_SEQ_FOR_EACH( \
+        macro \
+      , ~ \
+      , BOOST_PP_SEQ_FIRST_N( \
+          BOOST_PP_SUB(BOOST_PP_TUPLE_ELEM(4,2,split_args), n) \
+        , BOOST_PP_TUPLE_ELEM(4,3,split_args) \
+        ) \
+    )
+
+// Generates a keyword | default expression.
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_EVAL_DEFAULT(arg, tag_namespace) \
+    boost::parameter::keyword< \
+        tag_namespace::BOOST_PARAMETER_FN_ARG_KEYWORD(arg) \
+    >::instance | boost::parameter::aux::use_default_tag()
+
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_GET_ARG(arg, tag_ns) \
+    BOOST_PARAMETER_FUNCTION_CAST( \
+        args[ \
+            BOOST_PARAMETER_FUNCTION_DEFAULT_EVAL_DEFAULT( \
+                arg, tag_ns \
+            ) \
+        ] \
+      , BOOST_PARAMETER_FN_ARG_PRED(arg) \
+      , Args \
+    )
+
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_BODY(name, n, split_args, tag_namespace) \
+    { \
+        return BOOST_PARAMETER_FUNCTION_DEFAULT_NAME(name)( \
+            (ResultType(*)())0 \
+          , args \
+          , 0L \
+            BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS( \
+                BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_PARAMETER \
+              , n \
+              , split_args \
+            ) \
+          , BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_GET_ARG( \
+                BOOST_PP_SEQ_ELEM( \
+                    BOOST_PP_SUB(BOOST_PP_TUPLE_ELEM(4,2,split_args), n) \
+                  , BOOST_PP_TUPLE_ELEM(4,3,split_args) \
+                ) \
+              , tag_namespace \
+            ) \
+        ); \
+    }
+
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_EVAL_ACTUAL_DEFAULT(arg) \
+    BOOST_PARAMETER_FUNCTION_CAST( \
+        boost::parameter::aux::as_lvalue(BOOST_PARAMETER_FN_ARG_DEFAULT(arg), 0L) \
+      , BOOST_PARAMETER_FN_ARG_PRED(arg) \
+      , Args \
+    )
+
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_EVAL_DEFAULT_BODY(name, n, split_args, tag_ns, const_) \
+    template < \
+        class ResultType \
+      , class Args \
+        BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS( \
+            BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_TEMPLATE_ARG \
+          , BOOST_PP_INC(n) \
+          , split_args \
+        ) \
+    > \
+    BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(name) \
+    ResultType BOOST_PARAMETER_FUNCTION_DEFAULT_NAME(name)( \
+        ResultType(*)() \
+      , Args const& args \
+      , long \
+        BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS( \
+            BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_ARG \
+          , BOOST_PP_INC(n) \
+          , split_args \
+        ) \
+      , boost::parameter::aux::use_default_tag \
+    ) BOOST_PP_EXPR_IF(const_, const) \
+    { \
+        return BOOST_PARAMETER_FUNCTION_DEFAULT_NAME(name)( \
+            (ResultType(*)())0 \
+          , args \
+          , 0L \
+            BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS( \
+                BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_PARAMETER \
+              , BOOST_PP_INC(n) \
+              , split_args \
+            ) \
+          , BOOST_PARAMETER_FUNCTION_DEFAULT_EVAL_ACTUAL_DEFAULT( \
+                BOOST_PP_SEQ_ELEM( \
+                    BOOST_PP_SUB(BOOST_PP_TUPLE_ELEM(4,2,split_args), BOOST_PP_INC(n)) \
+                  , BOOST_PP_TUPLE_ELEM(4,3,split_args) \
+                ) \
+            ) \
+        ); \
+    }
+
+// Produces a forwarding layer in the default evaluation machine.
+//
+// data is a tuple:
+//
+//   (name, split_args)
+//
+// Where name is the base name of the function, and split_args is a tuple:
+//
+//   (required_count, required_args, optional_count, required_args)
+//
+
+
+// defines the actual function body for BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION below.
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION0(z, n, data) \
+    template < \
+        class ResultType \
+      , class Args \
+        BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS( \
+            BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_TEMPLATE_ARG \
+          , n \
+          , BOOST_PP_TUPLE_ELEM(5,1,data) \
+        ) \
+    > \
+    BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(BOOST_PP_TUPLE_ELEM(5,0,data)) \
+    ResultType BOOST_PARAMETER_FUNCTION_DEFAULT_NAME(BOOST_PP_TUPLE_ELEM(5,0,data))( \
+        ResultType(*)() \
+      , Args const& args \
+      , int \
+        BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS( \
+            BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_ARG \
+          , n \
+          , BOOST_PP_TUPLE_ELEM(5,1,data) \
+        ) \
+    ) BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(5,2,data), const) \
+    BOOST_PP_IF( \
+        n \
+      , BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_BODY \
+      , ; BOOST_PP_TUPLE_EAT(4) \
+    )( \
+        BOOST_PP_TUPLE_ELEM(5,0,data) \
+      , n \
+      , BOOST_PP_TUPLE_ELEM(5,1,data) \
+      , BOOST_PP_TUPLE_ELEM(5,3,data) \
+    )
+
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION(z, n, data) \
+    BOOST_PP_IF( \
+        BOOST_PP_AND( \
+            BOOST_PP_NOT(n) \
+          , BOOST_PP_TUPLE_ELEM(5,4,data) \
+        ) \
+      , BOOST_PP_TUPLE_EAT(3) \
+      , BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION0 \
+    )(z, n, data) \
+    BOOST_PP_IF( \
+        BOOST_PP_EQUAL(n, BOOST_PP_TUPLE_ELEM(4,2,BOOST_PP_TUPLE_ELEM(5,1,data))) \
+      , BOOST_PP_TUPLE_EAT(5) \
+      , BOOST_PARAMETER_FUNCTION_DEFAULT_EVAL_DEFAULT_BODY \
+    )( \
+        BOOST_PP_TUPLE_ELEM(5,0,data) \
+      , n \
+      , BOOST_PP_TUPLE_ELEM(5,1,data) \
+      , BOOST_PP_TUPLE_ELEM(5,3,data) \
+      , BOOST_PP_TUPLE_ELEM(5,2,data) \
+    )
+
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_GET_ARG(r, tag_ns, arg) \
+    , BOOST_PARAMETER_FUNCTION_CAST( \
+          args[ \
+              boost::parameter::keyword<tag_ns::BOOST_PARAMETER_FN_ARG_KEYWORD(arg)>::instance \
+          ] \
+        , BOOST_PARAMETER_FN_ARG_PRED(arg) \
+        , Args \
+      )
+
+// Generates the function template that recives a ArgumentPack, and then
+// goes on to call the layers of overloads generated by 
+// BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER.
+# define BOOST_PARAMETER_FUNCTION_INITIAL_DISPATCH_FUNCTION(name, split_args, const_, tag_ns) \
+    template <class Args> \
+    typename BOOST_PARAMETER_FUNCTION_RESULT_NAME(name)<Args>::type \
+    BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(name) \
+    BOOST_PARAMETER_IMPL(name)(Args const& args) BOOST_PP_EXPR_IF(const_, const) \
+    { \
+        return BOOST_PARAMETER_FUNCTION_DEFAULT_NAME(name)( \
+            (typename BOOST_PARAMETER_FUNCTION_RESULT_NAME(name)<Args>::type(*)())0 \
+          , args \
+          , 0L \
+ \
+            BOOST_PP_SEQ_FOR_EACH( \
+                BOOST_PARAMETER_FUNCTION_DEFAULT_GET_ARG \
+              , tag_ns \
+              , BOOST_PP_TUPLE_ELEM(4,1,split_args) \
+            ) \
+ \
+        ); \
+    }
+
+// Helper for BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER below.
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER_AUX( \
+    name, split_args, skip_fwd_decl, const_, tag_namespace \
+  ) \
+    BOOST_PP_REPEAT_FROM_TO( \
+        0 \
+      , BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(4, 2, split_args)) \
+      , BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION \
+      , (name, split_args, const_, tag_namespace, skip_fwd_decl) \
+    ) \
+ \
+    BOOST_PARAMETER_FUNCTION_INITIAL_DISPATCH_FUNCTION(name, split_args, const_, tag_namespace) \
+\
+    template < \
+        class ResultType \
+      , class Args \
+        BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS( \
+            BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_TEMPLATE_ARG \
+          , 0 \
+          , split_args \
+        ) \
+    > \
+    BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(name) \
+    ResultType BOOST_PARAMETER_FUNCTION_DEFAULT_NAME(name)( \
+        ResultType(*)() \
+      , Args const& args \
+      , int \
+        BOOST_PARAMETER_FUNCTION_DEFAULT_ARGUMENTS( \
+            BOOST_PARAMETER_FUNCTION_DEFAULT_FUNCTION_ARG \
+          , 0 \
+          , split_args \
+        ) \
+    ) BOOST_PP_EXPR_IF(const_, const)
+
+// Generates a bunch of forwarding functions that each extract
+// one more argument.
+# define BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER(name, args, skip_fwd_decl, const_, tag_ns) \
+    BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER_AUX( \
+        name, BOOST_PARAMETER_FUNCTION_SPLIT_ARGS(args), skip_fwd_decl, const_, tag_ns \
+    )
+/**/
+
+// Defines the result metafunction and the parameters specialization.
+# define BOOST_PARAMETER_FUNCTION_HEAD(result, name, tag_namespace, args)   \
+      BOOST_PARAMETER_FUNCTION_RESULT(result, name, args)                   \
+                                                                            \
+          BOOST_PARAMETER_FUNCTION_PARAMETERS(tag_namespace, name, args)    \
+          BOOST_PARAMETER_FUNCTION_PARAMETERS_NAME(name);                   \
+
+// Helper for BOOST_PARAMETER_FUNCTION below.
+# define BOOST_PARAMETER_FUNCTION_AUX(result, name, tag_namespace, args)    \
+    BOOST_PARAMETER_FUNCTION_HEAD(result, name, tag_namespace, args)         \
+    BOOST_PARAMETER_FUNCTION_IMPL_HEAD(name); \
+\
+    BOOST_PARAMETER_FUNCTION_FWD_FUNCTIONS(                                  \
+        result, name, args, 0                                                \
+      , BOOST_PARAMETER_FUNCTION_FWD_COMBINATIONS(args)                      \
+    )                                                                        \
+                                                                             \
+    BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER(name, args, 0, 0, tag_namespace)
+
+// Defines a Boost.Parameter enabled function with the new syntax.
+# define BOOST_PARAMETER_FUNCTION(result, name, tag_namespace, args)    \
+    BOOST_PARAMETER_FUNCTION_AUX(                                       \
+        result, name, tag_namespace                                      \
+      , BOOST_PARAMETER_FLATTEN(3, 2, 3, args)                           \
+    )                                                                    \
+/**/
+
+// Defines a Boost.Parameter enabled function.
+# define BOOST_PARAMETER_BASIC_FUNCTION_AUX(result, name, tag_namespace, args)    \
+    BOOST_PARAMETER_FUNCTION_HEAD(result, name, tag_namespace, args)        \
+                                                                            \
+    BOOST_PARAMETER_FUNCTION_IMPL_FWD(name)                                 \
+                                                                            \
+    BOOST_PARAMETER_FUNCTION_FWD_FUNCTIONS(                                 \
+        result, name, args, 0                                               \
+      , BOOST_PARAMETER_FUNCTION_FWD_COMBINATIONS(args)                     \
+    )                                                                       \
+                                                                            \
+    BOOST_PARAMETER_FUNCTION_IMPL_HEAD(name)
+
+# define BOOST_PARAMETER_BASIC_FUNCTION(result, name, tag_namespace, args)  \
+    BOOST_PARAMETER_BASIC_FUNCTION_AUX(                                     \
+        result, name, tag_namespace                                     \
+      , BOOST_PARAMETER_FLATTEN(2, 2, 3, args)                          \
+    )                                                                   \
+/**/
+
+// Defines a Boost.Parameter enabled member function.
+# define BOOST_PARAMETER_BASIC_MEMBER_FUNCTION_AUX(result, name, tag_namespace, args, const_) \
+    BOOST_PARAMETER_FUNCTION_HEAD(result, name, tag_namespace, args)                    \
+                                                                                        \
+    BOOST_PARAMETER_FUNCTION_FWD_FUNCTIONS(                                             \
+        result, name, args, const_                                                      \
+      , BOOST_PARAMETER_FUNCTION_FWD_COMBINATIONS(args)                                 \
+    )                                                                                   \
+                                                                                        \
+    BOOST_PARAMETER_FUNCTION_IMPL_HEAD(name) BOOST_PP_EXPR_IF(const_, const)            \
+/**/
+
+# define BOOST_PARAMETER_BASIC_MEMBER_FUNCTION(result, name, tag_namespace, args) \
+    BOOST_PARAMETER_BASIC_MEMBER_FUNCTION_AUX( \
+        result, name, tag_namespace \
+      , BOOST_PARAMETER_FLATTEN(2, 2, 3, args) \
+      , 0 \
+    )
+/**/
+
+# define BOOST_PARAMETER_BASIC_CONST_MEMBER_FUNCTION(result, name, tag_namespace, args) \
+    BOOST_PARAMETER_BASIC_MEMBER_FUNCTION_AUX( \
+        result, name, tag_namespace \
+      , BOOST_PARAMETER_FLATTEN(2, 2, 3, args) \
+      , 1 \
+    )
+/**/
+
+
+
+# define BOOST_PARAMETER_MEMBER_FUNCTION_AUX(result, name, tag_namespace, const_, args)    \
+    BOOST_PARAMETER_FUNCTION_HEAD(result, name, tag_namespace, args)         \
+\
+    BOOST_PARAMETER_FUNCTION_FWD_FUNCTIONS(                                  \
+        result, name, args, const_                                           \
+      , BOOST_PARAMETER_FUNCTION_FWD_COMBINATIONS(args)                      \
+    )                                                                        \
+                                                                             \
+    BOOST_PARAMETER_FUNCTION_DEFAULT_LAYER(name, args, 1, const_, tag_namespace)
+
+// Defines a Boost.Parameter enabled function with the new syntax.
+# define BOOST_PARAMETER_MEMBER_FUNCTION(result, name, tag_namespace, args)    \
+    BOOST_PARAMETER_MEMBER_FUNCTION_AUX(                                       \
+        result, name, tag_namespace, 0                                     \
+      , BOOST_PARAMETER_FLATTEN(3, 2, 3, args)                           \
+    )                                                                    \
+/**/
+
+# define BOOST_PARAMETER_CONST_MEMBER_FUNCTION(result, name, tag_namespace, args)    \
+    BOOST_PARAMETER_MEMBER_FUNCTION_AUX(                                       \
+        result, name, tag_namespace, 1                                     \
+      , BOOST_PARAMETER_FLATTEN(3, 2, 3, args)                           \
+    )                                                                    \
+/**/
+
+// Defines a Boost.Parameter enabled constructor.
+
+# define BOOST_PARAMETER_FUNCTION_ARGUMENT(r, _, i, elem) \
+    BOOST_PP_COMMA_IF(i) elem& BOOST_PP_CAT(a, i)
+/**/
+
+# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+
+// Older MSVC can't do what's necessary to handle commas in base names; just
+// use a typedef instead if you have a base name that contains commas.
+#  define BOOST_PARAMETER_PARENTHESIZED_BASE(x) BOOST_PP_SEQ_HEAD(x)
+
+# else
+
+#  define BOOST_PARAMETER_PARENTHESIZED_BASE(x) BOOST_PARAMETER_PARENTHESIZED_TYPE(x)
+
+# endif
+
+# define BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR00(z, n, r, data, elem) \
+    BOOST_PP_IF( \
+        n \
+      , BOOST_PARAMETER_FUNCTION_FWD_FUNCTION_TEMPLATE_Z, BOOST_PP_TUPLE_EAT(2) \
+    )(z, n) \
+    BOOST_PP_EXPR_IF(BOOST_PP_EQUAL(n,1), explicit) \
+    BOOST_PP_TUPLE_ELEM(6,2,data)( \
+        BOOST_PP_IF( \
+            n \
+          , BOOST_PP_SEQ_FOR_EACH_I_R \
+          , BOOST_PP_TUPLE_EAT(4) \
+        )( \
+            r \
+          , BOOST_PARAMETER_FUNCTION_ARGUMENT \
+          , ~ \
+          , elem \
+        ) \
+        BOOST_PP_IF(n, BOOST_PARAMETER_FUNCTION_FWD_MATCH_Z, BOOST_PP_TUPLE_EAT(4))( \
+            z \
+          , BOOST_PP_TUPLE_ELEM(6,3,data) \
+          , BOOST_PP_CAT(constructor_parameters, __LINE__) \
+          , n \
+        ) \
+    ) \
+      : BOOST_PARAMETER_PARENTHESIZED_BASE(BOOST_PP_TUPLE_ELEM(6,3,data)) ( \
+            BOOST_PP_CAT(constructor_parameters, __LINE__)()( \
+                BOOST_PP_ENUM_PARAMS_Z(z, n, a) \
+            ) \
+        ) \
+    {}
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR0(r, data, elem) \
+    BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR00( \
+        BOOST_PP_TUPLE_ELEM(6,0,data) \
+      , BOOST_PP_TUPLE_ELEM(6,1,data) \
+      , r \
+      , data \
+      , elem \
+    )
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_PRODUCT(r, product) \
+    (product)
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR_ARITY_0(z, n, data) \
+    BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR00( \
+        z, n, BOOST_PP_DEDUCE_R() \
+      , (z, n, BOOST_PP_TUPLE_REM(4) data) \
+      , ~ \
+    )
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR_ARITY_N(z, n, data) \
+    BOOST_PP_SEQ_FOR_EACH( \
+        BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR0 \
+      , (z, n, BOOST_PP_TUPLE_REM(4) data) \
+      , BOOST_PP_SEQ_FOR_EACH_PRODUCT( \
+            BOOST_PARAMETER_FUNCTION_FWD_PRODUCT \
+          , BOOST_PP_SEQ_FIRST_N( \
+                n, BOOST_PP_TUPLE_ELEM(4,2,data) \
+            ) \
+        ) \
+    )
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR(z, n, data) \
+    BOOST_PP_IF( \
+        n \
+      , BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR_ARITY_N \
+      , BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR_ARITY_0 \
+    )(z,n,data) \
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTORS0(class_,base,args,combinations,range) \
+    BOOST_PP_REPEAT_FROM_TO( \
+        BOOST_PP_TUPLE_ELEM(2,0,range), BOOST_PP_TUPLE_ELEM(2,1,range) \
+      , BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTOR \
+      , (class_,base,combinations,BOOST_PP_TUPLE_ELEM(2,1,range)) \
+    )
+/**/
+
+# define BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTORS(class_,base,args,combinations) \
+    BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTORS0( \
+        class_, base, args, combinations, BOOST_PARAMETER_ARITY_RANGE(args) \
+    )
+/**/
+
+# define BOOST_PARAMETER_CONSTRUCTOR_AUX(class_, base, tag_namespace, args) \
+    BOOST_PARAMETER_FUNCTION_PARAMETERS(tag_namespace, ctor, args)          \
+        BOOST_PP_CAT(constructor_parameters, __LINE__); \
+\
+    BOOST_PARAMETER_FUNCTION_FWD_CONSTRUCTORS( \
+        class_, base, args \
+      , BOOST_PARAMETER_FUNCTION_FWD_COMBINATIONS(args) \
+    ) \
+/**/
+
+# define BOOST_PARAMETER_CONSTRUCTOR(class_, base, tag_namespace, args) \
+    BOOST_PARAMETER_CONSTRUCTOR_AUX( \
+        class_, base, tag_namespace \
+      , BOOST_PARAMETER_FLATTEN(2, 2, 3, args) \
+    )
+/**/
+
+# ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+#  define BOOST_PARAMETER_FUNCTION_FWD_COMBINATION(r, _, i, elem) \
+    (BOOST_PP_IF( \
+        BOOST_PARAMETER_FUNCTION_IS_KEYWORD_QUALIFIER( \
+            BOOST_PARAMETER_FN_ARG_NAME(elem) \
+        ) \
+      , (const ParameterArgumentType ## i)(ParameterArgumentType ## i) \
+      , (const ParameterArgumentType ## i) \
+    ))
+// MSVC6.5 lets us bind rvalues to T&.
+# elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#  define BOOST_PARAMETER_FUNCTION_FWD_COMBINATION(r, _, i, elem) \
+    (BOOST_PP_IF( \
+        BOOST_PARAMETER_FUNCTION_IS_KEYWORD_QUALIFIER( \
+            BOOST_PARAMETER_FN_ARG_NAME(elem) \
+        ) \
+      , (ParameterArgumentType ## i) \
+      , (const ParameterArgumentType ## i) \
+    ))
+// No partial ordering. This feature doesn't work.
+// This is exactly the same as for VC6.5, but we might change it later.
+# else
+#  define BOOST_PARAMETER_FUNCTION_FWD_COMBINATION(r, _, i, elem) \
+    (BOOST_PP_IF( \
+        BOOST_PARAMETER_FUNCTION_IS_KEYWORD_QUALIFIER( \
+            BOOST_PARAMETER_FN_ARG_NAME(elem) \
+        ) \
+      , (ParameterArgumentType ## i) \
+      , (const ParameterArgumentType ## i) \
+    ))
+# endif
+
+# define BOOST_PARAMETER_FUNCTION_FWD_COMBINATIONS(args) \
+    BOOST_PP_SEQ_FOR_EACH_I(BOOST_PARAMETER_FUNCTION_FWD_COMBINATION, ~, args)
+
+#endif // BOOST_PARAMETER_PREPROCESSOR_060206_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/parameter/value_type.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/parameter/value_type.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_PARAMETER_VALUE_TYPE_HPP
+#define BOOST_TYPEOF_BOOST_PARAMETER_VALUE_TYPE_HPP
+
+# include <boost/typeof/typeof.hpp>
+# include <boost/typeof/boost/parameter/aux_/result_of0.hpp>
+# include <boost/typeof/boost/parameter/aux_/void.hpp>
+# include <boost/parameter/value_type.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::value_type, 2);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::value_type, 3);
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::parameter::lazy_value_type, 3);
+
+#endif  // BOOST_TYPEOF_BOOST_PARAMETER_VALUE_TYPE_HPP
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/clone_allocator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/clone_allocator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,18 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_CLONE_ALLOCATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_CLONE_ALLOCATOR_HPP_INCLUDED
+
+#include <boost/ptr_container/clone_allocator.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(::boost::heap_clone_allocator)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::view_clone_allocator)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_CLONE_ALLOCATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/detail/ptr_map_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/detail/ptr_map_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,18 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_DETAIL_MAP_ITERATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_DETAIL_MAP_ITERATOR_HPP_INCLUDED
+
+#include <boost/ptr_container/detail/map_iterator.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_container_detail::ref_pair, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_map_iterator, 3)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_DETAIL_MAP_ITERATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_DETAIL_VOID_PTR_ITERATOR_HPP_INC
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_DETAIL_VOID_PTR_ITERATOR_HPP_INC
+
+#include <boost/ptr_container/detail/void_ptr_iterator.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::void_ptr_iterator, 2)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_DETAIL_VOID_PTR_ITERATOR_HPP_INC
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_array.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_array.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,26 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_PTR_ARRAY_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_ARRAY_HPP_INCLUDED
+
+#include <boost/ptr_container/ptr_array.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/ptr_container/clone_allocator.hpp>
+#include <boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::ptr_array
+  , (typename)(BOOST_TYPEOF_INTEGRAL(::std::size_t))
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::boost::ptr_array
+  , (typename)(BOOST_TYPEOF_INTEGRAL(::std::size_t))(typename)
+)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_ARRAY_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_deque.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_deque.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_PTR_DEQUE_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_DEQUE_HPP_INCLUDED
+
+#include <boost/ptr_container/ptr_deque.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/boost/ptr_container/clone_allocator.hpp>
+#include <boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_deque, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_deque, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_deque, 3)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_DEQUE_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_list.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_list.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_PTR_LIST_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_LIST_HPP_INCLUDED
+
+#include <boost/ptr_container/ptr_list.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/boost/ptr_container/clone_allocator.hpp>
+#include <boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_list, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_list, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_list, 3)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_LIST_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_map.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_map.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,30 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_PTR_MAP_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_MAP_HPP_INCLUDED
+
+#include <boost/ptr_container/ptr_map.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/utility.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/boost/ptr_container/clone_allocator.hpp>
+#include <boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp>
+#include <boost/typeof/boost/ptr_container/detail/ptr_map_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_map, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_map, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_map, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_map, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multimap, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multimap, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multimap, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multimap, 5)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_MAP_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_set.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_set.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,28 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_PTR_SET_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_SET_HPP_INCLUDED
+
+#include <boost/ptr_container/ptr_set.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/boost/ptr_container/clone_allocator.hpp>
+#include <boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_set, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_set, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_set, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_set, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multiset, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multiset, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multiset, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_multiset, 4)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_SET_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_unordered_map.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_unordered_map.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,33 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_PTR_UNORDERED_MAP_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_UNORDERED_MAP_HPP_INCLUDED
+
+#include <boost/ptr_container/ptr_set.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/functional/hash.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/utility.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/boost/ptr_container/clone_allocator.hpp>
+#include <boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp>
+#include <boost/typeof/boost/ptr_container/detail/ptr_map_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_map, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_map, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_map, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_map, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_map, 6)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_multimap, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_multimap, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_multimap, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_multimap, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_multimap, 6)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_UNORDERED_MAP_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_unordered_set.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_unordered_set.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,31 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_PTR_UNORDERED_SET_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_UNORDERED_SET_HPP_INCLUDED
+
+#include <boost/ptr_container/ptr_set.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/functional/hash.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/boost/ptr_container/clone_allocator.hpp>
+#include <boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_set, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_set, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_set, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_set, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_set, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_multiset, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_multiset, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_multiset, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_multiset, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_unordered_multiset, 5)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_UNORDERED_SET_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_vector.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ptr_container/ptr_vector.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,22 @@
+// 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_TYPEOF_BOOST_PTR_CONTAINER_PTR_VECTOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_VECTOR_HPP_INCLUDED
+
+#include <boost/ptr_container/ptr_vector.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/memory.hpp>
+#include <boost/typeof/boost/ptr_container/clone_allocator.hpp>
+#include <boost/typeof/boost/ptr_container/detail/void_ptr_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_vector, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_vector, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::ptr_vector, 3)
+
+#endif  // BOOST_TYPEOF_BOOST_PTR_CONTAINER_PTR_VECTOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/rational.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/rational.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,16 @@
+// 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_TYPEOF_BOOST_RATIONAL_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_RATIONAL_HPP_INCLUDED
+
+#include <boost/rational.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::rational, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_RATIONAL_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/ref.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/ref.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_TYPEOF_BOOST_REF_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_REF_HPP_INCLUDED
+
+#include <boost/ref.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::reference_wrapper, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::is_reference_wrapper, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unwrap_reference, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_REF_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/shared_container_iterator.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/shared_container_iterator.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,17 @@
+// 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_TYPEOF_BOOST_SHARED_CONTAINER_ITERATOR_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_SHARED_CONTAINER_ITERATOR_HPP_INCLUDED
+
+#include <boost/shared_container_iterator.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::shared_container_iterator, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_SHARED_CONTAINER_ITERATOR_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/unordered/unordered_map.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/unordered/unordered_map.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,28 @@
+// 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_TYPEOF_BOOST_UNORDERED_MAP_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_UNORDERED_MAP_HPP_INCLUDED
+
+#include <boost/unordered/unordered_map.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/functional/hash.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/utility.hpp>
+#include <boost/typeof/std/memory.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_map, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_map, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_map, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_map, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_multimap, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_multimap, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_multimap, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_multimap, 5)
+
+#endif  // BOOST_TYPEOF_BOOST_UNORDERED_MAP_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/unordered/unordered_set.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/unordered/unordered_set.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_BOOST_UNORDERED_SET_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_UNORDERED_SET_HPP_INCLUDED
+
+#include <boost/unordered/unordered_set.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/functional/hash.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/memory.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_set, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_set, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_set, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_set, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_multiset, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_multiset, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_multiset, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::unordered_multiset, 4)
+
+#endif  // BOOST_TYPEOF_BOOST_UNORDERED_SET_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/boost/utility/result_of.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/boost/utility/result_of.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,18 @@
+// 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_TYPEOF_BOOST_UTILITY_RESULT_OF_HPP_INCLUDED
+#define BOOST_TYPEOF_BOOST_UTILITY_RESULT_OF_HPP_INCLUDED
+
+#include <boost/utility/result_of.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::result_of, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tr1_result_of, 1)
+
+#endif  // BOOST_TYPEOF_BOOST_UTILITY_RESULT_OF_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/std/hash_map.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/std/hash_map.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,48 @@
+// 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_TYPEOF_STD_HASH_MAP_HPP_INCLUDED
+#define BOOST_TYPEOF_STD_HASH_MAP_HPP_INCLUDED
+
+#if defined BOOST_HAS_HASH
+
+#  if defined BOOST_HASH_MAP_HEADER
+#    include BOOST_HASH_MAP_HEADER
+#  else
+#    include <hash_map>
+#  endif
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/functional/hash.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/memory.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::BOOST_STD_EXTENSION_NAMESPACE::hash_map, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::BOOST_STD_EXTENSION_NAMESPACE::hash_map, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::BOOST_STD_EXTENSION_NAMESPACE::hash_map, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::BOOST_STD_EXTENSION_NAMESPACE::hash_map, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::BOOST_STD_EXTENSION_NAMESPACE::hash_multimap
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::BOOST_STD_EXTENSION_NAMESPACE::hash_multimap
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::BOOST_STD_EXTENSION_NAMESPACE::hash_multimap
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::BOOST_STD_EXTENSION_NAMESPACE::hash_multimap
+  , 4
+)
+
+#endif  // !BOOST_HAS_HASH
+
+#endif  // BOOST_TYPEOF_STD_HASH_MAP_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/std/hash_set.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/std/hash_set.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,48 @@
+// 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_TYPEOF_STD_HASH_SET_HPP_INCLUDED
+#define BOOST_TYPEOF_STD_HASH_SET_HPP_INCLUDED
+
+#if defined BOOST_HAS_HASH
+
+#  if defined BOOST_HASH_SET_HEADER
+#    include BOOST_HASH_SET_HEADER
+#  else
+#    include <hash_set>
+#  endif
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/functional/hash.hpp>
+#include <boost/typeof/std/functional.hpp>
+#include <boost/typeof/std/memory.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::BOOST_STD_EXTENSION_NAMESPACE::hash_set, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::BOOST_STD_EXTENSION_NAMESPACE::hash_set, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::BOOST_STD_EXTENSION_NAMESPACE::hash_set, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::BOOST_STD_EXTENSION_NAMESPACE::hash_set, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::BOOST_STD_EXTENSION_NAMESPACE::hash_multiset
+  , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::BOOST_STD_EXTENSION_NAMESPACE::hash_multiset
+  , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::BOOST_STD_EXTENSION_NAMESPACE::hash_multiset
+  , 3
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::BOOST_STD_EXTENSION_NAMESPACE::hash_multiset
+  , 4
+)
+
+#endif  // !BOOST_HAS_HASH
+
+#endif  // BOOST_TYPEOF_STD_HASH_SET_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/std/slist.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/std/slist.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,30 @@
+// 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_TYPEOF_STD_SLIST_HPP_INCLUDED
+#define BOOST_TYPEOF_STD_SLIST_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_SLIST
+
+#  if defined BOOST_SLIST_HEADER
+#    include BOOST_SLIST_HEADER
+#  else
+#    include <slist>
+#  endif
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/std/memory.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(::BOOST_STD_EXTENSION_NAMESPACE::slist, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::BOOST_STD_EXTENSION_NAMESPACE::slist, 2)
+
+#endif  // !BOOST_NO_SLIST
+
+#endif  // BOOST_TYPEOF_STD_SLIST_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/std/tr1/array.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/std/tr1/array.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,23 @@
+// 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_TYPEOF_STD_TR1_ARRAY_HPP_INCLUDED
+#define BOOST_TYPEOF_STD_TR1_ARRAY_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tr1/array.hpp>
+
+#if defined BOOST_HAS_TR1_ARRAY
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+    ::std::tr1::array
+  , (typename)(BOOST_TYPEOF_INTEGRAL(::std::size_t))
+)
+#else
+#include <boost/typeof/boost/array.hpp>
+#endif
+
+#endif  // BOOST_TYPEOF_STD_TR1_ARRAY_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/std/tr1/functional.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/std/tr1/functional.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,49 @@
+// 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_TYPEOF_STD_TR1_FUNCTIONAL_HPP_INCLUDED
+#define BOOST_TYPEOF_STD_TR1_FUNCTIONAL_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tr1/functional.hpp>
+
+#if defined BOOST_HAS_TR1_REFERENCE_WRAPPER \
+ || defined BOOST_HAS_TR1_RESULT_OF \
+ || !defined BOOST_HAS_TR1_RESULT_OF \
+ && !defined BOOST_NO_SFINAE \
+ && !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION \
+ || defined BOOST_HAS_TR1_FUNCTION \
+ || defined BOOST_HAS_TR1_HASH
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+#endif
+
+#if defined BOOST_HAS_TR1_REFERENCE_WRAPPER
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::reference_wrapper, 1)
+#else
+#include <boost/typeof/boost/ref.hpp>
+#endif
+
+#if defined BOOST_HAS_TR1_RESULT_OF
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::result_of, 1)
+#elif !defined BOOST_NO_SFINAE \
+ && !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/utility/result_of.hpp>
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::result_of, 1)
+#endif
+
+#if defined BOOST_HAS_TR1_FUNCTION
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::function, 1)
+#else
+#include <boost/typeof/boost/function.hpp>
+#endif
+
+#if defined BOOST_HAS_TR1_HASH
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::hash, 1)
+#else
+#include <boost/typeof/boost/functional/hash.hpp>
+#endif
+
+#endif  // BOOST_TYPEOF_STD_TR1_FUNCTIONAL_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/std/tr1/unordered_map.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/std/tr1/unordered_map.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_STD_TR1_UNORDERED_MAP_HPP_INCLUDED
+#define BOOST_TYPEOF_STD_TR1_UNORDERED_MAP_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tr1/unordered_map.hpp>
+
+#if defined BOOST_HAS_TR1_UNORDERED_MAP
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_map, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_map, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_map, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_map, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_multimap, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_multimap, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_multimap, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_multimap, 5)
+#else
+#include <boost/typeof/boost/unordered/unordered_map.hpp>
+#endif
+
+#endif  // BOOST_TYPEOF_STD_TR1_UNORDERED_MAP_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/typeof/std/tr1/unordered_set.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/typeof/std/tr1/unordered_set.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,27 @@
+// 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_TYPEOF_STD_TR1_UNORDERED_SET_HPP_INCLUDED
+#define BOOST_TYPEOF_STD_TR1_UNORDERED_SET_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tr1/unordered_set.hpp>
+
+#if defined BOOST_HAS_TR1_UNORDERED_SET
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_set, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_set, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_set, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_set, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_multiset, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_multiset, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_multiset, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::std::tr1::unordered_multiset, 4)
+#else
+#include <boost/typeof/boost/unordered/unordered_set.hpp>
+#endif
+
+#endif  // BOOST_TYPEOF_STD_TR1_UNORDERED_SET_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/utility/get_iterator_second.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/utility/get_iterator_second.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,116 @@
+// 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_UTILITY_GET_ITERATOR_SECOND_HPP_INCLUDED
+#define BOOST_UTILITY_GET_ITERATOR_SECOND_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/ref.hpp>
+#include <boost/ptr_container/detail/map_iterator.hpp>
+
+//[reference__get_iterator_second_result
+namespace boost {
+
+    template <typename Iterator>
+    struct get_iterator_second_result
+    {
+        typedef typename ::std::tr1::remove_pointer<
+                    typename ::boost::unwrap_reference<
+                        BOOST_TYPEOF_TPL(::boost::ref(Iterator()->second))
+                    >::type
+                >::type&
+                type;
+    };
+}  // namespace boost
+//]
+
+namespace boost { namespace detail {
+
+    template <typename Iterator>
+    class get_iterator_second_helper
+    {
+     public:
+        typedef Iterator
+                argument_type;
+        typedef typename get_iterator_second_result<Iterator>::type
+                result_type;
+
+        result_type operator()(argument_type itr) const;
+
+     private:
+        static result_type _evaluate(Iterator itr, ::boost::mpl::true_);
+
+        static result_type _evaluate(Iterator itr, ::boost::mpl::false_);
+    };
+
+    template <typename Iterator>
+    inline typename get_iterator_second_helper<Iterator>::result_type
+        get_iterator_second_helper<Iterator>::operator()(
+            argument_type itr
+        ) const
+    {
+        typedef typename ::boost::iterator_value<Iterator>::type _value_type;
+
+        return get_iterator_second_helper<Iterator>::_evaluate(
+            itr
+          , typename ::boost::mpl::if_<
+                ::std::tr1::is_same<
+                    ::boost::ptr_container_detail::ref_pair<
+                        typename _value_type::first_type
+                      , typename _value_type::second_type
+                    >
+                  , _value_type
+                >
+              , ::boost::mpl::true_
+              , ::boost::mpl::false_
+            >::type()
+        );
+    }
+
+    template <typename Iterator>
+    inline typename get_iterator_second_helper<Iterator>::result_type
+        get_iterator_second_helper<Iterator>::_evaluate(
+            Iterator itr
+          , ::boost::mpl::true_
+        )
+    {
+        return *itr->second;
+    }
+
+    template <typename Iterator>
+    inline typename get_iterator_second_helper<Iterator>::result_type
+        get_iterator_second_helper<Iterator>::_evaluate(
+            Iterator itr
+          , ::boost::mpl::false_
+        )
+    {
+        return itr->second;
+    }
+}}  // namespace boost::detail
+
+//[reference__get_iterator_second
+namespace boost {
+
+    template <typename Iterator>
+    typename get_iterator_second_result<Iterator>::type
+        get_iterator_second(Iterator itr);
+
+    //<-
+    template <typename Iterator>
+    inline typename get_iterator_second_result<Iterator>::type
+        get_iterator_second(Iterator itr)
+    {
+        return detail::get_iterator_second_helper<Iterator>()(itr);
+    }
+    //->
+}  // namespace boost
+//]
+
+#endif  // BOOST_UTILITY_GET_ITERATOR_SECOND_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/utility/get_iterator_value_second.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/utility/get_iterator_value_second.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,122 @@
+// 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_UTILITY_GET_ITERATOR_VALUE_SECOND_HPP_INCLUDED
+#define BOOST_UTILITY_GET_ITERATOR_VALUE_SECOND_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/ref.hpp>
+#include <boost/ptr_container/detail/map_iterator.hpp>
+#include <boost/utility/get_reference.hpp>
+
+//[reference__get_iterator_value_second_result
+namespace boost {
+
+    template <typename IterValue>
+    struct get_iterator_value_second_result
+    {
+        typedef typename ::std::tr1::remove_pointer<
+                    typename ::boost::unwrap_reference<
+                        BOOST_TYPEOF_TPL(
+                            ::boost::ref(
+                                ::boost::get_reference<
+                                    IterValue
+                                >().second
+                            )
+                        )
+                    >::type
+                >::type&
+                type;
+    };
+}  // namespace boost
+//]
+
+namespace boost { namespace detail {
+
+    template <typename IterValue>
+    class get_iterator_value_second_helper
+    {
+     public:
+        typedef IterValue&
+                argument_type;
+        typedef typename get_iterator_value_second_result<IterValue>::type
+                result_type;
+
+        result_type operator()(argument_type itr) const;
+
+     private:
+        static result_type _evaluate(argument_type arg, ::boost::mpl::true_);
+
+        static result_type _evaluate(argument_type arg, ::boost::mpl::false_);
+    };
+
+    template <typename IterValue>
+    inline typename get_iterator_value_second_helper<IterValue>::result_type
+        get_iterator_value_second_helper<IterValue>::operator()(
+            argument_type arg
+        ) const
+    {
+        typedef typename ::std::tr1::remove_const<IterValue>::type _value_type;
+
+        return get_iterator_value_second_helper<IterValue>::_evaluate(
+            arg
+          , typename ::boost::mpl::if_<
+                ::std::tr1::is_same<
+                    ::boost::ptr_container_detail::ref_pair<
+                        typename _value_type::first_type
+                      , typename _value_type::second_type
+                    >
+                  , _value_type
+                >
+              , ::boost::mpl::true_
+              , ::boost::mpl::false_
+            >::type()
+        );
+    }
+
+    template <typename IterValue>
+    inline typename get_iterator_value_second_helper<IterValue>::result_type
+        get_iterator_value_second_helper<IterValue>::_evaluate(
+            argument_type arg
+          , ::boost::mpl::true_
+        )
+    {
+        return *arg.second;
+    }
+
+    template <typename IterValue>
+    inline typename get_iterator_value_second_helper<IterValue>::result_type
+        get_iterator_value_second_helper<IterValue>::_evaluate(
+            argument_type arg
+          , ::boost::mpl::false_
+        )
+    {
+        return arg.second;
+    }
+}}  // namespace boost::detail
+
+//[reference__get_iterator_value_second
+namespace boost {
+
+    template <typename IterValue>
+    typename get_iterator_value_second_result<IterValue>::type
+        get_iterator_value_second(IterValue& value);
+
+    //<-
+    template <typename IterValue>
+    inline typename get_iterator_value_second_result<IterValue>::type
+        get_iterator_value_second(IterValue& value)
+    {
+        return detail::get_iterator_value_second_helper<IterValue>()(value);
+    }
+    //->
+}  // namespace boost
+//]
+
+#endif  // BOOST_UTILITY_GET_ITERATOR_VALUE_SECOND_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/utility/get_reference.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/utility/get_reference.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,23 @@
+// 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_UTILITY_GET_REFERENCE_HPP_INCLUDED
+#define BOOST_UTILITY_GET_REFERENCE_HPP_INCLUDED
+
+#include <boost/typeof/boost/optional.hpp>
+
+//[reference__get_reference
+namespace boost {
+
+    template <typename T>
+    T& get_reference()
+    {
+        return ::boost::optional<T>().get();
+    }
+}  // namespace boost
+//]
+
+#endif  // BOOST_UTILITY_GET_REFERENCE_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/utility/is_mpl_boolean_constant.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/utility/is_mpl_boolean_constant.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,89 @@
+// 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_UTILITY_IS_MPL_BOOLEAN_CONSTANT_HPP_INCLUDED
+#define BOOST_UTILITY_IS_MPL_BOOLEAN_CONSTANT_HPP_INCLUDED
+
+#include <boost/mpl/aux_/config/forwarding.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/aux_/has_tag.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/tag.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/integral_c_tag.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/tr1/type_traits.hpp>
+
+namespace boost {
+
+    template <typename Tag>
+    struct is_mpl_boolean_constant_dispatch
+    {
+        template <typename T>
+        struct apply
+        {
+            typedef ::boost::mpl::false_ type;
+        };
+    };
+
+    /*
+     * Integral Constants are not Boolean Constants.
+     */
+    template <>
+    struct is_mpl_boolean_constant_dispatch< ::boost::mpl::integral_c_tag>
+    {
+        template <typename T>
+        struct apply
+#if !defined BOOST_MPL_CFG_NO_NESTED_FORWARDING
+          : ::boost::mpl::if_<
+                ::std::tr1::is_same<typename T::value_type,bool>
+              , ::boost::mpl::true_
+              , ::boost::mpl::false_
+            >
+        {
+#else
+        {
+            typedef typename ::boost::mpl::if_<
+                        ::std::tr1::is_same<typename T::value_type,bool>
+                      , ::boost::mpl::true_
+                      , ::boost::mpl::false_
+                    >::type
+                    type;
+#endif  // BOOST_MPL_CFG_NO_NESTED_FORWARDING
+        };
+    };
+
+    template <typename T>
+    struct is_mpl_boolean_constant_impl
+      : ::boost::mpl::apply_wrap1<
+            is_mpl_boolean_constant_dispatch<
+                typename ::boost::mpl::tag<T>::type
+            >
+          , T
+        >::type
+    {
+    };
+
+    //[reference__is_mpl_boolean_constant
+    template <typename T>
+    struct is_mpl_boolean_constant
+        //<-
+      : ::boost::mpl::if_<
+            ::boost::mpl::aux::has_tag<T>
+          , is_mpl_boolean_constant_impl<T>
+          , ::boost::mpl::false_
+        >::type
+        //->
+    {
+        // typedef ... type;
+        //<-
+        BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_mpl_boolean_constant, (T))
+        //->
+    };
+    //]
+}  // namespace boost
+
+#endif  // BOOST_UTILITY_IS_MPL_BOOLEAN_CONSTANT_HPP_INCLUDED
+
Added: sandbox/container_gen/boost/utility/is_mpl_integral_constant.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/boost/utility/is_mpl_integral_constant.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,89 @@
+// Copyright (C) 2005-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_UTILITY_IS_MPL_INTEGRAL_CONSTANT_HPP_INCLUDED
+#define BOOST_UTILITY_IS_MPL_INTEGRAL_CONSTANT_HPP_INCLUDED
+
+#include <boost/mpl/aux_/config/forwarding.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/aux_/has_tag.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/tag.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/integral_c_tag.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/tr1/type_traits.hpp>
+
+namespace boost {
+
+    template <typename Tag>
+    struct is_mpl_integral_constant_dispatch
+    {
+        template <typename T>
+        struct apply
+        {
+            typedef ::boost::mpl::false_ type;
+        };
+    };
+
+    /*
+     * Boolean Constants are not Integral Constants.
+     */
+    template <>
+    struct is_mpl_integral_constant_dispatch< ::boost::mpl::integral_c_tag>
+    {
+        template <typename T>
+        struct apply
+#if !defined BOOST_MPL_CFG_NO_NESTED_FORWARDING
+          : ::boost::mpl::if_<
+                ::std::tr1::is_same<typename T::value_type,bool>
+              , ::boost::mpl::false_
+              , ::boost::mpl::true_
+            >
+        {
+#else
+        {
+            typedef typename ::boost::mpl::if_<
+                        ::std::tr1::is_same<typename T::value_type,bool>
+                      , ::boost::mpl::false_
+                      , ::boost::mpl::true_
+                    >::type
+                    type;
+#endif  // BOOST_MPL_CFG_NO_NESTED_FORWARDING
+        };
+    };
+
+    template <typename T>
+    struct is_mpl_integral_constant_impl
+      : ::boost::mpl::apply_wrap1<
+            is_mpl_integral_constant_dispatch<
+                typename ::boost::mpl::tag<T>::type
+            >
+          , T
+        >::type
+    {
+    };
+
+    //[reference__is_mpl_integral_constant
+    template <typename T>
+    struct is_mpl_integral_constant
+        //<-
+      : ::boost::mpl::if_<
+            ::boost::mpl::aux::has_tag<T>
+          , is_mpl_integral_constant_impl<T>
+          , ::boost::mpl::false_
+        >::type
+        //->
+    {
+        // typedef ... type;
+        //<-
+        BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_mpl_integral_constant, (T))
+        //->
+    };
+    //]
+}  // namespace boost
+
+#endif  // BOOST_UTILITY_IS_MPL_INTEGRAL_CONSTANT_HPP_INCLUDED
+
Added: sandbox/container_gen/libs/container_gen/doc/Jamroot
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/doc/Jamroot	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,29 @@
+project html ;
+import boostbook : boostbook ;
+using quickbook ;
+
+xml container_gen
+    :
+        container_gen.qbk
+    ;
+boostbook standalone
+    :
+        container_gen
+    :
+        <xsl:param>admon.graphics.path=http://www.boost.org/doc/libs/release/doc/src/images/
+        <xsl:param>navig.graphics.path=http://www.boost.org/doc/libs/release/doc/src/images/
+        <xsl:param>boost.root=http://www.boost.org
+        <xsl:param>boost.libraries=http://www.boost.org/libs/libraries.htm
+        <xsl:param>boost.image.src=../../../../boost.png
+        <xsl:param>boost.image.alt="C++ Boost"
+        <xsl:param>boost.image.w=277
+        <xsl:param>boost.image.h=86
+        <xsl:param>html.stylesheet=http://www.boost.org/doc/libs/release/doc/src/boostbook.css
+        <xsl:param>nav.layout=none
+        <xsl:param>chunk.section.depth=2
+        <xsl:param>chunk.first.sections=1
+        <xsl:param>generate.section.toc.level=0
+        <xsl:param>toc.section.depth=0
+        <xsl:param>toc.max.depth=0
+    ;
+
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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,87 @@
+[/=============================================================================
+    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.7 to 0.8]
+
+  * Added __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 `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 `has_front_not_top_member_function_selector` introspection
+    metafunction.
+  * Modified __is_tr1_selector__ to return __mpl_true__ when passed in
+    `tr1_hash_selector`.
+
+[heading From 0.6 to 0.7]
+
+  * Added `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 `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 `has_front_not_top_member_function_selector` introspection
+    metafunction.
+
+[heading From 0.5 to 0.6]
+
+  * Added __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]
+
+  * Added __is_reversible_selector__ introspection metafunction.
+  * Moved __Boost_Typeof__ registration header files for selectors.
+
+[heading From 0.3 to 0.4]
+
+  * Added `c_str_equivalence_selector` and `c_str_ordering_selector` types.
+
+[heading From 0.2 to 0.3]
+
+  * Moved from __Boost_Utility__ to top level.
+  * Removed `ptr_container_gen` metafunction and `associative_container_gen`
+    and `ptr_associative_container_gen` metafunction classes.
+  * Added selector templates.  See __Selectors__.
+  * Added __emplace_function_gen__ and __emplace_associative_function_gen__
+    type-generating metafunctions.
+  * Added __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 `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__ returns __mpl_true__).
+
+[heading From 0.1 to 0.2]
+
+  * Added `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 __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,271 @@
+[library container_gen
+    [quickbook 1.5]
+    [version 0.8]
+    [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 __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 __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_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_muta_heap_selector `is_mutable_heap_selector`]]
+[def _is_mutable_heap_selector_ [link container_gen.reference.is_muta_heap_selector is_mutable_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`]]
+
+[/ 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_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/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://listarchives.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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,132 @@
+<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 1. container_gen 0.8">
+<link rel="up" href="../index.html" title="Chapter 1. container_gen 0.8">
+<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_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>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Added</span> <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><span class="special">,</span> <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><span class="special">,</span>
+  <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><span class="special">,</span> <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><span class="special">,</span>
+  <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><span class="special">,</span> <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><span class="special">,</span> <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><span class="special">,</span>
+  <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><span class="special">,</span> <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><span class="special">,</span>
+  <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><span class="special">,</span> <span class="keyword">and</span> <a class="link" href="reference/is_muta_heap_selector.html" title="is_mutable_heap_selector"><code class="computeroutput"><span class="identifier">is_mutable_heap_selector</span></code></a>
+  <span class="identifier">introspection</span> <span class="identifier">metafunctions</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="error">`</span><span class="identifier">c_str_greater_than_selector</span><span class="error">`</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Renamed</span> <span class="error">`</span><span class="identifier">c_str_equivalence_selector</span><span class="error">`</span> <span class="identifier">to</span> <span class="error">`</span><span class="identifier">c_str_equal_to_selector</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Renamed</span> <span class="error">`</span><span class="identifier">c_str_ordering_selector</span><span class="error">`</span> <span class="identifier">to</span> <span class="error">`</span><span class="identifier">c_str_less_than_selector</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Selector</span> <span class="keyword">template</span> <span class="identifier">arguments</span> <span class="identifier">are</span> <span class="identifier">now</span> Boost.Parameter<span class="special">-</span><span class="identifier">enabled</span> <span class="keyword">and</span>
+  <span class="special">(</span><span class="identifier">mostly</span><span class="special">)</span> <span class="identifier">deducible</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Removed</span> <span class="error">`</span><span class="identifier">has_front_not_top_member_function_selector</span><span class="error">`</span> <span class="identifier">introspection</span>
+  <span class="identifier">metafunction</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Modified</span> <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> <span class="identifier">to</span> <span class="keyword">return</span> boost::mpl::true_ <span class="identifier">when</span> <span class="identifier">passed</span> <span class="identifier">in</span>
+  <span class="error">`</span><span class="identifier">tr1_hash_selector</span><span class="error">`</span><span class="special">.</span>
+</pre>
+<h4>
+<a name="container_gen.changelog.h1"></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>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Added</span> <span class="error">`</span><span class="identifier">stack_selector</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">queue_selector</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">std_heap_selector</span><span class="error">`</span><span class="special">,</span>
+  <span class="error">`</span><span class="identifier">priority_queue_selector</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">d_ary_heap_selector</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">binomial_heap_selector</span><span class="error">`</span><span class="special">,</span>
+  <span class="error">`</span><span class="identifier">fibonacci_heap_selector</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">pairing_heap_selector</span><span class="error">`</span><span class="special">,</span> <span class="keyword">and</span>
+  <span class="error">`</span><span class="identifier">skew_heap_selector</span><span class="error">`</span> <span class="identifier">templates</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="error">`</span><span class="identifier">greater_than_selector</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">stackS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">queueS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">std_heapS</span><span class="error">`</span><span class="special">,</span>
+  <span class="error">`</span><span class="identifier">priority_queueS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">binomial_heapS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">fibonacci_heapS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">pairing_heapS</span><span class="error">`</span><span class="special">,</span>
+  <span class="keyword">and</span> <span class="error">`</span><span class="identifier">skew_heapS</span><span class="error">`</span> <span class="identifier">selector</span> <span class="identifier">types</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Renamed</span> <span class="error">`</span><span class="identifier">default_eqivalance_selector</span><span class="error">`</span> <span class="identifier">to</span> <span class="error">`</span><span class="identifier">equal_to_selector</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Renamed</span> <span class="error">`</span><span class="identifier">default_ordering_selector</span><span class="error">`</span> <span class="identifier">to</span> <span class="error">`</span><span class="identifier">less_than_selector</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="error">`</span><span class="identifier">has_front_not_top_member_function_selector</span><span class="error">`</span> <span class="identifier">introspection</span>
+  <span class="identifier">metafunction</span><span class="special">.</span>
+</pre>
+<h4>
+<a name="container_gen.changelog.h2"></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>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Added</span> <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><span class="special">,</span> <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><span class="special">,</span>
+  <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><span class="special">,</span> <span class="keyword">and</span> <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> <span class="identifier">type</span><span class="special">-</span><span class="identifier">generating</span>
+  <span class="identifier">metafunctions</span><span class="special">.</span>
+</pre>
+<h4>
+<a name="container_gen.changelog.h3"></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>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Added</span> <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> <span class="identifier">introspection</span> <span class="identifier">metafunction</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Moved</span> Boost.Typeof <span class="identifier">registration</span> <span class="identifier">header</span> <span class="identifier">files</span> <span class="keyword">for</span> <span class="identifier">selectors</span><span class="special">.</span>
+</pre>
+<h4>
+<a name="container_gen.changelog.h4"></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>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Added</span> <span class="error">`</span><span class="identifier">c_str_equivalence_selector</span><span class="error">`</span> <span class="keyword">and</span> <span class="error">`</span><span class="identifier">c_str_ordering_selector</span><span class="error">`</span> <span class="identifier">types</span><span class="special">.</span>
+</pre>
+<h4>
+<a name="container_gen.changelog.h5"></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>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Moved</span> <span class="identifier">from</span> Boost.Utility <span class="identifier">to</span> <span class="identifier">top</span> <span class="identifier">level</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Removed</span> <span class="error">`</span><span class="identifier">ptr_container_gen</span><span class="error">`</span> <span class="identifier">metafunction</span> <span class="keyword">and</span> <span class="error">`</span><span class="identifier">associative_container_gen</span><span class="error">`</span>
+  <span class="keyword">and</span> <span class="error">`</span><span class="identifier">ptr_associative_container_gen</span><span class="error">`</span> <span class="identifier">metafunction</span> <span class="identifier">classes</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="identifier">selector</span> <span class="identifier">templates</span><span class="special">.</span>  <span class="identifier">See</span> <a class="link" href="reference/selectors.html" title="Selectors"><span class="bold"><strong>Selectors</strong></span></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <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> <span class="keyword">and</span> <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>
+  <span class="identifier">type</span><span class="special">-</span><span class="identifier">generating</span> <span class="identifier">metafunctions</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <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><span class="special">,</span> <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><span class="special">,</span>
+  <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><span class="special">,</span> <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><span class="special">,</span> <span class="keyword">and</span>
+  <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> <span class="identifier">introspection</span> <span class="identifier">metafunctions</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Renamed</span> <span class="error">`</span><span class="identifier">is_unordered_selector</span><span class="error">`</span> <span class="identifier">to</span> <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><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Removed</span> <span class="error">`</span><span class="identifier">boost_vecS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">boost_dequeS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">boost_listS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">boost_slistS</span><span class="error">`</span><span class="special">,</span>
+  <span class="error">`</span><span class="identifier">boost_setS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">boost_mapS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">boost_multisetS</span><span class="error">`</span><span class="special">,</span> <span class="keyword">and</span> <span class="error">`</span><span class="identifier">boost_multimapS</span><span class="error">`</span>
+  <span class="identifier">selector</span> <span class="identifier">type</span> <span class="identifier">definitions</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Modified</span> boost::adjacency_list <span class="identifier">so</span> <span class="identifier">that</span> <span class="identifier">it</span> <span class="identifier">also</span> <span class="identifier">recognizes</span> <span class="keyword">new</span> <span class="identifier">selector</span>
+  <span class="identifier">types</span> <span class="special">(</span><span class="identifier">except</span> <span class="identifier">when</span> <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> <span class="identifier">returns</span> boost::mpl::true_<span class="special">).</span>
+</pre>
+<h4>
+<a name="container_gen.changelog.h6"></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>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Added</span> <span class="error">`</span><span class="identifier">boost_vecS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">stable_vecS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">boost_dequeS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">boost_listS</span><span class="error">`</span><span class="special">,</span>
+  <span class="error">`</span><span class="identifier">boost_slistS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">boost_setS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">boost_mapS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">boost_multisetS</span><span class="error">`</span><span class="special">,</span>
+  <span class="error">`</span><span class="identifier">boost_multimapS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">flat_setS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">flat_mapS</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">flat_multisetS</span><span class="error">`</span><span class="special">,</span> <span class="keyword">and</span>
+  <span class="error">`</span><span class="identifier">flat_multimapS</span><span class="error">`</span> <span class="identifier">selector</span> <span class="identifier">types</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <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><span class="special">,</span> <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><span class="special">,</span>
+  <span class="error">`</span><span class="identifier">is_unordered_selector</span><span class="error">`</span><span class="special">,</span> <span class="keyword">and</span> <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>
+  <span class="identifier">introspection</span> <span class="identifier">metafunctions</span><span class="special">.</span>
+</pre>
+</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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,81 @@
+<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 1. container_gen 0.8">
+<link rel="up" href="../index.html" title="Chapter 1. container_gen 0.8">
+<link rel="prev" href="../index.html" title="Chapter 1. container_gen 0.8">
+<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>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/selectors.html" title="Selectors"><span class="bold"><strong>Selectors</strong></span></a>
+</pre>
+<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>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/container_gen.html" title="container_gen"><code class="computeroutput"><span class="identifier">container_gen</span></code></a>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+</pre>
+<h4>
+<a name="container_gen.reference.h1"></a>
+      <span class="phrase"><a name="container_gen.reference.selector_introspection_metafunctions"></a></span><a class="link" href="reference.html#container_gen.reference.selector_introspection_metafunctions">Selector
+      Introspection Metafunctions</a>
+    </h4>
+<pre class="programlisting"><span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <a class="link" href="reference/is_muta_heap_selector.html" title="is_mutable_heap_selector"><code class="computeroutput"><span class="identifier">is_mutable_heap_selector</span></code></a>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+<span class="special">*</span> <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>
+</pre>
+</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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,434 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</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">></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>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></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">&</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"><</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">>::</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"><</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">-></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"><<</span> <span class="identifier">ft_itr</span><span class="special">-></span><span class="identifier">first</span> <span class="special"><<</span> <span class="string">": "</span> <span class="special"><<</span> <span class="identifier">ft_itr</span><span class="special">-></span><span class="identifier">second</span> <span class="special"><<</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"><<</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>
+        </p>
+<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>
+<p>
+</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>
+        </p>
+<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>
+<p>
+</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"><</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">></span>
+    <span class="keyword">struct</span> <span class="identifier">container_gen</span><span class="special"><</span>
+        <span class="identifier">stable_vector_selector</span><span class="special"><</span><span class="identifier">AllocatorSelector</span><span class="special">></span>
+      <span class="special">,</span> <span class="identifier">ValueType</span>
+      <span class="special">,</span> <span class="keyword">void</span>
+    <span class="special">></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"><</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"><</span>
+                        <span class="identifier">AllocatorSelector</span>
+                      <span class="special">,</span> <span class="identifier">ValueType</span>
+                    <span class="special">>::</span><span class="identifier">type</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>
+<p>
+        </p>
+<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>
+<p>
+</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"><</span><span class="keyword">double</span><span class="special">>()</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"><</span><span class="keyword">double</span><span class="special">>()</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"><</span><span class="keyword">double</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="special">};</span>
+</pre>
+<p>
+        </p>
+<p>
+          Many algorithms that work on the standard containers also work on pointer
+          containers out of the box.
+        </p>
+<p>
+</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">&</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">&</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"><</span><span class="keyword">typename</span> <span class="identifier">Shapes</span><span class="special">></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">&</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"><<</span> <span class="string">"Total perimeter length = "</span> <span class="special"><<</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"><<</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"><<</span> <span class="string">"Total area = "</span> <span class="special"><<</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"><<</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>
+        </p>
+<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>
+<p>
+</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"><</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">>::</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>
+        </p>
+<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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></span>
+<span class="identifier">Value</span> <span class="identifier">output_next</span><span class="special">(</span><span class="identifier">Buffer</span><span class="special">&</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"><</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">></span>
+<span class="identifier">Value</span> <span class="identifier">output_next</span><span class="special">(</span><span class="identifier">Buffer</span><span class="special">&</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"><</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">></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"><</span><span class="identifier">Itr</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Value</span><span class="special">>::</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"><<</span> <span class="string">" "</span> <span class="special"><<</span> <span class="identifier">output_next</span><span class="special"><</span><span class="identifier">Value</span><span class="special">>(</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"><</span><span class="identifier">Selector</span><span class="special">>()</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"><<</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>
+        </p>
+<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>
+<p>
+</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"><</span><span class="keyword">int</span><span class="special">></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"><<</span> <span class="string">"Original list:"</span><span class="special">;</span>
+    <span class="identifier">output_rearrangement</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">>(</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"><<</span> <span class="string">"In reverse:"</span><span class="special">;</span>
+    <span class="identifier">output_rearrangement</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">>(</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"><<</span> <span class="string">"With STL priority_queue:"</span><span class="special">;</span>
+    <span class="identifier">output_rearrangement</span><span class="special"><</span>
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">></span>
+    <span class="special">>(</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"><<</span> <span class="string">"With Boost priority_queue:"</span><span class="special">;</span>
+    <span class="identifier">output_rearrangement</span><span class="special"><</span>
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queue_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">></span>
+    <span class="special">>(</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"><<</span> <span class="string">"With 4-ary heap sort:"</span><span class="special">;</span>
+    <span class="identifier">output_rearrangement</span><span class="special"><</span>
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</span><span class="special"><</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"><</span><span class="number">4</span><span class="special">></span>         <span class="comment">// explicit Boost.Parameter tpl-arg</span>
+        <span class="special">></span>
+    <span class="special">>(</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"><<</span> <span class="string">"With binomial heap sort:"</span><span class="special">;</span>
+    <span class="identifier">output_rearrangement</span><span class="special"><</span>
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">></span>
+    <span class="special">>(</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"><<</span> <span class="string">"With Fibonacci heap sort:"</span><span class="special">;</span>
+    <span class="identifier">output_rearrangement</span><span class="special"><</span>
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">></span>
+    <span class="special">>(</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"><<</span> <span class="string">"With pairing heap sort:"</span><span class="special">;</span>
+    <span class="identifier">output_rearrangement</span><span class="special"><</span>
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">></span>
+    <span class="special">>(</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"><<</span> <span class="string">"With skew heap sort:"</span><span class="special">;</span>
+    <span class="identifier">output_rearrangement</span><span class="special"><</span>
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</span><span class="special">></span>
+    <span class="special">>(</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>
+        </p>
+<p>
+          It is possible to nest associative containers via <code class="computeroutput"><span class="identifier">container_gen</span></code>,
+          e.g.:
+        </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">container_gen</span><span class="special"><</span>
+            <span class="identifier">mapS</span>
+          <span class="special">,</span> <span class="identifier">container_gen</span><span class="special"><</span><span class="identifier">setS</span><span class="special">,</span><span class="keyword">char</span><span class="special">>::</span><span class="identifier">type</span>
+          <span class="special">,</span> std::string
+        <span class="special">>::</span><span class="identifier">type</span>
+        <span class="identifier">MapOfCharSets2Strings</span><span class="special">;</span>
+</pre>
+<p>
+        </p>
+<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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/container_gen.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+<p>
+          Forward declaration:
+        </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/container_gen_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,133 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">emplace_associative_function_gen</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/emplace_assoc_function_gen.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></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"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="keyword">int</span><span class="special">,</span>std::string<span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">>::</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"><</span><a class="link" href="selectors.html" title="Selectors">boost::map_selector</a><span class="special"><</span>boost::mpl::true_<span class="special">></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>
+        </p>
+</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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,138 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">emplace_function_gen</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/emplace_function_gen.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></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"><</span><span class="identifier">Selector</span><span class="special">,</span>std::string<span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">>::</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"><</span><a class="link" href="selectors.html" title="Selectors">boost::vector_selector</a><span class="special"><</span>boost::mpl::true_<span class="special">></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>
+        </p>
+</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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,86 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">has_emplace_member_function_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, boost::mpl::false_ otherwise.
+        </p>
+<p>
+          The current implementation returns 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
+          type or a Boost.Unordered
+          container; it will return boost::mpl::false_ for all other types of
+          selectors. 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> 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/has_emplace_mfunc_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,324 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">has_stable_iterators_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, boost::mpl::false_ otherwise.
+        </p>
+<p>
+          The current implementation returns 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 Hashed Associative Container, a Flat Associative Container, or a Random Access Container other than boost::array
+          or boost::container::stable_vector; it will return
+          boost::mpl::true_
+          for all other types of selectors. Specialize this metafunction to return
+          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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/has_stable_iters_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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">has_stable_iterators_selector</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="special">));</span>
+    <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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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">has_stable_iterators_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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">has_stable_iterators_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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">has_stable_iterators_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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">has_stable_iterators_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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">has_stable_iterators_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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">has_stable_iterators_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span>
+        <span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,210 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">insert_range_function_gen</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/insert_range_function_gen.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></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">&</span> <span class="identifier">r</span>
+      <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&</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"><</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">></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">&</span> <span class="identifier">r</span>
+      <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&</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>
+        </p>
+<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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></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">&</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"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">>::</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"><</span><span class="identifier">Selector</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">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>
+        </p>
+<p>
+          Test this metafunction across a wide variety of selector types.
+        </p>
+<p>
+</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"><</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">>::</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>::</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>(</span><span class="identifier">added_container</span><span class="special">);</span>
+    <span class="identifier">test_insert_range_function_gen</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">added_container</span><span class="special">);</span>
+    <span class="identifier">test_insert_range_function_gen</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>(</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>
+        </p>
+<p>
+          The complete test program spans the following source files:
+        </p>
+<pre class="programlisting"><span class="special">*</span> <test/result_range.hpp>
+<span class="special">*</span> <test/insert_range_function_gen.cpp>
+</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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,83 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</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">></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>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/insert_range_result_gen.hpp<span class="special">></span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,283 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_allocator_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"><</span>
+            <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">metafunction</span><span class="special">::</span><span class="identifier">has_apply_template</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+          <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">metafunction</span>
+            <span class="special">::</span><span class="identifier">is_allocator_selector_metafunction_class</span><span class="special"><</span><span class="identifier">T</span><span class="special">></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="identifier">type</span>
+    <span class="special">{</span>
+        <span class="identifier">BOOST_MPL_AUX_LAMBDA_SUPPORT</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">is_allocator_selector</span><span class="special">,</span> <span class="special">(</span><span class="identifier">T</span><span class="special">))</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns boost::mpl::true_ if the specified selector
+          is a metafunction class that takes in a value type and returns an allocator
+          model, 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 return 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_allocator_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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_allocator_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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_allocator_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,271 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_associative_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, 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 return 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_associative_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,275 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_compare_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"><</span>
+            <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">metafunction</span><span class="special">::</span><span class="identifier">has_apply_template</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+          <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">metafunction</span>
+            <span class="special">::</span><span class="identifier">is_compare_selector_metafunction_class</span><span class="special"><</span><span class="identifier">T</span><span class="special">></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="identifier">type</span>
+    <span class="special">{</span>
+        <span class="identifier">BOOST_MPL_AUX_LAMBDA_SUPPORT</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="identifier">is_compare_selector</span><span class="special">,</span> <span class="special">(</span><span class="identifier">T</span><span class="special">))</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, 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 return 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_compare_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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_compare_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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_compare_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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_compare_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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_compare_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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_compare_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,271 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_container_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, boost::mpl::false_
+          otherwise.
+        </p>
+<p>
+          If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+          then you must also specialize this metafunction to return 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_container_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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_container_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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_container_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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_container_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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_container_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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_container_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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_container_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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_container_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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_container_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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_container_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,314 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_flat_associative_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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 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> 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_flat_assoc_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_flat_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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_flat_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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_flat_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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_flat_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,317 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_hashed_associative_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, boost::mpl::false_
+          otherwise.
+        </p>
+<p>
+          If BOOST_MPL_CFG_NO_HAS_XXX is 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 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_hashed_assoc_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</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_hashed_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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_hashed_associative_selector</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="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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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_hashed_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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_hashed_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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_hashed_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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_hashed_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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_hashed_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_hashed_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_hashed_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_hashed_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_hashed_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span>
+        <span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,269 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_hasher_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns boost::mpl::true_ if the specified selector
+          is a Unary Metafunction Class that takes in a
+          value type and returns a Hash Function model, 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 return 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_hasher_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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_hasher_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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_hasher_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_heap_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, boost::mpl::false_ otherwise.
+        </p>
+<p>
+          If BOOST_MPL_CFG_NO_HAS_XXX is 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> 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_heap_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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_heap_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,315 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_iteratable_heap_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, boost::mpl::false_ otherwise.
+        </p>
+<p>
+          If BOOST_MPL_CFG_NO_HAS_XXX is 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> 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_iteratable_heap_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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_iteratable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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_iteratable_heap_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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_iteratable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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_iteratable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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_iteratable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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_iteratable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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_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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,321 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_multiple_associative_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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,
+          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 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_multiple_assoc_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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_multiple_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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_multiple_associative_selector</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="special">));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</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_multiple_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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_multiple_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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_multiple_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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_multiple_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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_multiple_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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_multiple_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_multiple_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_multiple_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_multiple_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_multiple_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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_multiple_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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_multiple_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span>
+        <span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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_muta_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_muta_heap_selector.html	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,327 @@
+<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 1. container_gen 0.8">
+<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_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_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_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_muta_heap_selector"></a><a class="link" href="is_muta_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_muta_heap_selector.synopsis"></a><a class="link" href="is_muta_heap_selector.html#container_gen.reference.is_muta_heap_selector.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_mutable_heap_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_muta_heap_selector.description"></a><a class="link" href="is_muta_heap_selector.html#container_gen.reference.is_muta_heap_selector.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+          Returns 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, boost::mpl::false_ otherwise.
+        </p>
+<p>
+          If BOOST_MPL_CFG_NO_HAS_XXX is 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> 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_muta_heap_selector.definition"></a><a class="link" href="is_muta_heap_selector.html#container_gen.reference.is_muta_heap_selector.definition" title="Where defined">Where
+        defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_mutable_heap_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="container_gen.reference.is_muta_heap_selector.test"></a><a class="link" href="is_muta_heap_selector.html#container_gen.reference.is_muta_heap_selector.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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_mutable_heap_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="keyword">true</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">arity</span><span class="special"><</span><span class="number">4</span><span class="special">></span>
+            <span class="special">></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_mutable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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_mutable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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_mutable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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_mutable_heap_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heap_selector</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"><</span><span class="keyword">true</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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_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_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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,319 @@
+<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 1. container_gen 0.8">
+<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_muta_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_muta_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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_order_iteratable_heap_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, boost::mpl::false_ otherwise.
+        </p>
+<p>
+          If BOOST_MPL_CFG_NO_HAS_XXX is 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> 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_order_iter_heap_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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_order_iteratable_heap_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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_order_iteratable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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_order_iteratable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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_order_iteratable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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_order_iteratable_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span>
+        <span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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_muta_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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_ptr_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_ptr_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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_ptr_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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_ptr_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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_ptr_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_queue_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_queue_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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_queue_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,301 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_random_access_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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.
+          Returns 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, boost::mpl::false_
+          otherwise.
+        </p>
+<p>
+          If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+          then you must specialize this metafunction to return 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_random_access_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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_random_access_selector</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="special">));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_random_access_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_random_access_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_random_access_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_random_access_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_random_access_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_random_access_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_random_access_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_random_access_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_random_access_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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_random_access_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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_random_access_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,85 @@
+<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 1. container_gen 0.8">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="is_muta_heap_selector.html" title="is_mutable_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_muta_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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_recursive_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, boost::mpl::false_ otherwise.
+        </p>
+<p>
+          The current implementation returns 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
+          type, a Boost.PointerContainer type, or a Boost.Unordered
+          container; it will return boost::mpl::false_ for all other types of
+          selectors. 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> 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_recursive_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </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 © 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_muta_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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,277 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_reversible_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, boost::mpl::false_ otherwise.
+        </p>
+<p>
+          If BOOST_MPL_CFG_NO_HAS_XXX is defined,
+          then you must specialize this metafunction to return 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_reversible_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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_reversible_selector</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="special">));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_reversible_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_reversible_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_reversible_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_reversible_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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_reversible_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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_reversible_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,263 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_stack_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_stack_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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_stack_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,263 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_std_heap_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+          Returns 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, 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_std_heap_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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_std_heap_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</span><span class="special">>));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,312 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_tr1_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+
+    <span class="keyword">template</span> <span class="special"><></span>
+    <span class="keyword">struct</span> <span class="identifier">is_tr1_selector</span><span class="special"><</span><span class="identifier">tr1_hash_selector</span><span class="special">></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>
+<p>
+        </p>
+</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>
+          Returns boost::mpl::true_ if the specified selector
+          type is <code class="computeroutput"><span class="identifier">tr1_hash_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; <a href="http://www.boost.org/libs/mpl/doc/refmanual/bool.html" target="_top"><code c
 lass="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code></a> 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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_tr1_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_tr1_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_tr1_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_tr1_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_tr1_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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_tr1_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span><span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,322 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_unique_associative_selector</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/is_unique_assoc_selector.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</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_unique_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">setS</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_unique_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimapS</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_unique_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_setS</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_unique_associative_selector</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="special">));</span>
+    <span 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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</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_unique_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_setS</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_unique_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stackS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">queueS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_heapS</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_unique_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_setS</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_unique_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_hash_multimapS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_unique_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_unique_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_unique_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_set_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_unique_associative_selector</span><span class="special"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_map_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multiset_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">hash_multimap_selector</span><span class="special"><</span>
+                <span class="identifier">true_</span>
+            <span class="special">></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_unique_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_setS</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_unique_associative_selector</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_mapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multisetS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">flat_multimapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">priority_queueS</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">d_ary_heap_selector</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"><</span><span class="number">4</span><span class="special">></span> <span class="special">></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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">binomial_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fibonacci_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pairing_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">skew_heapS</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">equal_to_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">less_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_less_than_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">c_str_greater_than_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">boost_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tr1_hash_selector</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</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"><</span>
+            <span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_flat_allocator_selector</span>
+        <span class="special">></span>
+    <span class="special">));</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,215 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">push_range_function_gen</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/push_range_function_gen.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></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">&</span> <span class="identifier">r</span>
+      <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&</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"><</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">></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">&</span> <span class="identifier">r</span>
+      <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&</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>
+        </p>
+<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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></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">&</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"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">>::</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"><</span><span class="identifier">Selector</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="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>
+        </p>
+<p>
+          Test this metafunction across a wide variety of selector types.
+        </p>
+<p>
+</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"><</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">>::</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>::</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>(</span><span class="identifier">added_container</span><span class="special">);</span>
+    <span class="identifier">test_push_range_function_gen</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">added_container</span><span class="special">);</span>
+    <span class="identifier">test_push_range_function_gen</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>(</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>
+        </p>
+<p>
+          The complete test program spans the following source files:
+        </p>
+<pre class="programlisting"><span class="special">*</span> <test/result_range.hpp>
+<span class="special">*</span> <test/push_range_function_gen.cpp>
+</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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,1237 @@
+<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 1. container_gen 0.8">
+<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, and Boost.PointerContainer to which it corresponds.
+        </p>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">ConstantSize</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsTR1</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="keyword">struct</span> <span class="identifier">array_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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">></span>
+    <span class="keyword">struct</span> <span class="identifier">vector_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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">></span>
+    <span class="keyword">struct</span> <span class="identifier">deque_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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">></span>
+    <span class="keyword">struct</span> <span class="identifier">list_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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">struct</span> <span class="identifier">stable_vector_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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">struct</span> <span class="identifier">slist_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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">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">></span>
+    <span class="keyword">struct</span> <span class="identifier">set_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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">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">></span>
+    <span class="keyword">struct</span> <span class="identifier">map_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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">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">></span>
+    <span class="keyword">struct</span> <span class="identifier">multiset_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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">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">></span>
+    <span class="keyword">struct</span> <span class="identifier">multimap_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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_flat_allocator_selector</span>
+    <span class="special">></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"><</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">></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"><</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">></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"><</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">></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"><</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">></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"><</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">></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"><</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">></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"><</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">></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"><</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">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">void</span><span class="special">*></span>
+    <span class="special">></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"><</span><span class="keyword">typename</span> <span class="identifier">SequenceSelector</span> <span class="special">=</span> <span class="identifier">deque_selector</span><span class="special"><></span> <span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">stack_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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"><></span> <span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">queue_selector</span><span class="special">;</span>
+
+    <span class="keyword">template</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">SequenceSelector</span> <span class="special">=</span> <span class="identifier">deque_selector</span><span class="special"><></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">false</span><span class="special">></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"><</span>
+            <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+        <span class="special">></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">false</span><span class="special">></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"><</span>
+            <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+        <span class="special">></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"><</span><span class="keyword">false</span><span class="special">></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">false</span><span class="special">></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"><</span>
+            <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+        <span class="special">></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">false</span><span class="special">></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"><</span>
+            <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+        <span class="special">></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"><</span><span class="keyword">true</span><span class="special">></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">false</span><span class="special">></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"><</span>
+            <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+        <span class="special">></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"><</span><span class="keyword">true</span><span class="special">></span>
+    <span class="special">></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"><</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"><</span><span class="keyword">false</span><span class="special">></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"><</span>
+            <span class="keyword">false</span>
+        <span class="special">></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"><</span>
+            <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uintmax_t</span>
+        <span class="special">></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"><</span><span class="keyword">true</span><span class="special">></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"><</span><span class="keyword">false</span><span class="special">></span>
+    <span class="special">></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>
+        </p>
+<p>
+          A selector template also exists for each STL container adaptor and Boost.Heap
+          data structure to which it corresponds.
+        </p>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">SequenceSelector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">stack_selector</span>
+    <span class="special">{</span>
+    <span class="special">};</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">SequenceSelector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">queue_selector</span>
+    <span class="special">{</span>
+    <span class="special">};</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">std_heap_selector</span>
+    <span class="special">{</span>
+    <span class="special">};</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T0</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">typename</span> <span class="identifier">T3</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">priority_queue_selector</span>
+    <span class="special">{</span>
+    <span class="special">};</span>
+
+    <span class="keyword">template</span> <span class="special"><</span>
+        <span class="keyword">typename</span> <span class="identifier">T0</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">typename</span> <span class="identifier">T3</span>
+      <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T4</span>
+      <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T5</span>
+    <span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">d_ary_heap_selector</span>
+    <span class="special">{</span>
+    <span class="special">};</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T0</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">typename</span> <span class="identifier">T3</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">binomial_heap_selector</span>
+    <span class="special">{</span>
+    <span class="special">};</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T0</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">typename</span> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T4</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">fibonacci_heap_selector</span>
+    <span class="special">{</span>
+    <span class="special">};</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T0</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">typename</span> <span class="identifier">T3</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T4</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">pairing_heap_selector</span>
+    <span class="special">{</span>
+    <span class="special">};</span>
+
+    <span class="keyword">template</span> <span class="special"><</span>
+        <span class="keyword">typename</span> <span class="identifier">T0</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">typename</span> <span class="identifier">T3</span>
+      <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T4</span>
+      <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T5</span>
+      <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T6</span>
+    <span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">skew_heap_selector</span>
+    <span class="special">{</span>
+    <span class="special">};</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+<p>
+          In turn, some of the default arguments of these selector templates are
+          themselves selector types.
+        </p>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></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"><</span>
+                        <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">metafunction</span><span class="special">::</span><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+                      <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">range_greater</span>
+                      <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">greater</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+                    <span class="special">>::</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">boost_hash_selector</span>
+    <span class="special">{</span>
+        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></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"><</span><span class="identifier">T</span><span class="special">></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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></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"><</span><span class="identifier">T</span><span class="special">></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"><</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">></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"><</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"><</span><span class="identifier">T2</span><span class="special">></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"><</span><span class="identifier">T1</span><span class="special">></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"><</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T1</span> <span class="keyword">const</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span> <span class="special">></span>
+                    <span class="special">>::</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"><</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">></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"><</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"><</span><span class="identifier">T2</span><span class="special">></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"><</span><span class="identifier">T1</span><span class="special">></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"><</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span> <span class="special">></span>
+                    <span class="special">>::</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>
+        </p>
+<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. The following <a class="link" href="selectors.html#container_gen.reference.selectors.description" title="Description">table</a>
+          will describe the <code class="computeroutput"><span class="identifier">CompareSelector</span></code>
+          template argument among others in further detail.
+        </p>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></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">&</span> <span class="identifier">lhs</span>
+                      <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</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">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">&</span> <span class="identifier">lhs</span>
+                      <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</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">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">&</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">&</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">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</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"><</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"><</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"><</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"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+                                <span class="special">>::</span><span class="identifier">type</span>
+                            <span class="special">>::</span><span class="identifier">type</span>
+                          <span class="special">,</span> <span class="keyword">char</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="keyword">struct</span> <span class="identifier">c_str_less_than_selector</span>
+    <span class="special">{</span>
+        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></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">&</span> <span class="identifier">lhs</span>
+                      <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</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">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"><</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">&</span> <span class="identifier">lhs</span>
+                      <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</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">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"><</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">&</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">&</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">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</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"><</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"><</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"><</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"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+                                <span class="special">>::</span><span class="identifier">type</span>
+                            <span class="special">>::</span><span class="identifier">type</span>
+                          <span class="special">,</span> <span class="keyword">char</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="keyword">struct</span> <span class="identifier">c_str_greater_than_selector</span>
+    <span class="special">{</span>
+        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></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">&</span> <span class="identifier">lhs</span>
+                      <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</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">true_type</span>
+                    <span class="special">)</span>
+                <span class="special">{</span>
+                    <span class="keyword">return</span> <span class="number">0</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">&</span> <span class="identifier">lhs</span>
+                      <span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</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">false_type</span>
+                    <span class="special">)</span>
+                <span class="special">{</span>
+                    <span class="keyword">return</span> <span class="number">0</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">&</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">&</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">&</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</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"><</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"><</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"><</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"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+                                <span class="special">>::</span><span class="identifier">type</span>
+                            <span class="special">>::</span><span class="identifier">type</span>
+                          <span class="special">,</span> <span class="keyword">char</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="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+<p>
+          This library also retains the old selector types and, for completeness,
+          provides type definitions of the selector templates with default arguments.
+        </p>
+<p>
+</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"><></span> <span class="identifier">vecS</span><span class="special">;</span>
+    <span class="keyword">typedef</span> <span class="identifier">deque_selector</span><span class="special"><></span> <span class="identifier">dequeS</span><span class="special">;</span>
+    <span class="keyword">typedef</span> <span class="identifier">list_selector</span><span class="special"><></span> <span class="identifier">listS</span><span class="special">;</span>
+    <span class="keyword">typedef</span> <span class="identifier">slist_selector</span><span class="special"><></span> <span class="identifier">slistS</span><span class="special">;</span>
+    <span class="keyword">typedef</span> <span class="identifier">set_selector</span><span class="special"><></span> <span class="identifier">setS</span><span class="special">;</span>
+    <span class="keyword">typedef</span> <span class="identifier">map_selector</span><span class="special"><></span> <span class="identifier">mapS</span><span class="special">;</span>
+    <span class="keyword">typedef</span> <span class="identifier">multiset_selector</span><span class="special"><></span> <span class="identifier">multisetS</span><span class="special">;</span>
+    <span class="keyword">typedef</span> <span class="identifier">multimap_selector</span><span class="special"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></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"><></span> <span class="identifier">stackS</span><span class="special">;</span>
+    <span class="keyword">typedef</span> <span class="identifier">queue_selector</span><span class="special"><></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"><></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"><></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"><></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"><></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"><></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"><></span> <span class="identifier">skew_heapS</span><span class="special">;</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></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"><</span><span class="keyword">int</span><span class="special">></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"><</span>
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</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="identifier">int_allocator_selector</span><span class="special">></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">></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"><<</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"><<</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>
+        </p>
+<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">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 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>
+                    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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/c_str_cmp_selectors.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+<p>
+          Forward declarations:
+        </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/c_str_cmp_selectors_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+<p>
+          To register them under Boost.Typeof:
+        </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/container_gen/c_str_cmp_selectors.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+<p>
+          All other selectors and selector templates:
+        </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/selectors.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+<p>
+          Forward declarations:
+        </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/selectors_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+<p>
+          To register them under Boost.Typeof:
+        </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/container_gen/selectors.hpp<span class="special">></span>
+</pre>
+<p>
+        </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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,327 @@
+<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 1. container_gen 0.8">
+<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>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">splice_function_gen</span>
+    <span class="special">{</span>
+        <span class="comment">// typedef ... type;</span>
+    <span class="special">};</span>
+
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+        </p>
+</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>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">A</span> <span class="identifier">valid</span> <span class="identifier">iterator</span> <span class="identifier">representing</span> <span class="identifier">the</span> <span class="identifier">point</span> <span class="identifier">of</span> <span class="identifier">erasure</span> <span class="identifier">from</span> <span class="identifier">the</span> <span class="identifier">source</span>
+  <span class="identifier">container</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Two</span> Input Iterator <span class="identifier">arguments</span> <span class="identifier">representing</span> <span class="identifier">the</span> <span class="identifier">source</span> <span class="identifier">container</span> <span class="keyword">or</span> <span class="identifier">a</span>
+  <span class="identifier">subrange</span><span class="special">.</span>
+</pre>
+<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>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/container_gen/splice_function_gen.hpp<span class="special">></span>
+</pre>
+<p>
+        </p>
+</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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></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">&</span> <span class="identifier">r</span>
+      <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&</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"><</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">></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">&</span> <span class="identifier">r</span>
+      <span class="special">,</span> <span class="identifier">AddedContainer</span> <span class="keyword">const</span><span class="special">&</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>
+        </p>
+<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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></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">&</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"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">>::</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"><</span><span class="identifier">Selector</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="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>
+        </p>
+<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>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></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">&</span> <span class="identifier">ex_seq_1</span>
+      <span class="special">,</span> <span class="identifier">C</span><span class="special">&</span> <span class="identifier">ex_seq_2</span>
+      <span class="special">,</span> <span class="identifier">C</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="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"><</span><span class="identifier">Selector</span><span class="special">>::</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"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></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"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">>::</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"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">test_string</span><span class="special">>::</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>
+        </p>
+<p>
+          Test this metafunction across a wide variety of selector types.
+        </p>
+<p>
+</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"><</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">>::</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">>::</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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vecS</span><span class="special">>(</span><span class="identifier">c</span><span class="special">);</span>
+    <span class="identifier">test_splice_function_gen</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">c</span><span class="special">);</span>
+    <span class="identifier">test_splice_function_gen</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">listS</span><span class="special">>(</span><span class="identifier">c</span><span class="special">);</span>
+    <span class="identifier">test_splice_function_gen</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_vecS</span><span class="special">>(</span><span class="identifier">c</span><span class="special">);</span>
+    <span class="identifier">test_splice_function_gen</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">>(</span><span class="identifier">c</span><span class="special">);</span>
+    <span class="identifier">test_splice_function_gen</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_listS</span><span class="special">>(</span><span class="identifier">c</span><span class="special">);</span>
+    <span class="identifier">test_splice_function_gen</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">vector_selector</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">c</span><span class="special">);</span>
+    <span class="identifier">test_splice_function_gen</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">stable_vecS</span><span class="special">>(</span><span class="identifier">c</span><span class="special">);</span>
+    <span class="identifier">test_splice_function_gen</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">deque_selector</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">c</span><span class="special">);</span>
+    <span class="identifier">test_splice_function_gen</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">list_selector</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">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"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">slistS</span><span class="special">>(</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>
+        </p>
+<p>
+          The complete test program spans the following source files:
+        </p>
+<pre class="programlisting"><span class="special">*</span> <test/result_range.hpp>
+<span class="special">*</span> <test/splice_function_gen.cpp>
+</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 © 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 1. container_gen 0.8</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 1. container_gen 0.8">
+<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 1. container_gen 0.8</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 © 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://listarchives.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: June 06, 2013 at 14:52:02 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,34 @@
+[/=============================================================================
+    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:has_emplace_mfunc_selector `has_emplace_member_function_selector`]
+
+[section Synopsis]
+[reference__has_emplace_member_function_selector]
+[endsect]
+
+[section Description]
+Returns __mpl_true__ if the type to be returned by __container_gen__ supports
+emplacement construction of its elements, __mpl_false__ otherwise.
+
+The current implementation returns __mpl_true__ when passed in selectors
+for which __container_gen__ will return a __Boost_Container__ type or a
+__Boost_Unordered__ container; it will return __mpl_false__ for all other types
+of selectors.  Specialize this metafunction to return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,42 @@
+[/=============================================================================
+    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]
+Returns __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, __mpl_false__ otherwise.
+
+The current implementation returns __mpl_false__ when passed in selectors for
+which __container_gen__ will return a __Hashed_Associative_Container__, a
+__Flat_Associative_Container__, or a __Random_Access_Container__ other than
+__array__ or __container_stable_vector__; it will return __mpl_true__ for all
+other types of selectors.  Specialize this metafunction to return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,72 @@
+[/=============================================================================
+    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:
+
+  * __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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])
+=============================================================================/]
+
+[section:is_allocator_selector `is_allocator_selector`]
+
+[section Synopsis]
+[reference__is_allocator_selector]
+[endsect]
+
+[section Description]
+Returns __mpl_true__ if the specified selector is a metafunction class that
+takes in a value type and returns an allocator model, __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 return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_associative_selector `is_associative_selector`]
+
+[section Synopsis]
+[reference__is_associative_selector]
+[endsect]
+
+[section Description]
+Returns __mpl_true__ if the type to be returned by __container_gen__ will model
+the __Associative_Container__ concept, __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 return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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]
+Returns __mpl_true__ if the specified selector is a metafunction class that
+takes in a value type and returns a __Binary_Predicate__ model, __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 return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_container_selector `is_container_selector`]
+
+[section Synopsis]
+[reference__is_container_selector]
+[endsect]
+
+[section Description]
+Returns __mpl_true__ if the __container_gen__ metafunction has been specialized
+to return a type given the specified selector type, __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must also specialize this
+metafunction to return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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]
+Returns __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 return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,36 @@
+[/=============================================================================
+    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]
+Returns __mpl_true__ if the type to be returned by __container_gen__ will model
+the __Hashed_Associative_Container__ concept, __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is 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 __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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]
+Returns __mpl_true__ if the specified selector is a
+__Unary_Metafunction_Class__ that takes in a value type and returns a
+__Hash_Function__ model, __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 return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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])
+=============================================================================/]
+
+[section:is_heap_selector `is_heap_selector`]
+
+[section Synopsis]
+[reference__is_heap_selector]
+[endsect]
+
+[section Description]
+Returns __mpl_true__ if the specified selector will cause __container_gen__ to
+return a __Boost_Heap__ model type, __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is 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__ 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_iter_heap_selector `is_iteratable_heap_selector`]
+
+[section Synopsis]
+[reference__is_iteratable_heap_selector]
+[endsect]
+
+[section Description]
+Returns __mpl_true__ if the specified selector will cause __container_gen__ to
+return an iteratable __Boost_Heap__ model type, __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is 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__ 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_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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,36 @@
+[/=============================================================================
+    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]
+Returns __mpl_true__ if the type to be returned by __container_gen__ will model
+the __Multiple_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
+__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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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_muta_heap_selector `is_mutable_heap_selector`]
+
+[section Synopsis]
+[reference__is_mutable_heap_selector]
+[endsect]
+
+[section Description]
+Returns __mpl_true__ if the specified selector will cause __container_gen__ to
+return a mutable __Boost_Heap__ model type, __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is 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__ is a mutable __Boost_Heap__ model
+type.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_container_gen_is_mutable_heap_selector_hpp__>
+``
+[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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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]
+Returns __mpl_true__ if the type to be returned by __container_gen__ is a
+__Boost_Heap__ model type that supports ordered iterators, __mpl_false__
+otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is 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__ 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,31 @@
+[/=============================================================================
+    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]
+Returns __mpl_true__ if the specified selector will cause __container_gen__ to
+return a __Boost_Pointer_Container__ type, __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,31 @@
+[/=============================================================================
+    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]
+Returns __mpl_true__ if the specified selector will cause __container_gen__ to
+return a __std_queue__ template instantiation, __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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.  Returns __mpl_true__ if the type to be
+returned by __container_gen__ will model the __Random_Access_Container__
+concept, __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,34 @@
+[/=============================================================================
+    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]
+Returns __mpl_true__ if the type to be returned by __container_gen__ can be
+used to define a __Recursive_Container__, __mpl_false__ otherwise.
+
+The current implementation returns __mpl_true__ when passed in selectors
+for which __container_gen__ will return a __Boost_Container__ type, a
+__Boost_Pointer_Container__ type, or a __Boost_Unordered__ container; it will
+return __mpl_false__ for all other types of selectors.  Specialize this
+metafunction to return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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:is_reversible_selector `is_reversible_selector`]
+
+[section Synopsis]
+[reference__is_reversible_selector]
+[endsect]
+
+[section Description]
+Returns __mpl_true__ if the type to be returned by __container_gen__ will model
+the __Reversible_Container__ concept, __mpl_false__ otherwise.
+
+If __MPL_CFG_NO_HAS_XXX__ is defined, then you must specialize this
+metafunction to return __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,31 @@
+[/=============================================================================
+    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]
+Returns __mpl_true__ if the specified selector will cause __container_gen__ to
+return a __std_stack__ template instantiation, __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,31 @@
+[/=============================================================================
+    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]
+Returns __mpl_true__ if the specified selector will cause __container_gen__ to
+return a __std_priority_queue__ type, __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,33 @@
+[/=============================================================================
+    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]
+Returns __mpl_true__ if the specified selector type is `tr1_hash_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__; __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,81 @@
+[/=============================================================================
+    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:
+
+  * __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,274 @@
+[/=============================================================================
+    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,
+and __Boost_Pointer_Container__ to which it corresponds.
+
+[reference__container_selector_templates]
+
+A selector template also exists for each STL container adaptor and
+__Boost_Heap__ data structure to which it corresponds.
+
+[reference__adaptor_and_heap_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.  The following
+__Selectors_table__ will describe the `CompareSelector` template argument among
+others in further detail.
+
+[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__.]
+    ]
+    [
+        [`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 will become
+            the container template's `Compare`, `Pred`, or __heap_compare__
+            argument.
+
+            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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,85 @@
+[/=============================================================================
+    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:
+
+  * 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:
+
+  * __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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,82 @@
+[/=============================================================================
+    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_recursive_selector.qbk]
+[include ref_has_stable_iters_sel.qbk]
+[include ref_has_emplace_mfunc_sel.qbk]
+
+  * __Selectors__
+
+[heading Type Generation Metafunctions]
+
+  * __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]
+
+  * __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_recursive_selector__
+  * __has_stable_iterators_selector__
+  * __has_emplace_member_function_selector__
+
+[endsect] [/ Reference]
+
Added: sandbox/container_gen/libs/container_gen/example/output_char_tallies.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/example/output_char_tallies.cpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,67 @@
+//=============================================================================
+// 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)
+//=============================================================================
+
+#include <iostream>
+#include <string>
+#include <boost/config.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+
+//[example__output_char_tallies__definition
+template <typename Selector>
+void output_char_tallies(std::string const& str, Selector)
+{
+    typedef typename boost::container_gen<Selector,char,std::size_t>::type
+            FrequencyTable;
+
+    FrequencyTable freq_table;
+
+    for (std::size_t i = 0; i < str.size(); ++i)
+    {
+        typename FrequencyTable::iterator ft_itr = freq_table.find(str[i]);
+
+        if (ft_itr == freq_table.end())
+        {
+            freq_table.insert(typename FrequencyTable::value_type(str[i], 1));
+        }
+        else
+        {
+            ++ft_itr->second;
+        }
+    }
+
+    for (
+        typename FrequencyTable::const_iterator ft_itr = freq_table.begin();
+        ft_itr != freq_table.end();
+        ++ft_itr
+    )
+    {
+        std::cout << ft_itr->first << ": " << ft_itr->second << std::endl;
+    }
+
+    std::cout << std::endl;
+}
+//]
+
+//[example__output_char_tallies__calls
+int main(int, char**)
+{
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION || defined BOOST_HAS_HASH
+//->
+    output_char_tallies("abacadabra", boost::hash_mapS());
+//<-
+#else
+    output_char_tallies("abacadabra", boost::mapS());
+#endif
+//->
+    output_char_tallies("loolapalooza", boost::multimapS());
+    return 0;
+}
+//]
+
Added: sandbox/container_gen/libs/container_gen/example/output_rearrangements.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/example/output_rearrangements.cpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,121 @@
+//=============================================================================
+// 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 <iostream>
+#include <list>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/is_queue_selector.hpp>
+
+//[example__output_rearrangements__functions
+template <typename Value, typename Buffer>
+Value output_next(Buffer& buffer, boost::mpl::true_)
+{
+    return buffer.front();
+}
+
+template <typename Value, typename Buffer>
+Value output_next(Buffer& buffer, boost::mpl::false_)
+{
+    return buffer.top();
+}
+
+template <typename Selector, typename Itr>
+void output_rearrangement(Itr itr, Itr itr_end)
+{
+    typedef typename boost::iterator_value<Itr>::type Value;
+
+    typename boost::container_gen<Selector,Value>::type buffer;
+
+    for (; itr != itr_end; ++itr)
+    {
+        buffer.push(*itr);
+    }
+
+    for (; !buffer.empty(); buffer.pop())
+    {
+        std::cout << " " << output_next<Value>(
+            buffer
+          , boost::is_queue_selector<Selector>()
+        );
+    }
+
+    std::cout << std::endl;
+}
+//]
+
+//[example__output_rearrangements__main
+int main(int, char**)
+{
+    std::list<int> int_list;
+
+    int_list.push_back(2);
+    int_list.push_back(3);
+    int_list.push_back(1);
+
+    std::cout << "Original list:";
+    output_rearrangement<boost::queueS>(int_list.begin(), int_list.end());
+    std::cout << "In reverse:";
+    output_rearrangement<boost::stackS>(int_list.begin(), int_list.end());
+    std::cout << "With STL priority_queue:";
+    output_rearrangement<
+        boost::std_heap_selector<boost::greater_than_selector>
+    >(int_list.begin(), int_list.end());
+//<-
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//->
+    std::cout << "With Boost priority_queue:";
+    output_rearrangement<
+        boost::priority_queue_selector<boost::greater_than_selector>
+    >(int_list.begin(), int_list.end());
+    std::cout << "With 4-ary heap sort:";
+    output_rearrangement<
+        boost::d_ary_heap_selector<
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX || \
+    defined BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+            boost::compare_selector<
+#endif
+//->
+            boost::greater_than_selector  // deduced Boost.Parameter tpl-arg
+//<-
+#if defined BOOST_MPL_CFG_NO_HAS_XXX || \
+    defined BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+            >
+#endif
+//->
+          , boost::heap::arity<4>         // explicit Boost.Parameter tpl-arg
+        >
+    >(int_list.begin(), int_list.end());
+    std::cout << "With binomial heap sort:";
+    output_rearrangement<
+        boost::binomial_heap_selector<boost::greater_than_selector>
+    >(int_list.begin(), int_list.end());
+    std::cout << "With Fibonacci heap sort:";
+    output_rearrangement<
+        boost::fibonacci_heap_selector<boost::greater_than_selector>
+    >(int_list.begin(), int_list.end());
+    std::cout << "With pairing heap sort:";
+    output_rearrangement<
+        boost::pairing_heap_selector<boost::greater_than_selector>
+    >(int_list.begin(), int_list.end());
+    std::cout << "With skew heap sort:";
+    output_rearrangement<
+        boost::skew_heap_selector<boost::greater_than_selector>
+    >(int_list.begin(), int_list.end());
+//<-
+#endif
+//->
+
+    return 0;
+}
+//]
+
Added: sandbox/container_gen/libs/container_gen/example/output_shape_stats.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/example/output_shape_stats.cpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,136 @@
+//=============================================================================
+// 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)
+//=============================================================================
+
+#include <iostream>
+#include <string>
+#include <cmath>
+#include <boost/math/constants/constants.hpp>
+#include <boost/range/numeric.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+
+//[example__output_shape_stats__type_definitions
+struct my_shape
+{
+    virtual ~my_shape()
+    {
+    }
+
+    virtual double compute_perimeter() const = 0;
+
+    virtual double compute_area() const = 0;
+};
+
+class your_square : public my_shape
+{
+    double length;
+
+ public:
+    explicit your_square(double s = 1.0) : length(s)
+    {
+    }
+
+    double compute_perimeter() const
+    {
+        return length * 4.0;
+    }
+
+    double compute_area() const
+    {
+        return length * length;
+    }
+};
+
+class your_circle : public my_shape
+{
+    double radius;
+
+ public:
+    explicit your_circle(double r = 1.0) : radius(r)
+    {
+    }
+
+    double compute_perimeter() const
+    {
+        return boost::math::constants::pi<double>() * radius * 2.0;
+    }
+
+    double compute_area() const
+    {
+        return boost::math::constants::pi<double>() * radius * radius;
+    }
+};
+
+class some_right_triangle : public my_shape
+{
+    double base;
+    double height;
+
+ public:
+    some_right_triangle(double b, double h) : base(b), height(h)
+    {
+    }
+
+    some_right_triangle() : base(1.0), height(1.0)
+    {
+    }
+
+    double compute_perimeter() const
+    {
+        using namespace std;
+        return sqrt(base * base + height * height) + base + height;
+    }
+
+    double compute_area() const
+    {
+        return boost::math::constants::half<double>() * base * height;
+    }
+};
+//]
+
+//[example__output_shape_stats__functions
+double add_perimeter(double value, my_shape const& shape)
+{
+    return shape.compute_perimeter() + value;
+}
+
+double add_area(double value, my_shape const& shape)
+{
+    return shape.compute_area() + value;
+}
+
+template <typename Shapes>
+void output_shape_stats(Shapes const& shapes)
+{
+    std::cout << "Total perimeter length = " << boost::accumulate(
+        shapes
+      , 0.0
+      , add_perimeter
+    ) << std::endl;
+    std::cout << "Total area = " << boost::accumulate(
+        shapes
+      , 0.0
+      , add_area
+    ) << std::endl;
+}
+//]
+
+//[example__output_shape_stats__usage
+int main(int, char**)
+{
+    boost::container_gen<boost::ptr_listS,my_shape>::type shapes;
+
+    shapes.push_back(new your_square());
+    shapes.push_back(new your_circle());
+    shapes.push_back(new some_right_triangle());
+
+    output_shape_stats(shapes);
+    return 0;
+}
+//]
+
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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,746 @@
+// 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/or.hpp>
+#include <boost/range/algorithm/equal.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 "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());
+}
+
+template <typename Selector>
+void test_emplace_heap(boost::mpl::true_)
+{
+    typedef typename boost::container_gen<Selector,int>::type Heap;
+
+    Heap heap_1, heap_2;
+    typename boost::emplace_function_gen<Selector>::type pusher;
+    typename Heap::handle_type handle_1 = pusher(heap_1, 3);
+    typename Heap::handle_type handle_2 = pusher(heap_1, 5);
+    typename Heap::handle_type handle_3 = pusher(heap_1, 1);
+
+    heap_1.update(handle_1, 4);
+    heap_1.increase(handle_2, 7);
+    heap_1.decrease(handle_3, 0);
+    BOOST_CHECK(7 == heap_1.top());
+    heap_1.pop();
+    BOOST_CHECK(4 == heap_1.top());
+    heap_1.pop();
+    BOOST_CHECK(0 == heap_1.top());
+    heap_1.pop();
+    BOOST_CHECK(heap_1.empty());
+    pusher[heap_1](3)(5)(1);
+    pusher[heap_2](2)(4)(0);
+    heap_1.merge(heap_2);
+    std::cout << " heap_2";
+
+    if (!heap_2.empty())
+    {
+        BOOST_CHECK(4 == heap_2.top());
+        heap_2.pop();
+        BOOST_CHECK(2 == heap_2.top());
+        heap_2.pop();
+        BOOST_CHECK(0 == heap_2.top());
+        heap_2.pop();
+        std::cout << " not";
+    }
+
+    std::cout << " emptied." << std::endl;
+    BOOST_CHECK(heap_2.empty());
+    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());
+}
+
+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());
+}
+
+template <typename Selector>
+void test_emplace_heap()
+{
+    test_emplace_heap<Selector>(
+        boost::is_mutable_heap_selector<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::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::deque_selector<boost::mpl::true_>
+    >();
+    test_emplace_function_gens<
+        boost::vecS
+      , boost::list_selector<boost::mpl::true_>
+    >();
+    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::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::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::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::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::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::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>();
+#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> > >();
+    std::cout << "d_hary_heap:";
+    test_emplace_heap<
+        boost::d_ary_heap_selector<
+            boost::heap::mutable_<true>
+          , boost::heap::arity<4>
+        >
+    >();
+    std::cout << "binomial_heap:";
+    test_emplace_heap<boost::binomial_heapS>();
+    std::cout << "fibonacci_heap:";
+    test_emplace_heap<boost::fibonacci_heapS>();
+    std::cout << "pairing_heap:";
+    test_emplace_heap<boost::pairing_heapS>();
+    test_emplace_heap<boost::skew_heapS>();
+    std::cout << "skew_heap:";
+    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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,135 @@
+// 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/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::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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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)
+
+#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/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::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/result_range.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/test/result_range.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -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)
+
+#ifndef LIBS_CONTAINER_GEN_TEST_RESULT_RANGE_HPP_INCLUDED
+#define LIBS_CONTAINER_GEN_TEST_RESULT_RANGE_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/range/algorithm/equal.hpp>
+#include <boost/range/adaptor/indirected.hpp>
+
+//[test__result_range
+template <typename ResultRange, typename AddedContainer>
+bool
+    test_result_range(
+        ResultRange const& r
+      , AddedContainer const& c
+      , boost::mpl::true_
+    )
+{
+    return boost::range::equal(boost::adaptors::indirect(r), c);
+}
+
+template <typename ResultRange, typename AddedContainer>
+bool
+    test_result_range(
+        ResultRange const& r
+      , AddedContainer const& c
+      , boost::mpl::false_
+    )
+{
+    return boost::range::equal(r, c);
+}
+//]
+
+#endif  // LIBS_CONTAINER_GEN_TEST_RESULT_RANGE_HPP_INCLUDED
+
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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,6935 @@
+// 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/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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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>
+    ));
+//<-
+#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::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::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> >
+        >
+    ));
+//<-
+#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::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__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::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>
+    ));
+//<-
+#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::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::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_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((
+        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>
+    ));
+#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::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  // 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-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,212 @@
+// 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/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::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;
+}
+//]
+
Added: sandbox/container_gen/libs/container_gen/test/type_definitions.hpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/container_gen/test/type_definitions.hpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,255 @@
+// 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 LIBS_CONTAINER_GEN_TEST_TYPE_DEFINITIONS_HPP_INCLUDED
+#define LIBS_CONTAINER_GEN_TEST_TYPE_DEFINITIONS_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/utility/get_iterator_second.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/is_recursive_selector.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <string>
+typedef std::string test_string;
+#else
+#include <boost/move/move.hpp>
+#include <boost/container/string.hpp>
+typedef boost::container::string test_string;
+#endif
+
+#if defined BOOST_MSVC
+    #pragma warning (push)
+    #pragma warning (disable : 4521) // "multiple copy constructors specified"
+#endif
+
+template <typename Selector, typename Key = void>
+class test_recursive_data
+{
+    BOOST_MPL_ASSERT((boost::is_recursive_selector<Selector>));
+    typedef typename boost::mpl::if_<
+                std::tr1::is_void<Key>
+              , boost::mpl::false_
+              , boost::mpl::true_
+            >::type
+            _is_associative;
+
+ public:
+    typedef typename boost::mpl::eval_if<
+                _is_associative
+              , boost::container_gen<Selector,Key,test_recursive_data>
+              , boost::container_gen<Selector,test_recursive_data>
+            >::type
+            next_level_t;
+
+    test_recursive_data* previous_level;
+    next_level_t next_level;
+    test_string word;
+    long number;
+    char letter;
+    bool flag;
+
+    explicit test_recursive_data(
+        char const* str = ""
+      , long n = 0
+      , char c = '\0'
+      , bool b = false
+    ) : previous_level()
+      , next_level()
+      , word(str)
+      , number(n)
+      , letter(c)
+      , flag(b)
+    {
+    }
+
+    test_recursive_data(test_recursive_data const& copy)
+      : previous_level(copy.previous_level)
+      , next_level(copy.next_level)
+      , word(copy.word)
+      , number(copy.number)
+      , letter(copy.letter)
+      , flag(copy.flag)
+    {
+        _link_levels(_is_associative());
+    }
+
+    test_recursive_data(test_recursive_data& copy)
+      : previous_level(copy.previous_level)
+      , next_level(copy.next_level)
+      , word(copy.word)
+      , number(copy.number)
+      , letter(copy.letter)
+      , flag(copy.flag)
+    {
+        _link_levels(_is_associative());
+    }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+    test_recursive_data& operator=(test_recursive_data const& copy)
+    {
+        if (this != ©)
+        {
+            _copy_assign(copy);
+        }
+
+        return *this;
+    }
+
+    test_recursive_data& operator=(test_recursive_data& copy)
+    {
+        if (this != ©)
+        {
+            _copy_assign(const_cast<test_recursive_data const&>(copy));
+        }
+
+        return *this;
+    }
+
+ private:
+    void _copy_assign(test_recursive_data const& copy)
+    {
+        next_level = copy.next_level;
+        word = copy.word;
+        number = copy.number;
+        _link_levels(_is_associative());
+    }
+#else  // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+    test_recursive_data(BOOST_RV_REF(test_recursive_data) source)
+      : previous_level(source.previous_level)
+      , next_level(boost::move(source.next_level))
+      , word(boost::move(source.word))
+      , number(source.number)
+      , letter(source.letter)
+      , flag(source.flag)
+    {
+        _link_levels(_is_associative());
+    }
+
+#if defined BOOST_NO_RVALUE_REFERENCES
+    operator boost::rv<test_recursive_data> const&() const
+    {
+        return *static_cast<boost::rv<test_recursive_data> const*>(this);
+    }
+
+    operator boost::rv<test_recursive_data>&()
+    {
+        return *static_cast<boost::rv<test_recursive_data>*>(this);
+    }
+
+    test_recursive_data&
+        operator=(boost::rv<test_recursive_data> const& ca_ref)
+    {
+        test_recursive_data const& copy = static_cast<
+            test_recursive_data const&
+        >(ca_ref);
+
+        if (this != ©)
+        {
+            _copy_assign(copy);
+        }
+
+        return *this;
+    }
+
+    test_recursive_data& operator=(boost::rv<test_recursive_data>& rv_ref)
+    {
+        if (this != &static_cast<test_recursive_data&>(rv_ref))
+        {
+            _move_assign(rv_ref);
+        }
+
+        return *this;
+    }
+
+    test_recursive_data& operator=(test_recursive_data& copy)
+    {
+        if (this != ©)
+        {
+            _copy_assign(const_cast<test_recursive_data const&>(copy));
+        }
+
+        return *this;
+    }
+#else  // !defined BOOST_NO_RVALUE_REFERENCES
+    test_recursive_data& operator=(test_recursive_data const& copy)
+    {
+        if (this != ©)
+        {
+            _copy_assign(copy);
+        }
+
+        return *this;
+    }
+
+    test_recursive_data& operator=(test_recursive_data&& source)
+    {
+        if (this != &static_cast<test_recursive_data&>(source))
+        {
+            _move_assign(static_cast<test_recursive_data&&>(source));
+        }
+
+        return *this;
+    }
+#endif  // BOOST_NO_RVALUE_REFERENCES
+
+ private:
+    void _copy_assign(BOOST_COPY_ASSIGN_REF(test_recursive_data) copy)
+    {
+        next_level = copy.next_level;
+        word = copy.word;
+        number = copy.number;
+        _link_levels(_is_associative());
+    }
+
+    void _move_assign(BOOST_RV_REF(test_recursive_data) source)
+    {
+        next_level = boost::move(source.next_level);
+        word = boost::move(source.word);
+        number = source.number;
+        _link_levels(_is_associative());
+    }
+#endif  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+    void _link_levels(boost::mpl::true_)
+    {
+        typename next_level_t::iterator itr_end = next_level.end();
+
+        for (
+            typename next_level_t::iterator itr = next_level.begin();
+            itr != itr_end;
+            ++itr
+        )
+        {
+            boost::get_iterator_second(itr).previous_level = this;
+        }
+    }
+
+    void _link_levels(boost::mpl::false_)
+    {
+        typename next_level_t::iterator itr_end = next_level.end();
+
+        for (
+            typename next_level_t::iterator itr = next_level.begin();
+            itr != itr_end;
+            ++itr
+        )
+        {
+            itr->previous_level = this;
+        }
+    }
+};
+
+#if defined BOOST_MSVC
+   #pragma warning (pop)
+#endif
+
+#endif  // LIBS_CONTAINER_GEN_TEST_TYPE_DEFINITIONS_HPP_INCLUDED
+
Added: sandbox/container_gen/libs/graph/example/container_gen.cpp
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/graph/example/container_gen.cpp	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,55 @@
+//=======================================================================
+// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
+// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
+//
+// 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_NO_STD_ALLOCATOR
+
+#include <boost/mpl/bool.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/graph/properties.hpp>
+#include <memory>
+#include <iostream>
+
+//[example__container_gen__list_with_custom_allocator_selector
+struct int_allocator_selector
+{
+    template <typename T>
+    struct apply
+    {
+        typedef std::allocator<int> type;
+    };
+};
+
+int main(int, char*[])
+{
+    boost::adjacency_list<
+        boost::list_selector<boost::mpl::false_,int_allocator_selector>
+      , boost::dequeS
+      , boost::directedS
+    > g(5);
+
+    std::cout << boost::get(
+        boost::get(boost::vertex_index, g)
+      , boost::vertex(4, g)
+    ) << std::endl;
+
+    return 0;
+}
+//]
+
+#else
+
+int main(int, char*[])
+{
+    return 0;
+}
+
+#endif
+
Added: sandbox/container_gen/libs/graph/example/container_gen.expected
==============================================================================
Added: sandbox/container_gen/libs/utility/doc/html/get_iterator_second.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/html/get_iterator_second.html	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,120 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>get_iterator_second</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="get_iterator_second.html" title="get_iterator_second">
+</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"></div>
+<div class="article">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="get_iterator_second"></a>get_iterator_second</h2></div>
+<div><p class="copyright">Copyright © 2012 Cromwell Enage</p></div>
+<div><div class="legalnotice">
+<a name="get_iterator_second.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>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Function Synopsis</span></dt>
+<dt><span class="section">Function Description</span></dt>
+<dt><span class="section"><a href="get_iterator_second.html#get_iterator_second.rtmf_synopsis">Return Type Metafunction
+    Synopsis</a></span></dt>
+<dt><span class="section"><a href="get_iterator_second.html#get_iterator_second.rtmf_desc">Return Type Metafunction
+    Description</a></span></dt>
+<dt><span class="section">Where defined</span></dt>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_iterator_second.func_synopsis"></a><a class="link" href="get_iterator_second.html#get_iterator_second.func_synopsis" title="Function Synopsis">Function Synopsis</a>
+</h2></div></div></div>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+    <span class="keyword">typename</span> <span class="identifier">get_iterator_second_result</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">type</span>
+        <span class="identifier">get_iterator_second</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">itr</span><span class="special">);</span>
+
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_iterator_second.func_desc"></a><a class="link" href="get_iterator_second.html#get_iterator_second.func_desc" title="Function Description">Function Description</a>
+</h2></div></div></div>
+<p>
+      Takes in an Iterator that points to a valid key-value pair
+      in an Associative Container or an associative Boost.PtrContainer;
+      returns a reference to the mapped value.
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_iterator_second.rtmf_synopsis"></a><a class="link" href="get_iterator_second.html#get_iterator_second.rtmf_synopsis" title="Return Type Metafunction Synopsis">Return Type Metafunction
+    Synopsis</a>
+</h2></div></div></div>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">get_iterator_second_result</span>
+    <span class="special">{</span>
+        <span class="keyword">typedef</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"><</span>
+                    <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unwrap_reference</span><span class="special"><</span>
+                        <span class="identifier">BOOST_TYPEOF_TPL</span><span class="special">(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">()-></span><span class="identifier">second</span><span class="special">))</span>
+                    <span class="special">>::</span><span class="identifier">type</span>
+                <span class="special">>::</span><span class="identifier">type</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>
+<p>
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_iterator_second.rtmf_desc"></a><a class="link" href="get_iterator_second.html#get_iterator_second.rtmf_desc" title="Return Type Metafunction Description">Return Type Metafunction
+    Description</a>
+</h2></div></div></div>
+<p>
+      Takes in the iterator type of an Associative Container or an associative Boost.PtrContainer;
+      returns the mapped type.
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_iterator_second.definition"></a><a class="link" href="get_iterator_second.html#get_iterator_second.definition" title="Where defined">Where defined</a>
+</h2></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/utility/get_iterator_second.hpp<span class="special">></span>
+</pre>
+<p>
+    </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: December 30, 2012 at 16:56:25 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"></div>
+</body>
+</html>
Added: sandbox/container_gen/libs/utility/doc/html/get_iterator_value_second.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/html/get_iterator_value_second.html	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,125 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>get_iterator_value_second</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="get_iterator_value_second.html" title="get_iterator_value_second">
+</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"></div>
+<div class="article">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="get_iterator_value_second"></a>get_iterator_value_second</h2></div>
+<div><p class="copyright">Copyright © 2012 Cromwell Enage</p></div>
+<div><div class="legalnotice">
+<a name="get_iterator_value_second.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>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Function Synopsis</span></dt>
+<dt><span class="section">Function Description</span></dt>
+<dt><span class="section"><a href="get_iterator_value_second.html#get_iterator_value_second.rtmf_synopsis">Return Type Metafunction
+    Synopsis</a></span></dt>
+<dt><span class="section"><a href="get_iterator_value_second.html#get_iterator_value_second.rtmf_desc">Return Type Metafunction
+    Description</a></span></dt>
+<dt><span class="section">Where defined</span></dt>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_iterator_value_second.func_synopsis"></a><a class="link" href="get_iterator_value_second.html#get_iterator_value_second.func_synopsis" title="Function Synopsis">Function Synopsis</a>
+</h2></div></div></div>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">IterValue</span><span class="special">></span>
+    <span class="keyword">typename</span> <span class="identifier">get_iterator_value_second_result</span><span class="special"><</span><span class="identifier">IterValue</span><span class="special">>::</span><span class="identifier">type</span>
+        <span class="identifier">get_iterator_value_second</span><span class="special">(</span><span class="identifier">IterValue</span><span class="special">&</span> <span class="identifier">value</span><span class="special">);</span>
+
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_iterator_value_second.func_desc"></a><a class="link" href="get_iterator_value_second.html#get_iterator_value_second.func_desc" title="Function Description">Function Description</a>
+</h2></div></div></div>
+<p>
+      Takes in a valid key-value pair in an Associative Container or an associative Boost.PtrContainer;
+      returns a reference to the mapped value.
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_iterator_value_second.rtmf_synopsis"></a><a class="link" href="get_iterator_value_second.html#get_iterator_value_second.rtmf_synopsis" title="Return Type Metafunction Synopsis">Return Type Metafunction
+    Synopsis</a>
+</h2></div></div></div>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">IterValue</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">get_iterator_value_second_result</span>
+    <span class="special">{</span>
+        <span class="keyword">typedef</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"><</span>
+                    <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">unwrap_reference</span><span class="special"><</span>
+                        <span class="identifier">BOOST_TYPEOF_TPL</span><span class="special">(</span>
+                            <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span>
+                                <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_reference</span><span class="special"><</span>
+                                    <span class="identifier">IterValue</span>
+                                <span class="special">>().</span><span class="identifier">second</span>
+                            <span class="special">)</span>
+                        <span class="special">)</span>
+                    <span class="special">>::</span><span class="identifier">type</span>
+                <span class="special">>::</span><span class="identifier">type</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>
+<p>
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_iterator_value_second.rtmf_desc"></a><a class="link" href="get_iterator_value_second.html#get_iterator_value_second.rtmf_desc" title="Return Type Metafunction Description">Return Type Metafunction
+    Description</a>
+</h2></div></div></div>
+<p>
+      Takes in the value type of an Associative Container or an associative Boost.PtrContainer;
+      returns the mapped type.
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_iterator_value_second.definition"></a><a class="link" href="get_iterator_value_second.html#get_iterator_value_second.definition" title="Where defined">Where defined</a>
+</h2></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/utility/get_iterator_value_second.hpp<span class="special">></span>
+</pre>
+<p>
+    </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: December 30, 2012 at 16:57:07 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"></div>
+</body>
+</html>
Added: sandbox/container_gen/libs/utility/doc/html/get_reference.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/html/get_reference.html	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,82 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>get_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="get_reference.html" title="get_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"></div>
+<div class="article">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="get_reference"></a>get_reference</h2></div>
+<div><p class="copyright">Copyright © 2012 Cromwell Enage</p></div>
+<div><div class="legalnotice">
+<a name="get_reference.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>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Function Synopsis</span></dt>
+<dt><span class="section">Function Description</span></dt>
+<dt><span class="section">Where defined</span></dt>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_reference.func_synopsis"></a><a class="link" href="get_reference.html#get_reference.func_synopsis" title="Function Synopsis">Function Synopsis</a>
+</h2></div></div></div>
+<p>
+</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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+    <span class="identifier">T</span><span class="special">&</span> <span class="identifier">get_reference</span><span class="special">()</span>
+    <span class="special">{</span>
+        <span class="keyword">return</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">T</span><span class="special">>().</span><span class="identifier">get</span><span class="special">();</span>
+    <span class="special">}</span>
+<span class="special">}</span>  <span class="comment">// namespace boost</span>
+</pre>
+<p>
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_reference.func_desc"></a><a class="link" href="get_reference.html#get_reference.func_desc" title="Function Description">Function Description</a>
+</h2></div></div></div>
+<p>
+      Allows a BOOST_TYPEOF or BOOST_TYPEOF_TPL expression to obtain
+      a reference to the specified type without requiring the type to be Default Constructible.
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="get_reference.definition"></a><a class="link" href="get_reference.html#get_reference.definition" title="Where defined">Where defined</a>
+</h2></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/utility/get_reference.hpp<span class="special">></span>
+</pre>
+<p>
+    </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: December 15, 2012 at 20:26:52 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"></div>
+</body>
+</html>
Added: sandbox/container_gen/libs/utility/doc/html/is_mpl_boolean_constant.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/html/is_mpl_boolean_constant.html	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,80 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_mpl_boolean_constant</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="is_mpl_boolean_constant.html" title="is_mpl_boolean_constant">
+</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"></div>
+<div class="article">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="is_mpl_boolean_constant"></a>is_mpl_boolean_constant</h2></div>
+<div><p class="copyright">Copyright © 2013 Cromwell Enage</p></div>
+<div><div class="legalnotice">
+<a name="is_mpl_boolean_constant.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>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Synopsis</span></dt>
+<dt><span class="section">Description</span></dt>
+<dt><span class="section">Where defined</span></dt>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="is_mpl_boolean_constant.synopsis"></a><a class="link" href="is_mpl_boolean_constant.html#is_mpl_boolean_constant.synopsis" title="Synopsis">Synopsis</a>
+</h2></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_mpl_boolean_constant</span>
+<span class="special">{</span>
+    <span class="comment">// typedef ... type;</span>
+<span class="special">};</span>
+</pre>
+<p>
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="is_mpl_boolean_constant.description"></a><a class="link" href="is_mpl_boolean_constant.html#is_mpl_boolean_constant.description" title="Description">Description</a>
+</h2></div></div></div>
+<p>
+      Returns boost::mpl::true_ if the bound argument type
+      models the MPL Boolean Constant concept, boost::mpl::false_
+      otherwise.
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="is_mpl_boolean_constant.definition"></a><a class="link" href="is_mpl_boolean_constant.html#is_mpl_boolean_constant.definition" title="Where defined">Where defined</a>
+</h2></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/utility/is_mpl_boolean_constant.hpp<span class="special">></span>
+</pre>
+<p>
+    </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: June 06, 2013 at 14:15:00 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"></div>
+</body>
+</html>
Added: sandbox/container_gen/libs/utility/doc/html/is_mpl_integral_constant.html
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/html/is_mpl_integral_constant.html	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,92 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>is_mpl_integral_constant</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="is_mpl_integral_constant.html" title="is_mpl_integral_constant">
+</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"></div>
+<div class="article">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="is_mpl_integral_constant"></a>is_mpl_integral_constant</h2></div>
+<div><p class="copyright">Copyright © 2013 Cromwell Enage</p></div>
+<div><div class="legalnotice">
+<a name="is_mpl_integral_constant.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>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Synopsis</span></dt>
+<dt><span class="section">Description</span></dt>
+<dt><span class="section">Where defined</span></dt>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="is_mpl_integral_constant.synopsis"></a><a class="link" href="is_mpl_integral_constant.html#is_mpl_integral_constant.synopsis" title="Synopsis">Synopsis</a>
+</h2></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">is_mpl_integral_constant</span>
+<span class="special">{</span>
+    <span class="comment">// typedef ... type;</span>
+<span class="special">};</span>
+</pre>
+<p>
+    </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="is_mpl_integral_constant.description"></a><a class="link" href="is_mpl_integral_constant.html#is_mpl_integral_constant.description" title="Description">Description</a>
+</h2></div></div></div>
+<p>
+      Returns boost::mpl::true_ if the bound argument type
+      models the MPL Integral Constant concept, boost::mpl::false_
+      otherwise.
+    </p>
+</div>
+<div class="warning"><table border="0" summary="Warning">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="images/warning.png"></td>
+<th align="left">Warning</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+      The boost::mpl::bool_ data type does not model the
+      MPL Integral Constant concept according to this
+      metafunction. Use boost::is_mpl_boolean_constant<> to detect models of the <a href="http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html" target="_top"><span class="bold"><strong>MPL
+      Boolean Constant</strong></span></a> concept.
+    </p></td></tr>
+</table></div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="is_mpl_integral_constant.definition"></a><a class="link" href="is_mpl_integral_constant.html#is_mpl_integral_constant.definition" title="Where defined">Where defined</a>
+</h2></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/utility/is_mpl_integral_constant.hpp<span class="special">></span>
+</pre>
+<p>
+    </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: June 06, 2013 at 14:15:31 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"></div>
+</body>
+</html>
Added: sandbox/container_gen/libs/utility/doc/src/get_iterator_second/Jamroot
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/src/get_iterator_second/Jamroot	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,65 @@
+project
+    : requirements
+        # Path for links to Boost:
+        # <xsl:param>boost.root=../../../..
+        <xsl:param>boost.root=http://www.boost.org
+
+        # Some general style settings:
+        <xsl:param>table.footnote.number.format=1
+        <xsl:param>footnote.number.format=1
+
+        # HTML options first:
+        # Use graphics not text for navigation:
+        <xsl:param>navig.graphics=1
+        # PDF Options:
+        # TOC Generation: this is needed for FOP-0.9 and later:
+        <xsl:param>fop1.extensions=0
+        <xsl:param>xep.extensions=1
+        # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+        <xsl:param>fop.extensions=0
+        # No indent on body text:
+        <xsl:param>body.start.indent=0pt
+        # Margin size:
+        <xsl:param>page.margin.inner=0.5in
+        # Margin size:
+        <xsl:param>page.margin.outer=0.5in
+        # Paper type = A4
+        <xsl:param>paper.type=A4
+        # Yes, we want graphics for admonishments:
+        <xsl:param>admon.graphics=1
+        # Set this one for PDF generation *only*:
+        # default pnd graphics are awful in PDF form,
+        # better use SVG's instead:
+        <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+        <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
+#        <format>pdf:<xsl:param>boost.url.prefix=../../../../../../libs/utility/doc/html
+        <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/utility/doc/html
+    ;
+
+import boostbook : boostbook ;
+using quickbook ;
+
+path-constant boost-images : http://www.boost.org/doc/src/images ;
+
+xml get_iterator_second : doc.qbk ;
+boostbook standalone
+    :
+        get_iterator_second
+    :
+        <xsl:param>base.dir=../../../html
+        <xsl:param>root.filename=get_iterator_second
+        <xsl:param>boost.libraries=http://www.boost.org/libs/libraries.htm
+        <xsl:param>boost.image.src=../../../../boost.png
+        <xsl:param>boost.image.alt="C++ Boost"
+        <xsl:param>boost.image.w=277
+        <xsl:param>boost.image.h=86
+#        <xsl:param>html.stylesheet=../../../../../../doc/src/boostbook.css
+        <xsl:param>html.stylesheet=http://www.boost.org/doc/libs/release/doc/src/boostbook.css
+        <xsl:param>nav.layout=none
+        <xsl:param>chunk.section.depth=0
+        <xsl:param>chunk.first.sections=0
+        <xsl:param>toc.section.depth=1
+        <xsl:param>toc.max.depth=1
+        <xsl:param>generate.section.toc.level=1
+    ;
+
Added: sandbox/container_gen/libs/utility/doc/src/get_iterator_second/doc.qbk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/src/get_iterator_second/doc.qbk	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,68 @@
+[article get_iterator_second
+    [quickbook 1.5]
+    [copyright 2012 Cromwell Enage]
+    [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])
+    ]
+]
+
+
+[def __Iterator__ [@http://www.sgi.com/tech/stl/Iterator.html [*Iterator]]]
+[def __Associative_Container__ [@http://www.sgi.com/tech/stl/AssociativeContainer.html [*Associative Container]]]
+[def __Boost_Ptr_Container__ [@boost:libs/ptr_container/doc/index.html [*Boost.PtrContainer]]]
+[def __boost_utility_get_iterator_second_hpp__ [@../../../../boost/utility/get_iterator_second.hpp boost/utility/get_iterator_second.hpp]]
+
+[import ../../../../../boost/utility/get_iterator_second.hpp]
+
+
+[/======================================]
+[section:func_synopsis Function Synopsis]
+[/======================================]
+
+[reference__get_iterator_second]
+
+[endsect]
+
+
+[/=====================================]
+[section:func_desc Function Description]
+[/=====================================]
+
+Takes in an __Iterator__ that points to a valid key-value pair in an
+__Associative_Container__ or an associative __Boost_Ptr_Container__;
+returns a reference to the mapped value.
+
+[endsect]
+
+
+[/======================================================]
+[section:rtmf_synopsis Return Type Metafunction Synopsis]
+[/======================================================]
+
+[reference__get_iterator_second_result]
+
+[endsect]
+
+
+[/=====================================================]
+[section:rtmf_desc Return Type Metafunction Description]
+[/=====================================================]
+
+Takes in the iterator type of an __Associative_Container__ or an associative
+__Boost_Ptr_Container__; returns the mapped type.
+
+[endsect]
+
+
+[/===============================]
+[section:definition Where defined]
+[/===============================]
+
+``
+#include <__boost_utility_get_iterator_second_hpp__>
+``
+
+[endsect]
+
Added: sandbox/container_gen/libs/utility/doc/src/get_iterator_value_second/Jamroot
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/src/get_iterator_value_second/Jamroot	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,65 @@
+project
+    : requirements
+        # Path for links to Boost:
+        # <xsl:param>boost.root=../../../..
+        <xsl:param>boost.root=http://www.boost.org
+
+        # Some general style settings:
+        <xsl:param>table.footnote.number.format=1
+        <xsl:param>footnote.number.format=1
+
+        # HTML options first:
+        # Use graphics not text for navigation:
+        <xsl:param>navig.graphics=1
+        # PDF Options:
+        # TOC Generation: this is needed for FOP-0.9 and later:
+        <xsl:param>fop1.extensions=0
+        <xsl:param>xep.extensions=1
+        # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+        <xsl:param>fop.extensions=0
+        # No indent on body text:
+        <xsl:param>body.start.indent=0pt
+        # Margin size:
+        <xsl:param>page.margin.inner=0.5in
+        # Margin size:
+        <xsl:param>page.margin.outer=0.5in
+        # Paper type = A4
+        <xsl:param>paper.type=A4
+        # Yes, we want graphics for admonishments:
+        <xsl:param>admon.graphics=1
+        # Set this one for PDF generation *only*:
+        # default pnd graphics are awful in PDF form,
+        # better use SVG's instead:
+        <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+        <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
+#        <format>pdf:<xsl:param>boost.url.prefix=../../../../../../libs/utility/doc/html
+        <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/utility/doc/html
+    ;
+
+import boostbook : boostbook ;
+using quickbook ;
+
+path-constant boost-images : http://www.boost.org/doc/src/images ;
+
+xml get_iterator_value_second : doc.qbk ;
+boostbook standalone
+    :
+        get_iterator_value_second
+    :
+        <xsl:param>base.dir=../../../html
+        <xsl:param>root.filename=get_iterator_value_second
+        <xsl:param>boost.libraries=http://www.boost.org/libs/libraries.htm
+        <xsl:param>boost.image.src=../../../../boost.png
+        <xsl:param>boost.image.alt="C++ Boost"
+        <xsl:param>boost.image.w=277
+        <xsl:param>boost.image.h=86
+#        <xsl:param>html.stylesheet=../../../../../../doc/src/boostbook.css
+        <xsl:param>html.stylesheet=http://www.boost.org/doc/libs/release/doc/src/boostbook.css
+        <xsl:param>nav.layout=none
+        <xsl:param>chunk.section.depth=0
+        <xsl:param>chunk.first.sections=0
+        <xsl:param>toc.section.depth=1
+        <xsl:param>toc.max.depth=1
+        <xsl:param>generate.section.toc.level=1
+    ;
+
Added: sandbox/container_gen/libs/utility/doc/src/get_iterator_value_second/doc.qbk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/src/get_iterator_value_second/doc.qbk	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,68 @@
+[article get_iterator_value_second
+    [quickbook 1.5]
+    [copyright 2012 Cromwell Enage]
+    [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])
+    ]
+]
+
+
+[def __Iterator__ [@http://www.sgi.com/tech/stl/Iterator.html [*Iterator]]]
+[def __Associative_Container__ [@http://www.sgi.com/tech/stl/AssociativeContainer.html [*Associative Container]]]
+[def __Boost_Ptr_Container__ [@boost:libs/ptr_container/doc/index.html [*Boost.PtrContainer]]]
+[def __boost_utility_get_iterator_value_second_hpp__ [@../../../../boost/utility/get_iterator_value_second.hpp boost/utility/get_iterator_value_second.hpp]]
+
+[import ../../../../../boost/utility/get_iterator_value_second.hpp]
+
+
+[/======================================]
+[section:func_synopsis Function Synopsis]
+[/======================================]
+
+[reference__get_iterator_value_second]
+
+[endsect]
+
+
+[/=====================================]
+[section:func_desc Function Description]
+[/=====================================]
+
+Takes in a valid key-value pair in an __Associative_Container__ or an
+associative __Boost_Ptr_Container__; returns a reference to the mapped
+value.
+
+[endsect]
+
+
+[/======================================================]
+[section:rtmf_synopsis Return Type Metafunction Synopsis]
+[/======================================================]
+
+[reference__get_iterator_value_second_result]
+
+[endsect]
+
+
+[/=====================================================]
+[section:rtmf_desc Return Type Metafunction Description]
+[/=====================================================]
+
+Takes in the value type of an __Associative_Container__ or an associative
+__Boost_Ptr_Container__; returns the mapped type.
+
+[endsect]
+
+
+[/===============================]
+[section:definition Where defined]
+[/===============================]
+
+``
+#include <__boost_utility_get_iterator_value_second_hpp__>
+``
+
+[endsect]
+
Added: sandbox/container_gen/libs/utility/doc/src/get_reference/Jamroot
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/src/get_reference/Jamroot	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,65 @@
+project
+    : requirements
+        # Path for links to Boost:
+        # <xsl:param>boost.root=../../../..
+        <xsl:param>boost.root=http://www.boost.org
+
+        # Some general style settings:
+        <xsl:param>table.footnote.number.format=1
+        <xsl:param>footnote.number.format=1
+
+        # HTML options first:
+        # Use graphics not text for navigation:
+        <xsl:param>navig.graphics=1
+        # PDF Options:
+        # TOC Generation: this is needed for FOP-0.9 and later:
+        <xsl:param>fop1.extensions=0
+        <xsl:param>xep.extensions=1
+        # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+        <xsl:param>fop.extensions=0
+        # No indent on body text:
+        <xsl:param>body.start.indent=0pt
+        # Margin size:
+        <xsl:param>page.margin.inner=0.5in
+        # Margin size:
+        <xsl:param>page.margin.outer=0.5in
+        # Paper type = A4
+        <xsl:param>paper.type=A4
+        # Yes, we want graphics for admonishments:
+        <xsl:param>admon.graphics=1
+        # Set this one for PDF generation *only*:
+        # default pnd graphics are awful in PDF form,
+        # better use SVG's instead:
+        <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+        <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
+#        <format>pdf:<xsl:param>boost.url.prefix=../../../../../../libs/utility/doc/html
+        <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/utility/doc/html
+    ;
+
+import boostbook : boostbook ;
+using quickbook ;
+
+path-constant boost-images : http://www.boost.org/doc/src/images ;
+
+xml get_reference : doc.qbk ;
+boostbook standalone
+    :
+        get_reference
+    :
+        <xsl:param>base.dir=../../../html
+        <xsl:param>root.filename=get_reference
+        <xsl:param>boost.libraries=http://www.boost.org/libs/libraries.htm
+        <xsl:param>boost.image.src=../../../../boost.png
+        <xsl:param>boost.image.alt="C++ Boost"
+        <xsl:param>boost.image.w=277
+        <xsl:param>boost.image.h=86
+#        <xsl:param>html.stylesheet=../../../../../../doc/src/boostbook.css
+        <xsl:param>html.stylesheet=http://www.boost.org/doc/libs/release/doc/src/boostbook.css
+        <xsl:param>nav.layout=none
+        <xsl:param>chunk.section.depth=0
+        <xsl:param>chunk.first.sections=0
+        <xsl:param>toc.section.depth=1
+        <xsl:param>toc.max.depth=1
+        <xsl:param>generate.section.toc.level=1
+    ;
+
Added: sandbox/container_gen/libs/utility/doc/src/get_reference/doc.qbk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/src/get_reference/doc.qbk	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,49 @@
+[article get_reference
+    [quickbook 1.5]
+    [copyright 2012 Cromwell Enage]
+    [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])
+    ]
+]
+
+
+[def __BOOST_TYPEOF__ [@boost:doc/html/typeof.refe.html#typeof `BOOST_TYPEOF`]]
+[def __BOOST_TYPEOF_TPL__ [@boost:doc/html/typeof.refe.html#typeof `BOOST_TYPEOF_TPL`]]
+[def __Default_Constructible__ [@http://www.sgi.com/tech/stl/DefaultConstructible.html [*Default Constructible]]]
+[def __boost_utility_get_reference_hpp__ [@../../../../boost/utility/get_reference.hpp boost/utility/get_reference.hpp]]
+
+[import ../../../../../boost/utility/get_reference.hpp]
+
+
+[/======================================]
+[section:func_synopsis Function Synopsis]
+[/======================================]
+
+[reference__get_reference]
+
+[endsect]
+
+
+[/=====================================]
+[section:func_desc Function Description]
+[/=====================================]
+
+Allows a __BOOST_TYPEOF__ or __BOOST_TYPEOF_TPL__ expression to obtain a
+reference to the specified type without requiring the type to be
+__Default_Constructible__.
+
+[endsect]
+
+
+[/===============================]
+[section:definition Where defined]
+[/===============================]
+
+``
+#include <__boost_utility_get_reference_hpp__>
+``
+
+[endsect]
+
Added: sandbox/container_gen/libs/utility/doc/src/is_mpl_boolean_constant/Jamroot
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/src/is_mpl_boolean_constant/Jamroot	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,65 @@
+project
+    : requirements
+        # Path for links to Boost:
+        # <xsl:param>boost.root=../../../..
+        <xsl:param>boost.root=http://www.boost.org
+
+        # Some general style settings:
+        <xsl:param>table.footnote.number.format=1
+        <xsl:param>footnote.number.format=1
+
+        # HTML options first:
+        # Use graphics not text for navigation:
+        <xsl:param>navig.graphics=1
+        # PDF Options:
+        # TOC Generation: this is needed for FOP-0.9 and later:
+        <xsl:param>fop1.extensions=0
+        <xsl:param>xep.extensions=1
+        # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+        <xsl:param>fop.extensions=0
+        # No indent on body text:
+        <xsl:param>body.start.indent=0pt
+        # Margin size:
+        <xsl:param>page.margin.inner=0.5in
+        # Margin size:
+        <xsl:param>page.margin.outer=0.5in
+        # Paper type = A4
+        <xsl:param>paper.type=A4
+        # Yes, we want graphics for admonishments:
+        <xsl:param>admon.graphics=1
+        # Set this one for PDF generation *only*:
+        # default pnd graphics are awful in PDF form,
+        # better use SVG's instead:
+        <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+        <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
+#        <format>pdf:<xsl:param>boost.url.prefix=../../../../../../libs/utility/doc/html
+        <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/utility/doc/html
+    ;
+
+import boostbook : boostbook ;
+using quickbook ;
+
+path-constant boost-images : http://www.boost.org/doc/src/images ;
+
+xml is_mpl_boolean_constant : doc.qbk ;
+boostbook standalone
+    :
+        is_mpl_boolean_constant
+    :
+        <xsl:param>base.dir=../../../html
+        <xsl:param>root.filename=is_mpl_boolean_constant
+        <xsl:param>boost.libraries=http://www.boost.org/libs/libraries.htm
+        <xsl:param>boost.image.src=../../../../boost.png
+        <xsl:param>boost.image.alt="C++ Boost"
+        <xsl:param>boost.image.w=277
+        <xsl:param>boost.image.h=86
+#        <xsl:param>html.stylesheet=../../../../../../doc/src/boostbook.css
+        <xsl:param>html.stylesheet=http://www.boost.org/doc/libs/release/doc/src/boostbook.css
+        <xsl:param>nav.layout=none
+        <xsl:param>chunk.section.depth=0
+        <xsl:param>chunk.first.sections=0
+        <xsl:param>toc.section.depth=1
+        <xsl:param>toc.max.depth=1
+        <xsl:param>generate.section.toc.level=1
+    ;
+
Added: sandbox/container_gen/libs/utility/doc/src/is_mpl_boolean_constant/doc.qbk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/src/is_mpl_boolean_constant/doc.qbk	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,32 @@
+[article is_mpl_boolean_constant
+    [quickbook 1.5]
+    [copyright 2013 Cromwell Enage]
+    [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])
+    ]
+]
+
+[def __MPL_Boolean_Constant__ [@boost:libs/mpl/doc/refmanual/integral-constant.html [*MPL Boolean Constant]]]
+[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 __boost_utility_is_mpl_boolean_constant_hpp__ [@../../../../boost/utility/is_mpl_boolean_constant.hpp boost/utility/is_mpl_boolean_constant.hpp]]
+
+[import ../../../../../boost/utility/is_mpl_boolean_constant.hpp]
+
+[section Synopsis]
+[reference__is_mpl_boolean_constant]
+[endsect]
+
+[section Description]
+Returns __mpl_true__ if the bound argument type models the
+__MPL_Boolean_Constant__ concept, __mpl_false__ otherwise.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_utility_is_mpl_boolean_constant_hpp__>
+``
+[endsect]
+
Added: sandbox/container_gen/libs/utility/doc/src/is_mpl_integral_constant/Jamroot
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/src/is_mpl_integral_constant/Jamroot	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,65 @@
+project
+    : requirements
+        # Path for links to Boost:
+        # <xsl:param>boost.root=../../../..
+        <xsl:param>boost.root=http://www.boost.org
+
+        # Some general style settings:
+        <xsl:param>table.footnote.number.format=1
+        <xsl:param>footnote.number.format=1
+
+        # HTML options first:
+        # Use graphics not text for navigation:
+        <xsl:param>navig.graphics=1
+        # PDF Options:
+        # TOC Generation: this is needed for FOP-0.9 and later:
+        <xsl:param>fop1.extensions=0
+        <xsl:param>xep.extensions=1
+        # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+        <xsl:param>fop.extensions=0
+        # No indent on body text:
+        <xsl:param>body.start.indent=0pt
+        # Margin size:
+        <xsl:param>page.margin.inner=0.5in
+        # Margin size:
+        <xsl:param>page.margin.outer=0.5in
+        # Paper type = A4
+        <xsl:param>paper.type=A4
+        # Yes, we want graphics for admonishments:
+        <xsl:param>admon.graphics=1
+        # Set this one for PDF generation *only*:
+        # default pnd graphics are awful in PDF form,
+        # better use SVG's instead:
+        <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+        <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
+#        <format>pdf:<xsl:param>boost.url.prefix=../../../../../../libs/utility/doc/html
+        <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/utility/doc/html
+    ;
+
+import boostbook : boostbook ;
+using quickbook ;
+
+path-constant boost-images : http://www.boost.org/doc/src/images ;
+
+xml is_mpl_integral_constant : doc.qbk ;
+boostbook standalone
+    :
+        is_mpl_integral_constant
+    :
+        <xsl:param>base.dir=../../../html
+        <xsl:param>root.filename=is_mpl_integral_constant
+        <xsl:param>boost.libraries=http://www.boost.org/libs/libraries.htm
+        <xsl:param>boost.image.src=../../../../boost.png
+        <xsl:param>boost.image.alt="C++ Boost"
+        <xsl:param>boost.image.w=277
+        <xsl:param>boost.image.h=86
+#        <xsl:param>html.stylesheet=../../../../../../doc/src/boostbook.css
+        <xsl:param>html.stylesheet=http://www.boost.org/doc/libs/release/doc/src/boostbook.css
+        <xsl:param>nav.layout=none
+        <xsl:param>chunk.section.depth=0
+        <xsl:param>chunk.first.sections=0
+        <xsl:param>toc.section.depth=1
+        <xsl:param>toc.max.depth=1
+        <xsl:param>generate.section.toc.level=1
+    ;
+
Added: sandbox/container_gen/libs/utility/doc/src/is_mpl_integral_constant/doc.qbk
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ sandbox/container_gen/libs/utility/doc/src/is_mpl_integral_constant/doc.qbk	2013-06-06 11:02:40 EDT (Thu, 06 Jun 2013)	(r84654)
@@ -0,0 +1,41 @@
+[article is_mpl_integral_constant
+    [quickbook 1.5]
+    [copyright 2013 Cromwell Enage]
+    [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])
+    ]
+]
+
+[def __MPL_Boolean_Constant__ [@boost:libs/mpl/doc/refmanual/integral-constant.html [*MPL Boolean Constant]]]
+[def __MPL_Integral_Constant__ [@boost:libs/mpl/doc/refmanual/integral-constant.html [*MPL Integral Constant]]]
+[def __mpl_bool__ [@boost:libs/mpl/doc/refmanual/bool.html `boost::mpl::bool_`]]
+[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 __boost_utility_is_mpl_integral_constant_hpp__ [@../../../../boost/utility/is_mpl_integral_constant.hpp boost/utility/is_mpl_integral_constant.hpp]]
+[def __is_mpl_boolean_constant__ [@is_mpl_boolean_constant.html `boost::is_mpl_boolean_constant<>`]]
+
+[import ../../../../../boost/utility/is_mpl_integral_constant.hpp]
+
+[section Synopsis]
+[reference__is_mpl_integral_constant]
+[endsect]
+
+[section Description]
+Returns __mpl_true__ if the bound argument type models the
+__MPL_Integral_Constant__ concept, __mpl_false__ otherwise.
+[endsect]
+
+[warning
+    The __mpl_bool__ data type does not model the __MPL_Integral_Constant__
+    concept according to this metafunction.  Use __is_mpl_boolean_constant__
+    to detect models of the __MPL_Boolean_Constant__ concept.
+]
+
+[section:definition Where defined]
+``
+#include <__boost_utility_is_mpl_integral_constant_hpp__>
+``
+[endsect]
+