Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r82133 - in sandbox/tree_node: boost/tree_node boost/tree_node/typeof libs/tree_node/example libs/tree_node/test
From: sponage_at_[hidden]
Date: 2012-12-20 22:42:33


Author: expaler
Date: 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
New Revision: 82133
URL: http://svn.boost.org/trac/boost/changeset/82133

Log:
Boost.TreeNode: added with_accumulation and key-based access.
Added:
   sandbox/tree_node/boost/tree_node/accumulation_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/associative_node.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/base.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/binary_node.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/count_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/data_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/height_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/nary_node.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/position_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/preprocessor.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/red_black_flag_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/accumulation_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/count_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/data_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/height_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/position_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/red_black_flag_key.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/with_accumulation.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/with_count.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/with_height.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/with_position.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof/with_red_black_flag.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/with_accumulation.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/with_count.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/with_height.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/with_position.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/with_red_black_flag.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/assoc_iterator_functions.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/associative_node.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/binary_node.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/iterator_functions.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/match_predicate.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/nary_node.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/output_functions.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/output_preamble.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/output_preamble.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/output_tabs.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/output_tabs.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/type_definitions.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/test/associative_node.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/test/binary_node.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/test/iterator_functions.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/test/nary_node.cpp (contents, props changed)
Removed:
   sandbox/tree_node/libs/tree_node/example/default_unconstruct_type.cpp
   sandbox/tree_node/libs/tree_node/example/default_unconstruct_type.hpp
   sandbox/tree_node/libs/tree_node/example/show_functions.cpp
   sandbox/tree_node/libs/tree_node/example/show_functions.hpp
   sandbox/tree_node/libs/tree_node/example/showcase_assoc_iterators.hpp
   sandbox/tree_node/libs/tree_node/example/showcase_iterators.hpp

Added: sandbox/tree_node/boost/tree_node/accumulation_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/accumulation_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_ACCUMULATION_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_ACCUMULATION_KEY_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/accumulators/statistics/sum.hpp>
+#include <boost/tree_node/data_key.hpp>
+
+//[reference__accumulation_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Key = data_key
+ , typename Tag = ::boost::accumulators::tag::sum
+ , typename IncludesAllDescendants = ::boost::mpl::true_
+ , typename IncludesRoot = ::boost::mpl::true_
+ , typename Value = void
+ >
+ struct accumulation_key
+ {
+ typedef Key key;
+ typedef Tag tag;
+ typedef IncludesAllDescendants includes_all_descendants;
+ typedef IncludesRoot includes_root;
+ typedef Value value;
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ACCUMULATION_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/associative_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/associative_node.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,1465 @@
+// 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_TREE_NODE_ASSOCIATIVE_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_HPP_INCLUDED
+
+#include <utility>
+#include <boost/config.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/range/iterator_range.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_associative_selector.hpp>
+#include <boost/container_gen/is_recursive_selector.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+#include <boost/container_gen/has_stable_iters_selector.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/algorithm/dereference_iterator.hpp>
+#include <boost/tree_node/data_key.hpp>
+#include <boost/assert.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/tr1/type_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/eval_if.hpp>
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+//[reference__associative_node_base__put
+namespace boost { namespace tree_node {
+
+ //<-
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ class associative_node_base;
+ //->
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename V
+ >
+ void
+ put(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , data_key const& key
+ , V const& value
+ );
+}} // namespace boost::tree_node
+//]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename FusionKey
+ >
+ struct has_key_impl<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ > : ::boost::fusion::result_of::has_key<Data,FusionKey>
+ {
+ };
+}} // namespace boost::tree_node
+
+//[reference__associative_node_base__put__fusion
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename FusionKey
+ , typename V
+ >
+ void
+ put(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type = ::boost::mpl::true_()
+ );
+}} // namespace boost::tree_node
+//]
+#endif
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ class associative_node_base
+ : public
+ //[reference__associative_node_base__bases
+ tree_node_base<Derived>
+ //]
+ , private ::boost::noncopyable
+ {
+ BOOST_MPL_ASSERT((::boost::is_associative_selector<Selector>));
+ BOOST_MPL_ASSERT((::boost::is_recursive_selector<Selector>));
+
+ typedef typename ::boost::container_gen<Selector,Key,Derived>::type
+ children;
+
+ public:
+ //[reference__associative_node_base__super_t
+ typedef tree_node_base<Derived>
+ super_t;
+ //]
+
+ //[reference__associative_node_base__pointer
+ typedef typename super_t::pointer
+ pointer;
+ //]
+
+ //[reference__associative_node_base__const_pointer
+ typedef typename super_t::const_pointer
+ const_pointer;
+ //]
+
+ //[reference__associative_node_base__iterator
+ typedef // implementation_defined
+ //<-
+ typename children::iterator
+ //->
+ iterator;
+ //]
+
+ //[reference__associative_node_base__const_iterator
+ typedef // implementation_defined
+ //<-
+ typename children::const_iterator
+ //->
+ const_iterator;
+ //]
+
+ //[reference__associative_node_base__size_type
+ typedef // implementation_defined
+ //<-
+ typename children::size_type
+ //->
+ size_type;
+ //]
+
+ //[reference__associative_node_base__traits
+ struct traits
+ {
+ typedef Key key_type;
+ typedef Data data_type;
+ typedef typename ::boost::mpl::if_<
+ ::boost::is_ptr_selector<Selector>
+ , ::boost::iterator_range<iterator>
+ , ::std::pair<iterator,iterator>
+ >::type
+ iterator_range;
+ typedef typename ::boost::mpl::if_<
+ ::boost::is_ptr_selector<Selector>
+ , ::boost::iterator_range<const_iterator>
+ , ::std::pair<const_iterator,const_iterator>
+ >::type
+ const_iterator_range;
+ };
+ //]
+
+ private:
+ children _children;
+ typename traits::data_type _data;
+ pointer _parent;
+
+ protected:
+ //[reference__associative_node_base__derived_copy_ctor
+ associative_node_base(Derived const& copy);
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ associative_node_base(BOOST_RV_REF(Derived) source);
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__associative_node_base__emplacement_ctor
+ template <typename ...Args>
+ explicit associative_node_base(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL
+ , associative_node_base
+ )
+#endif
+
+ ~associative_node_base();
+
+ //[reference__associative_node_base__on_post_copy_or_move
+ void on_post_copy_or_move();
+ //]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__associative_node_base__copy_assign
+ void copy_assign(Derived const& copy);
+ //]
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ public:
+ //[reference__associative_node_base__key_value_operator__const
+ typename traits::data_type const& operator[](data_key const&) const;
+ //]
+
+ //[reference__associative_node_base__key_value_operator
+ typename traits::data_type& operator[](data_key const&);
+ //]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ //[reference__associative_node_base__fusion_key_value_operator__const
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data const,FusionKey>
+ >::type
+ operator[](FusionKey const&) const;
+ //]
+
+ //[reference__associative_node_base__fusion_key_value_operator
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data,FusionKey>
+ >::type
+ operator[](FusionKey const&);
+ //]
+#endif
+
+ //[reference__associative_node_base__get_parent_ptr__const
+ const_pointer get_parent_ptr() const;
+ //]
+
+ //[reference__associative_node_base__get_parent_ptr
+ pointer get_parent_ptr();
+ //]
+
+ //[reference__associative_node_base__insert
+ iterator
+ insert(
+ typename traits::key_type const& key
+ , Derived const& child
+ );
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__associative_node_base__emplace
+ template <typename ...Args>
+ iterator emplace(typename traits::key_type const& key, Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ emplace( \
+ typename traits::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__associative_node_base__begin__const
+ const_iterator begin() const;
+ //]
+
+ //[reference__associative_node_base__begin
+ iterator begin();
+ //]
+
+ //[reference__associative_node_base__end__const
+ const_iterator end() const;
+ //]
+
+ //[reference__associative_node_base__end
+ iterator end();
+ //]
+
+ //[reference__associative_node_base__size
+ size_type size() const;
+ //]
+
+ //[reference__associative_node_base__empty
+ bool empty() const;
+ //]
+
+ //[reference__associative_node_base__clear
+ void clear();
+ //]
+
+ //[reference__associative_node_base__find__const
+ const_iterator find(typename traits::key_type const& key) const;
+ //]
+
+ //[reference__associative_node_base__find
+ iterator find(typename traits::key_type const& key);
+ //]
+
+ //[reference__associative_node_base__equal_range__const
+ typename traits::const_iterator_range
+ equal_range(typename traits::key_type const& key) const;
+ //]
+
+ //[reference__associative_node_base__equal_range
+ typename traits::iterator_range
+ equal_range(typename traits::key_type const& key);
+ //]
+
+ //[reference__associative_node_base__erase
+ size_type erase(typename traits::key_type const& key);
+ //]
+
+ private:
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ iterator
+ _add_child(typename traits::key_type const& key, Args&& ...args);
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ _add_child( \
+ typename traits::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ void _initialize(iterator& itr);
+
+ void _link_children_to_parent();
+
+ void _on_post_modify_value(data_key const& key);
+
+ template <typename D, typename K, typename T, typename S, typename V>
+ friend void
+ put(
+ associative_node_base<D,K,T,S>& node
+ , data_key const& key
+ , V const& value
+ );
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename FusionKey>
+ void _on_post_modify_value(FusionKey const& key);
+
+ template <
+ typename D
+ , typename K
+ , typename T
+ , typename S
+ , typename FusionKey
+ , typename V
+ >
+ friend void
+ put(
+ associative_node_base<D,K,T,S>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<D,K,T,S>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ };
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base(
+ Derived const& copy
+ ) : _children(copy._children)
+ , _data(copy._data)
+ , _parent(copy._parent)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base(
+ BOOST_RV_REF(Derived) source
+ ) : _children(::boost::move(source._children))
+ , _data(::boost::move(source._data))
+ , _parent(source._parent)
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename ...Args>
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base(
+ Args&& ...args
+ ) : _children(), _data(::boost::forward<Args>(args)...), _parent()
+ {
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename Key \
+ , typename Data \
+ , typename Selector \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) : _children() \
+ , _data( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , _parent() \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ associative_node_base<Derived,Key,Data,Selector>::~associative_node_base()
+ {
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline void
+ associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::on_post_copy_or_move()
+ {
+ this->_link_children_to_parent();
+ this->on_post_propagate_value(data_key());
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ void
+ associative_node_base<Derived,Key,Data,Selector>::copy_assign(
+ Derived const& copy
+ )
+ {
+ Derived twin(copy);
+
+ this->_children = twin._children;
+ this->_data = twin._data;
+ }
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ void
+ associative_node_base<Derived,Key,Data,Selector>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+ {
+ Derived twin(static_cast<Derived const&>(copy));
+
+ this->_children = ::boost::move(twin._children);
+ this->_data = ::boost::move(twin._data);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline void
+ associative_node_base<Derived,Key,Data,Selector>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+ this->_children = ::boost::move(source._children);
+ this->_data = ::boost::move(source._data);
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type const&
+ associative_node_base<Derived,Key,Data,Selector>::operator[](
+ data_key const&
+ ) const
+ {
+ return this->_data;
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type&
+ associative_node_base<Derived,Key,Data,Selector>::operator[](
+ data_key const&
+ )
+ {
+ return this->_data;
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data const,FusionKey>
+ >::type
+ associative_node_base<Derived,Key,Data,Selector>::operator[](
+ FusionKey const&
+ ) const
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data,FusionKey>
+ >::type
+ associative_node_base<Derived,Key,Data,Selector>::operator[](
+ FusionKey const&
+ )
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_pointer
+ associative_node_base<Derived,Key,Data,Selector>::get_parent_ptr() const
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::pointer
+ associative_node_base<Derived,Key,Data,Selector>::get_parent_ptr()
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::insert(
+ typename traits::key_type const& key
+ , Derived const& child
+ )
+ {
+#if defined BOOST_MSVC
+ Derived twin(child);
+ iterator result(this->_add_child(key, twin));
+#else
+ iterator result(this->_add_child(key, Derived(child)));
+#endif
+ BOOST_ASSERT(
+ ::boost::tree_node::dereference_iterator(
+ result
+ )._parent == this->get_derived()
+ );
+ return result;
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename ...Args>
+ typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::emplace(
+ typename traits::key_type const& key
+ , Args&& ...args
+ )
+ {
+ iterator result(
+ this->_add_child(key, ::boost::forward<Args>(args)...)
+ );
+ BOOST_ASSERT(
+ ::boost::tree_node::dereference_iterator(
+ result
+ )._parent == this->get_derived()
+ );
+ return result;
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename Key \
+ , typename Data \
+ , typename Selector \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename associative_node_base<Derived,Key,Data,Selector>::iterator \
+ associative_node_base<Derived,Key,Data,Selector>::emplace( \
+ typename traits::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ iterator result = this->_add_child( \
+ key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ BOOST_ASSERT( \
+ ::boost::tree_node::dereference_iterator( \
+ result \
+ )._parent == this->get_derived() \
+ ); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_iterator
+ associative_node_base<Derived,Key,Data,Selector>::begin() const
+ {
+ return this->_children.begin();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::begin()
+ {
+ return this->_children.begin();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_iterator
+ associative_node_base<Derived,Key,Data,Selector>::end() const
+ {
+ return this->_children.end();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::end()
+ {
+ return this->_children.end();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::size_type
+ associative_node_base<Derived,Key,Data,Selector>::size() const
+ {
+ return this->_children.size();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline bool associative_node_base<Derived,Key,Data,Selector>::empty() const
+ {
+ return this->_children.empty();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline void associative_node_base<Derived,Key,Data,Selector>::clear()
+ {
+ this->_children.clear();
+ this->on_post_clear();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_iterator
+ associative_node_base<Derived,Key,Data,Selector>::find(
+ typename traits::key_type const& key
+ ) const
+ {
+ return this->_children.find(key);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::find(
+ typename traits::key_type const& key
+ )
+ {
+ return this->_children.find(key);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::const_iterator_range
+ associative_node_base<Derived,Key,Data,Selector>::equal_range(
+ typename traits::key_type const& key
+ ) const
+ {
+ return this->_children.equal_range(key);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::iterator_range
+ associative_node_base<Derived,Key,Data,Selector>::equal_range(
+ typename traits::key_type const& key
+ )
+ {
+ return this->_children.equal_range(key);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ typename associative_node_base<Derived,Key,Data,Selector>::size_type
+ associative_node_base<Derived,Key,Data,Selector>::erase(
+ typename traits::key_type const& key
+ )
+ {
+ size_type result = this->_children.erase(key);
+ this->on_post_erase();
+ return result;
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename ...Args>
+ typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::_add_child(
+ typename traits::key_type const& key
+ , Args&& ...args
+ )
+ {
+ typename ::boost::emplace_associative_function_gen<Selector>::type
+ emplacer;
+ ::std::pair<iterator,bool> p = emplacer(
+ this->_children
+ , key
+ , ::boost::forward<Args>(args)...
+ );
+
+ if (p.second)
+ {
+ this->_initialize(p.first);
+ }
+
+ return p.first;
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename Key \
+ , typename Data \
+ , typename Selector \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename associative_node_base<Derived,Key,Data,Selector>::iterator \
+ associative_node_base<Derived,Key,Data,Selector>::_add_child( \
+ typename traits::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename ::boost::emplace_associative_function_gen<Selector>::type \
+ emplacer; \
+ ::std::pair<iterator,bool> p = emplacer( \
+ this->_children \
+ , key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ if (p.second) \
+ { \
+ this->_initialize(p.first); \
+ } \
+ return p.first; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline void
+ associative_node_base<Derived,Key,Data,Selector>::_initialize(
+ iterator& itr
+ )
+ {
+ Derived& child = ::boost::tree_node::dereference_iterator(itr);
+
+ child._parent = this->get_derived();
+ child.on_post_inserted(
+ itr
+ , ::boost::has_stable_iterators_selector<Selector>()
+ );
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ void
+ associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::_link_children_to_parent()
+ {
+ iterator itr_end = this->end();
+
+ for (iterator itr = this->begin(); itr != itr_end; ++itr)
+ {
+ ::boost::tree_node::dereference_iterator(
+ itr
+ )._parent = this->get_derived();
+ }
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline void
+ associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::_on_post_modify_value(data_key const& key)
+ {
+ this->on_post_modify_value(key);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename FusionKey>
+ inline void
+ associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::_on_post_modify_value(FusionKey const& key)
+ {
+ this->on_post_modify_value(key);
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__associative_node_base__get__const
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type const&
+ get(
+ associative_node_base<Derived,Key,Data,Selector> const& node
+ , data_key const& key
+ );
+
+ //<-
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type const&
+ get(
+ associative_node_base<Derived,Key,Data,Selector> const& node
+ , data_key const& key
+ )
+ {
+ return node[key];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__associative_node_base__get
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type&
+ get(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , data_key const& key
+ );
+
+ //<-
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type&
+ get(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , data_key const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename V
+ >
+ inline void
+ put(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , data_key const& key
+ , V const& value
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#if !defined BOOST_NO_SFINAE
+//[reference__associative_node_base__get__key__const
+namespace boost { namespace tree_node {
+
+ template <
+ typename DataKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<DataKey,data_key>
+ , typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type const&
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector> const& node);
+
+ //<-
+ template <
+ typename DataKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<DataKey,data_key>
+ , typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type const&
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector> const& node)
+ {
+ return node[data_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__associative_node_base__get__key
+namespace boost { namespace tree_node {
+
+ template <
+ typename DataKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<DataKey,data_key>
+ , typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type&
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector>& node);
+
+ //<-
+ template <
+ typename DataKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<DataKey,data_key>
+ , typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type&
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector>& node)
+ {
+ return node[data_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_NO_SFINAE
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+//[reference__associative_node_base__get__fusion__const
+namespace boost { namespace tree_node {
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data const,FusionKey>
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector> const& node);
+
+ //<-
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data const,FusionKey>
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector> const& node)
+ {
+ return node[FusionKey()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__associative_node_base__get__fusion
+namespace boost { namespace tree_node {
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data,FusionKey>
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector>& node);
+
+ //<-
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data,FusionKey>
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector>& node)
+ {
+ return node[FusionKey()];
+ }
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename FusionKey
+ , typename V
+ >
+ inline void
+ put(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Key
+ , typename Data
+ , typename Selector = ::boost::ptr_mapS
+ >
+ struct associative_node
+ : public
+ //[reference__associative_node__bases
+ associative_node_base<
+ associative_node<Key,Data,Selector>
+ , Key
+ , Data
+ , Selector
+ >
+ //]
+ {
+ //[reference__associative_node__super_t
+ typedef associative_node_base<
+ associative_node
+ , Key
+ , Data
+ , Selector
+ >
+ super_t;
+ //]
+
+ //[reference__associative_node__traits
+ typedef typename super_t::traits
+ traits;
+ //]
+
+ //[reference__associative_node__pointer
+ typedef typename super_t::pointer
+ pointer;
+ //]
+
+ //[reference__associative_node__const_pointer
+ typedef typename super_t::const_pointer
+ const_pointer;
+ //]
+
+ //[reference__associative_node__iterator
+ typedef typename super_t::iterator
+ iterator;
+ //]
+
+ //[reference__associative_node__const_iterator
+ typedef typename super_t::const_iterator
+ const_iterator;
+ //]
+
+ //[reference__associative_node__size_type
+ typedef typename super_t::size_type
+ size_type;
+ //]
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(associative_node, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__associative_node__emplacement_ctor
+ template <typename ...Args>
+ explicit associative_node(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (associative_node, super_t)
+ )
+#endif
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Key, typename Data, typename Selector>
+ template <typename ...Args>
+ inline associative_node<Key,Data,Selector>::associative_node(
+ Args&& ...args
+ ) : super_t(::boost::forward<Args>(args)...)
+ {
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__associative_node_gen
+namespace boost { namespace tree_node {
+
+ template <typename Selector = ::boost::ptr_mapS>
+ struct associative_node_gen
+ {
+ template <typename Derived, typename Key, typename Data>
+ struct apply
+ {
+ typedef associative_node_base<Derived,Key,Data,Selector> type;
+ };
+ };
+
+ typedef associative_node_gen<> associative_node_default_gen;
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_ASSOCIATIVE_NODE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/base.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/base.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,279 @@
+// 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_TREE_NODE_BASE_HPP_INCLUDED
+#define BOOST_TREE_NODE_BASE_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/detail/base_pointee.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/data_key.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+//[reference__tree_node__has_key
+namespace boost { namespace tree_node {
+
+ template <typename Node, typename Key>
+ struct has_key_impl : has_key_impl<typename Node::super_t,Key>
+ {
+ };
+
+ template <typename Key>
+ struct has_key_impl<void,Key> : ::boost::mpl::false_
+ {
+ };
+
+ template <typename Node>
+ struct has_key_impl<Node,data_key> : ::boost::mpl::true_
+ {
+ };
+
+ template <typename Node, typename Key>
+ struct has_key : has_key_impl<Node,Key>::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2,has_key,(Node,Key))
+ };
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived>
+ struct tree_node_base
+ : public ::boost::detail::base_pointee<Derived>
+ {
+ typedef typename ::boost::detail::base_pointee<Derived>::pointer
+ pointer;
+ typedef typename ::boost::detail::base_pointee<Derived>::const_pointer
+ const_pointer;
+ typedef void
+ super_t;
+
+ protected:
+ ~tree_node_base();
+
+ //[reference__tree_node_base__on_post_emplacement_construct
+ void on_post_emplacement_construct();
+ //]
+
+ //[reference__tree_node_base__on_post_modify_value_impl
+ template <typename Key>
+ void on_post_modify_value_impl(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_modify_value
+ template <typename Key>
+ void on_post_modify_value(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_propagate_value_impl
+ template <typename Key>
+ void on_post_propagate_value_impl(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_propagate_value
+ template <typename Key>
+ void on_post_propagate_value(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_propagate_value_once_impl
+ template <typename Key>
+ void on_post_propagate_value_once_impl(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_propagate_value_once
+ template <typename Key>
+ void on_post_propagate_value_once(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_inserted_impl__true
+ template <typename Iterator>
+ void on_post_inserted_impl(Iterator position, ::boost::mpl::true_);
+ //]
+
+ //[reference__tree_node_base__on_post_inserted_impl__false
+ template <typename Iterator>
+ void on_post_inserted_impl(Iterator position, ::boost::mpl::false_);
+ //]
+
+ //[reference__tree_node_base__on_post_inserted
+ template <typename Iterator, typename BooleanIntegralConstant>
+ void
+ on_post_inserted(
+ Iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ );
+ //]
+
+ //[reference__tree_node_base__on_post_erase_impl
+ void on_post_erase_impl();
+ //]
+
+ //[reference__tree_node_base__on_post_erase
+ void on_post_erase();
+ //]
+
+ //[reference__tree_node_base__on_post_clear_impl
+ void on_post_clear_impl();
+ //]
+
+ //[reference__tree_node_base__on_post_clear
+ void on_post_clear();
+ //]
+
+ //[reference__tree_node_base__on_post_rotate_left_impl
+ void on_post_rotate_left_impl();
+ //]
+
+ //[reference__tree_node_base__on_post_rotate_left
+ void on_post_rotate_left();
+ //]
+
+ //[reference__tree_node_base__on_post_rotate_right_impl
+ void on_post_rotate_right_impl();
+ //]
+
+ //[reference__tree_node_base__on_post_rotate_right
+ void on_post_rotate_right();
+ //]
+ };
+
+ template <typename Derived>
+ tree_node_base<Derived>::~tree_node_base()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_emplacement_construct()
+ {
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void tree_node_base<Derived>::on_post_modify_value_impl(Key const&)
+ {
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void tree_node_base<Derived>::on_post_modify_value(Key const& key)
+ {
+ this->get_derived()->on_post_modify_value_impl(key);
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void
+ tree_node_base<Derived>::on_post_propagate_value_impl(Key const&)
+ {
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void
+ tree_node_base<Derived>::on_post_propagate_value(Key const& key)
+ {
+ this->get_derived()->on_post_propagate_value_impl(key);
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void
+ tree_node_base<Derived>::on_post_propagate_value_once_impl(Key const&)
+ {
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void
+ tree_node_base<Derived>::on_post_propagate_value_once(Key const& key)
+ {
+ this->get_derived()->on_post_propagate_value_once_impl(key);
+ }
+
+ template <typename Derived>
+ template <typename Iterator>
+ inline void
+ tree_node_base<Derived>::on_post_inserted_impl(
+ Iterator position
+ , ::boost::mpl::true_
+ )
+ {
+ }
+
+ template <typename Derived>
+ template <typename Iterator>
+ inline void
+ tree_node_base<Derived>::on_post_inserted_impl(
+ Iterator position
+ , ::boost::mpl::false_
+ )
+ {
+ }
+
+ template <typename Derived>
+ template <typename Iterator, typename BooleanIntegralConstant>
+ inline void
+ tree_node_base<Derived>::on_post_inserted(
+ Iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ )
+ {
+ this->get_derived()->on_post_inserted_impl(
+ position
+ , invalidates_sibling_positions
+ );
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_erase_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_erase()
+ {
+ this->get_derived()->on_post_erase_impl();
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_clear_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_clear()
+ {
+ this->get_derived()->on_post_clear_impl();
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_rotate_left_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_rotate_left()
+ {
+ this->get_derived()->on_post_rotate_left_impl();
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_rotate_right_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_rotate_right()
+ {
+ this->get_derived()->on_post_rotate_right_impl();
+ }
+}} // namespace boost::tree_node
+
+#endif // BOOST_TREE_NODE_BASE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/binary_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/binary_node.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,1452 @@
+// 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_TREE_NODE_BINARY_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_BINARY_NODE_HPP_INCLUDED
+
+#include <iterator>
+#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/depth_first_desc_iterator.hpp>
+#include <boost/tree_node/data_key.hpp>
+#include <boost/assert.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/tr1/type_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+//[reference__binary_node_base__put
+namespace boost { namespace tree_node {
+
+ //<-
+ template <typename Derived, typename T>
+ class binary_node_base;
+ //->
+
+ template <typename Derived, typename T, typename V>
+ void
+ put(
+ binary_node_base<Derived,T>& node
+ , data_key const& key
+ , V const& value
+ );
+}} // namespace boost::tree_node
+//]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename FusionKey>
+ struct has_key_impl<binary_node_base<Derived,T>,FusionKey>
+ : ::boost::fusion::result_of::has_key<T,FusionKey>
+ {
+ };
+}} // namespace boost::tree_node
+
+//[reference__binary_node_base__put__fusion
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename FusionKey, typename V>
+ void
+ put(
+ binary_node_base<Derived,T>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ binary_node_base<Derived,T>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type = ::boost::mpl::true_()
+ );
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+namespace boost { namespace tree_node { namespace _detail {
+
+ template <typename Node>
+ class binary_child_iterator
+ {
+#if !defined BOOST_NO_SFINAE
+ struct enabler
+ {
+ };
+#endif
+
+ public:
+ typedef ::std::bidirectional_iterator_tag iterator_category;
+ typedef Node value_type;
+ typedef ::std::ptrdiff_t difference_type;
+ typedef value_type* pointer;
+ typedef value_type& reference;
+
+// private:
+ pointer _current;
+
+ public:
+ binary_child_iterator();
+
+ binary_child_iterator(pointer const& p, bool p_is_child);
+
+ template <typename N>
+ binary_child_iterator(
+ binary_child_iterator<N> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ ::std::tr1::is_convertible<N,Node>
+ , enabler
+ >::type = enabler()
+#endif
+ );
+
+ reference operator*() const;
+
+ pointer operator->() const;
+
+ binary_child_iterator& operator++();
+
+ binary_child_iterator operator++(int);
+
+ binary_child_iterator& operator--();
+
+ binary_child_iterator operator--(int);
+
+ private:
+ void _iterate(pointer const& sibling);
+
+ template <typename N1, typename N2>
+ friend bool
+ operator==(
+ binary_child_iterator<N1> const& lhs
+ , binary_child_iterator<N2> const& rhs
+ );
+ };
+
+ template <typename Node>
+ binary_child_iterator<Node>::binary_child_iterator() : _current(0)
+ {
+ }
+
+ template <typename Node>
+ binary_child_iterator<Node>::binary_child_iterator(
+ pointer const& p
+ , bool p_is_child
+ ) : _current(
+ p_is_child
+ ? p
+ : p->get_left_child_ptr()
+ ? p->get_left_child_ptr()
+ : p->get_right_child_ptr()
+ )
+ {
+ }
+
+ template <typename Node>
+ template <typename N>
+ binary_child_iterator<Node>::binary_child_iterator(
+ binary_child_iterator<N> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ ::std::tr1::is_convertible<N,Node>
+ , enabler
+ >::type
+#endif
+ ) : _current(other._current)
+ {
+ }
+
+ template <typename Node>
+ inline typename binary_child_iterator<Node>::reference
+ binary_child_iterator<Node>::operator*() const
+ {
+ return *this->_current;
+ }
+
+ template <typename Node>
+ inline typename binary_child_iterator<Node>::pointer
+ binary_child_iterator<Node>::operator->() const
+ {
+ return this->_current;
+ }
+
+ template <typename Node>
+ inline binary_child_iterator<Node>&
+ binary_child_iterator<Node>::operator++()
+ {
+ this->_iterate(
+ this->_current->get_parent_ptr()->get_right_child_ptr()
+ );
+ return *this;
+ }
+
+ template <typename Node>
+ binary_child_iterator<Node> binary_child_iterator<Node>::operator++(int)
+ {
+ binary_child_iterator itr(*this);
+ ++(*this);
+ return itr;
+ }
+
+ template <typename Node>
+ inline binary_child_iterator<Node>&
+ binary_child_iterator<Node>::operator--()
+ {
+ this->_iterate(this->_current->get_parent_ptr()->get_left_child_ptr());
+ return *this;
+ }
+
+ template <typename Node>
+ binary_child_iterator<Node> binary_child_iterator<Node>::operator--(int)
+ {
+ binary_child_iterator itr(*this);
+ --(*this);
+ return itr;
+ }
+
+ template <typename Node>
+ inline void binary_child_iterator<Node>::_iterate(pointer const& sibling)
+ {
+ this->_current = (this->_current == sibling) ? 0 : sibling;
+ }
+
+ template <typename N1, typename N2>
+ inline bool
+ operator==(
+ binary_child_iterator<N1> const& lhs
+ , binary_child_iterator<N2> const& rhs
+ )
+ {
+ return lhs._current == rhs._current;
+ }
+
+ template <typename N1, typename N2>
+ inline bool
+ operator!=(
+ binary_child_iterator<N1> const& lhs
+ , binary_child_iterator<N2> const& rhs
+ )
+ {
+ return !(lhs == rhs);
+ }
+}}} // namespace boost::tree_node::_detail
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T>
+ class binary_node_base
+ : public
+ //[reference__binary_node_base__bases
+ tree_node_base<Derived>
+ //]
+ , private ::boost::noncopyable
+ {
+ public:
+ //[reference__binary_node_base__super_t
+ typedef tree_node_base<Derived>
+ super_t;
+ //]
+
+ //[reference__binary_node_base__traits
+ struct traits
+ {
+ typedef T data_type;
+ };
+ //]
+
+ //[reference__binary_node_base__pointer
+ typedef typename super_t::pointer
+ pointer;
+ //]
+
+ //[reference__binary_node_base__const_pointer
+ typedef typename super_t::const_pointer
+ const_pointer;
+ //]
+
+ //[reference__binary_node_base__iterator
+ typedef // implementation_defined
+ //<-
+ _detail::binary_child_iterator<Derived>
+ //->
+ iterator;
+ //]
+
+ //[reference__binary_node_base__const_iterator
+ typedef // implementation_defined
+ //<-
+ _detail::binary_child_iterator<Derived const>
+ //->
+ const_iterator;
+ //]
+
+ //[reference__binary_node_base__size_type
+ typedef ::boost::uint8_t
+ size_type;
+ //]
+
+ private:
+ typename traits::data_type _data;
+ pointer _left_child;
+ pointer _right_child;
+ pointer _parent;
+
+ protected:
+ //[reference__binary_node_base__derived_copy_ctor
+ binary_node_base(Derived const& copy);
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ binary_node_base(BOOST_RV_REF(Derived) source);
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binary_node_base__emplacement_ctor
+ template <typename ...Args>
+ explicit binary_node_base(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL
+ , binary_node_base
+ )
+#endif
+
+ ~binary_node_base();
+
+ //[reference__binary_node_base__on_post_copy_or_move
+ void on_post_copy_or_move();
+ //]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__binary_node_base__copy_assign
+ void copy_assign(Derived const& copy);
+ //]
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ public:
+ //[reference__binary_node_base__key_value_operator__const
+ typename traits::data_type const& operator[](data_key const&) const;
+ //]
+
+ //[reference__binary_node_base__key_value_operator
+ typename traits::data_type& operator[](data_key const&);
+ //]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ //[reference__binary_node_base__fusion_key_value_operator__const
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ binary_node_base<Derived,T>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ operator[](FusionKey const&) const;
+ //]
+
+ //[reference__binary_node_base__fusion_key_value_operator
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ binary_node_base<Derived,T>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ operator[](FusionKey const&);
+ //]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ //[reference__binary_node_base__get_parent_ptr__const
+ const_pointer get_parent_ptr() const;
+ //]
+
+ //[reference__binary_node_base__get_parent_ptr
+ pointer get_parent_ptr();
+ //]
+
+ //[reference__binary_node_base__insert_left
+ iterator insert_left(Derived const& child);
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binary_node_base__emplace_left
+ template <typename ...Args>
+ iterator emplace_left(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ emplace_left( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__binary_node_base__insert_right
+ iterator insert_right(Derived const& child);
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binary_node_base__emplace_right
+ template <typename ...Args>
+ iterator emplace_right(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ emplace_right( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__binary_node_base__get_left_child_ptr__const
+ const_pointer get_left_child_ptr() const;
+ //]
+
+ //[reference__binary_node_base__get_left_child_ptr
+ pointer get_left_child_ptr();
+ //]
+
+ //[reference__binary_node_base__get_right_child_ptr__const
+ const_pointer get_right_child_ptr() const;
+ //]
+
+ //[reference__binary_node_base__get_right_child_ptr
+ pointer get_right_child_ptr();
+ //]
+
+ //[reference__binary_node_base__begin__const
+ const_iterator begin() const;
+ //]
+
+ //[reference__binary_node_base__begin
+ iterator begin();
+ //]
+
+ //[reference__binary_node_base__end__const
+ const_iterator end() const;
+ //]
+
+ //[reference__binary_node_base__end
+ iterator end();
+ //]
+
+ //[reference__binary_node_base__size
+ size_type size() const;
+ //]
+
+ //[reference__binary_node_base__empty
+ bool empty() const;
+ //]
+
+ //[reference__binary_node_base__clear
+ void clear();
+ //]
+
+ //[reference__binary_node_base__rotate_left
+ pointer rotate_left();
+ //]
+
+ //[reference__binary_node_base__rotate_right
+ pointer rotate_right();
+ //]
+
+ //[reference__binary_node_base__erase_left
+ bool erase_left();
+ //]
+
+ //[reference__binary_node_base__erase_right
+ bool erase_right();
+ //]
+
+ private:
+ iterator _add_child(pointer const& child);
+
+ void _link_children_to_parent();
+
+ void _on_post_modify_value(data_key const& key);
+
+ template <typename D, typename T0, typename V>
+ friend void put(binary_node_base<D,T0>&, data_key const&, V const&);
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename FusionKey>
+ void _on_post_modify_value(FusionKey const& key);
+
+ template <typename D, typename T0, typename FusionKey, typename V>
+ friend void
+ put(
+ binary_node_base<D,T0>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T0>::type
+ , ::boost::fusion::traits::is_associative<T0>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<binary_node_base<D,T0>,FusionKey>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ };
+
+ template <typename Derived, typename T>
+ binary_node_base<Derived,T>::binary_node_base(Derived const& copy)
+ : _data(copy._data)
+ , _left_child(copy._left_child ? new Derived(*copy._left_child) : 0)
+ , _right_child(copy._right_child ? new Derived(*copy._right_child) : 0)
+ , _parent()
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T>
+ binary_node_base<Derived,T>::binary_node_base(BOOST_RV_REF(Derived) source)
+ : _data(::boost::move(source._data))
+ , _left_child(source._left_child)
+ , _right_child(source._right_child)
+ , _parent()
+ {
+ source._left_child = source._right_child = 0;
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T>
+ template <typename ...Args>
+ binary_node_base<Derived,T>::binary_node_base(Args&& ...args)
+ : _data(::boost::forward<Args>(args)...)
+ , _left_child()
+ , _right_child()
+ , _parent()
+ {
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ template <typename Derived, typename T> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ binary_node_base<Derived,T>::binary_node_base( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) : _data( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , _left_child() \
+ , _right_child() \
+ , _parent() \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T>
+ binary_node_base<Derived,T>::~binary_node_base()
+ {
+ delete this->_left_child;
+ delete this->_right_child;
+ }
+
+ template <typename Derived, typename T>
+ inline void binary_node_base<Derived,T>::on_post_copy_or_move()
+ {
+ this->_link_children_to_parent();
+ this->on_post_modify_value(data_key());
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T>
+ void binary_node_base<Derived,T>::copy_assign(Derived const& copy)
+ {
+ Derived twin(copy);
+
+ delete this->_left_child;
+ delete this->_right_child;
+
+ this->_data = twin._data;
+ this->_left_child = twin._left_child;
+ this->_right_child = twin._right_child;
+ twin._left_child = twin._right_child = 0;
+ }
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T>
+ void
+ binary_node_base<Derived,T>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+ {
+ Derived twin(static_cast<Derived const&>(copy));
+
+ delete this->_left_child;
+ delete this->_right_child;
+
+ this->_data = ::boost::move(twin._data);
+ this->_left_child = twin._left_child;
+ this->_right_child = twin._right_child;
+ twin._left_child = twin._right_child = 0;
+ }
+
+ template <typename Derived, typename T>
+ void binary_node_base<Derived,T>::move_assign(BOOST_RV_REF(Derived) source)
+ {
+ delete this->_left_child;
+ delete this->_right_child;
+
+ this->_data = ::boost::move(source._data);
+ this->_left_child = source._left_child;
+ this->_right_child = source._right_child;
+ source._left_child = source._right_child = 0;
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::traits::data_type const&
+ binary_node_base<Derived,T>::operator[](data_key const&) const
+ {
+ return this->_data;
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::traits::data_type&
+ binary_node_base<Derived,T>::operator[](data_key const&)
+ {
+ return this->_data;
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename T>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ binary_node_base<Derived,T>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ binary_node_base<Derived,T>::operator[](FusionKey const&) const
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+
+ template <typename Derived, typename T>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ binary_node_base<Derived,T>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ binary_node_base<Derived,T>::operator[](FusionKey const&)
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::const_pointer
+ binary_node_base<Derived,T>::get_parent_ptr() const
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::pointer
+ binary_node_base<Derived,T>::get_parent_ptr()
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename T>
+ typename binary_node_base<Derived,T>::iterator
+ binary_node_base<Derived,T>::insert_left(Derived const& child)
+ {
+ if (this->_left_child)
+ {
+ return iterator(this->_left_child, true);
+ }
+ else
+ {
+ return this->_add_child(this->_left_child = new Derived(child));
+ }
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T>
+ template <typename ...Args>
+ typename binary_node_base<Derived,T>::iterator
+ binary_node_base<Derived,T>::emplace_left(Args&& ...args)
+ {
+ if (this->_left_child)
+ {
+ return iterator(this->_left_child, true);
+ }
+ else
+ {
+ return this->_add_child(
+ this->_left_child = new Derived(
+ ::boost::forward<Args>(args)...
+ )
+ );
+ }
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ template <typename Derived, typename T> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binary_node_base<Derived,T>::iterator \
+ binary_node_base<Derived,T>::emplace_left( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (this->_left_child) \
+ { \
+ return iterator(this->_left_child, true); \
+ } \
+ else \
+ { \
+ return this->_add_child( \
+ this->_left_child = new Derived( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ); \
+ } \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T>
+ typename binary_node_base<Derived,T>::iterator
+ binary_node_base<Derived,T>::insert_right(Derived const& child)
+ {
+ if (this->_right_child)
+ {
+ return iterator(this->_right_child, true);
+ }
+ else
+ {
+ return this->_add_child(this->_right_child = new Derived(child));
+ }
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T>
+ template <typename ...Args>
+ typename binary_node_base<Derived,T>::iterator
+ binary_node_base<Derived,T>::emplace_right(Args&& ...args)
+ {
+ if (this->_right_child)
+ {
+ return iterator(this->_right_child, true);
+ }
+ else
+ {
+ return this->_add_child(
+ this->_right_child = new Derived(
+ ::boost::forward<Args>(args)...
+ )
+ );
+ }
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ template <typename Derived, typename T> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binary_node_base<Derived,T>::iterator \
+ binary_node_base<Derived,T>::emplace_right( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (this->_right_child) \
+ { \
+ return iterator(this->_right_child, true); \
+ } \
+ else \
+ { \
+ return this->_add_child( \
+ this->_right_child = new Derived( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ); \
+ } \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::const_pointer
+ binary_node_base<Derived,T>::get_left_child_ptr() const
+ {
+ return this->_left_child;
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::pointer
+ binary_node_base<Derived,T>::get_left_child_ptr()
+ {
+ return this->_left_child;
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::const_pointer
+ binary_node_base<Derived,T>::get_right_child_ptr() const
+ {
+ return this->_right_child;
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::pointer
+ binary_node_base<Derived,T>::get_right_child_ptr()
+ {
+ return this->_right_child;
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::const_iterator
+ binary_node_base<Derived,T>::begin() const
+ {
+ return const_iterator(this->get_derived(), false);
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::iterator
+ binary_node_base<Derived,T>::begin()
+ {
+ return iterator(this->get_derived(), false);
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::const_iterator
+ binary_node_base<Derived,T>::end() const
+ {
+ return const_iterator();
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::iterator
+ binary_node_base<Derived,T>::end()
+ {
+ return iterator();
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::size_type
+ binary_node_base<Derived,T>::size() const
+ {
+ return (
+ this->_left_child
+ ? (this->_right_child ? 2 : 1)
+ : (this->_right_child ? 1 : 0)
+ );
+ }
+
+ template <typename Derived, typename T>
+ inline bool binary_node_base<Derived,T>::empty() const
+ {
+ return !this->_left_child && !this->_right_child;
+ }
+
+ template <typename Derived, typename T>
+ void binary_node_base<Derived,T>::clear()
+ {
+ delete this->_left_child;
+ delete this->_right_child;
+ this->_left_child = this->_right_child = 0;
+ this->on_post_clear();
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::pointer
+ binary_node_base<Derived,T>::rotate_left()
+ {
+ pointer pivot = this->_right_child;
+
+ pivot->_parent = this->_parent;
+
+ if ((this->_right_child = pivot->_left_child))
+ {
+ this->_right_child->_parent = this->get_derived();
+ }
+
+ pivot->_left_child = this->get_derived();
+
+ if (this->_parent)
+ {
+ if (this->_parent->_left_child == this->get_derived())
+ {
+ this->_parent->_left_child = pivot;
+ }
+ else // if (this->_parent->_right_child == this->get_derived())
+ {
+ this->_parent->_right_child = pivot;
+ }
+ }
+
+ this->_parent = pivot;
+ this->on_post_rotate_left();
+ return pivot;
+ }
+
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::pointer
+ binary_node_base<Derived,T>::rotate_right()
+ {
+ pointer pivot = this->_left_child;
+
+ pivot->_parent = this->_parent;
+
+ if ((this->_left_child = pivot->_right_child))
+ {
+ this->_left_child->_parent = this->get_derived();
+ }
+
+ pivot->_right_child = this->get_derived();
+
+ if (this->_parent)
+ {
+ if (this->_parent->_right_child == this->get_derived())
+ {
+ this->_parent->_right_child = pivot;
+ }
+ else // if (this->_parent->_left_child == this->get_derived())
+ {
+ this->_parent->_left_child = pivot;
+ }
+ }
+
+ this->_parent = pivot;
+ this->on_post_rotate_right();
+ return pivot;
+ }
+
+ template <typename Derived, typename T>
+ bool binary_node_base<Derived,T>::erase_left()
+ {
+ if (this->_left_child)
+ {
+ delete this->_left_child;
+ this->_left_child = 0;
+ this->on_post_erase();
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Derived, typename T>
+ bool binary_node_base<Derived,T>::erase_right()
+ {
+ if (this->_right_child)
+ {
+ delete this->_right_child;
+ this->_right_child = 0;
+ this->on_post_erase();
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Derived, typename T>
+ typename binary_node_base<Derived,T>::iterator
+ binary_node_base<Derived,T>::_add_child(pointer const& child)
+ {
+ iterator result(child, true);
+
+ result->_parent = this->get_derived();
+ result->on_post_inserted(result, ::boost::mpl::true_());
+ return result;
+ }
+
+ template <typename Derived, typename T>
+ inline void binary_node_base<Derived,T>::_link_children_to_parent()
+ {
+ if (this->_left_child)
+ {
+ this->_left_child->_parent = this->get_derived();
+ }
+
+ if (this->_right_child)
+ {
+ this->_right_child->_parent = this->get_derived();
+ }
+ }
+
+ template <typename Derived, typename T>
+ inline void
+ binary_node_base<Derived,T>::_on_post_modify_value(
+ data_key const& key
+ )
+ {
+ this->on_post_modify_value(key);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename T>
+ template <typename FusionKey>
+ inline void
+ binary_node_base<Derived,T>::_on_post_modify_value(
+ FusionKey const& key
+ )
+ {
+ this->on_post_modify_value(key);
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__binary_node_base__get__const
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T>
+ typename binary_node_base<Derived,T>::traits::data_type const&
+ get(binary_node_base<Derived,T> const& node, data_key const& key);
+
+ //<-
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::traits::data_type const&
+ get(binary_node_base<Derived,T> const& node, data_key const& key)
+ {
+ return node[key];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__binary_node_base__get
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T>
+ typename binary_node_base<Derived,T>::traits::data_type&
+ get(binary_node_base<Derived,T>& node, data_key const& key);
+
+ //<-
+ template <typename Derived, typename T>
+ inline typename binary_node_base<Derived,T>::traits::data_type&
+ get(binary_node_base<Derived,T>& node, data_key const& key)
+ {
+ return node[key];
+ }
+
+ template <typename Derived, typename T, typename V>
+ inline void
+ put(
+ binary_node_base<Derived,T>& node
+ , data_key const& key
+ , V const& value
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#if !defined BOOST_NO_SFINAE
+//[reference__binary_node_base__get__key__const
+namespace boost { namespace tree_node {
+
+ template <typename Key, typename Derived, typename T>
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename binary_node_base<Derived,T>::traits::data_type const&
+ >::type
+ get(binary_node_base<Derived,T> const& node);
+
+ //<-
+ template <typename Key, typename Derived, typename T>
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename binary_node_base<Derived,T>::traits::data_type const&
+ >::type
+ get(binary_node_base<Derived,T> const& node)
+ {
+ return node[data_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__binary_node_base__get__key
+namespace boost { namespace tree_node {
+
+ template <typename Key, typename Derived, typename T>
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename binary_node_base<Derived,T>::traits::data_type&
+ >::type
+ get(binary_node_base<Derived,T>& node);
+
+ //<-
+ template <typename Key, typename Derived, typename T>
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename binary_node_base<Derived,T>::traits::data_type&
+ >::type
+ get(binary_node_base<Derived,T>& node)
+ {
+ return node[data_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_NO_SFINAE
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+//[reference__binary_node_base__get__fusion__const
+namespace boost { namespace tree_node {
+
+ template <typename FusionKey, typename Derived, typename T>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ binary_node_base<Derived,T>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(binary_node_base<Derived,T> const& node);
+
+ //<-
+ template <typename FusionKey, typename Derived, typename T>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ binary_node_base<Derived,T>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(binary_node_base<Derived,T> const& node)
+ {
+ return node[FusionKey()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__binary_node_base__get__fusion
+namespace boost { namespace tree_node {
+
+ template <typename FusionKey, typename Derived, typename T>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ binary_node_base<Derived,T>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(binary_node_base<Derived,T>& node);
+
+ //<-
+ template <typename FusionKey, typename Derived, typename T>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ binary_node_base<Derived,T>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(binary_node_base<Derived,T>& node)
+ {
+ return node[FusionKey()];
+ }
+
+ template <typename Derived, typename T, typename FusionKey, typename V>
+ inline void
+ put(
+ binary_node_base<Derived,T>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ binary_node_base<Derived,T>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+namespace boost { namespace tree_node {
+
+ template <typename T>
+ struct binary_node
+ : public
+ //[reference__binary_node__bases
+ binary_node_base<binary_node<T>,T>
+ //]
+ {
+ //[reference__binary_node__super_t
+ typedef binary_node_base<binary_node<T>,T> super_t;
+ //]
+
+ //[reference__binary_node__traits
+ typedef typename super_t::traits traits;
+ //]
+
+ //[reference__binary_node__pointer
+ typedef typename super_t::pointer pointer;
+ //]
+
+ //[reference__binary_node__const_pointer
+ typedef typename super_t::const_pointer const_pointer;
+ //]
+
+ //[reference__binary_node__iterator
+ typedef typename super_t::iterator iterator;
+ //]
+
+ //[reference__binary_node__const_iterator
+ typedef typename super_t::const_iterator const_iterator;
+ //]
+
+ //[reference__binary_node__size_type
+ typedef typename super_t::size_type size_type;
+ //]
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(binary_node, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binary_node__emplacement_ctor
+ template <typename ...Args>
+ explicit binary_node(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (binary_node, super_t)
+ )
+#endif
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename T>
+ template <typename ...Args>
+ inline binary_node<T>::binary_node(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__binary_node_gen
+namespace boost { namespace tree_node {
+
+ struct binary_node_gen
+ {
+ template <typename Derived, typename T>
+ struct apply
+ {
+ typedef binary_node_base<Derived,T> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_BINARY_NODE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/count_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/count_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_COUNT_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_COUNT_KEY_HPP_INCLUDED
+
+//[reference__count_key
+namespace boost { namespace tree_node {
+
+ struct count_key
+ {
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_COUNT_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/data_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/data_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_DATA_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_DATA_KEY_HPP_INCLUDED
+
+//[reference__data_key
+namespace boost { namespace tree_node {
+
+ struct data_key
+ {
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_DATA_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/height_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/height_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_HEIGHT_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_HEIGHT_KEY_HPP_INCLUDED
+
+//[reference__height_key
+namespace boost { namespace tree_node {
+
+ struct height_key
+ {
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_HEIGHT_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/nary_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/nary_node.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,1159 @@
+// 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_TREE_NODE_NARY_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_NARY_NODE_HPP_INCLUDED
+
+#include <utility>
+#include <boost/config.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/iterator/transform_iterator.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_recursive_selector.hpp>
+#include <boost/container_gen/has_stable_iters_selector.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/data_key.hpp>
+#include <boost/assert.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/tr1/type_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+//[reference__nary_node_base__put
+namespace boost { namespace tree_node {
+
+ //<-
+ template <typename Derived, typename T, typename Selector>
+ class nary_node_base;
+ //->
+
+ template <typename Derived, typename T, typename Selector, typename V>
+ void
+ put(
+ nary_node_base<Derived,T,Selector>& node
+ , data_key const& key
+ , V const& value
+ );
+}} // namespace boost::tree_node
+//]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Selector
+ , typename FusionKey
+ >
+ struct has_key_impl<nary_node_base<Derived,T,Selector>,FusionKey>
+ : ::boost::fusion::result_of::has_key<T,FusionKey>
+ {
+ };
+}} // namespace boost::tree_node
+
+//[reference__nary_node_base__put__fusion
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Selector
+ , typename FusionKey
+ , typename V
+ >
+ void
+ put(
+ nary_node_base<Derived,T,Selector>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type = ::boost::mpl::true_()
+ );
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector>
+ class nary_node_base
+ : public
+ //[reference__nary_node_base__bases
+ tree_node_base<Derived>
+ //]
+ , private ::boost::noncopyable
+ {
+ BOOST_MPL_ASSERT((::boost::is_recursive_selector<Selector>));
+
+ typedef typename ::boost::container_gen<Selector,Derived>::type
+ children;
+
+ public:
+ //[reference__nary_node_base__super_t
+ typedef tree_node_base<Derived>
+ super_t;
+ //]
+
+ //[reference__nary_node_base__traits
+ struct traits
+ {
+ typedef T data_type;
+ };
+ //]
+
+ //[reference__nary_node_base__pointer
+ typedef typename super_t::pointer
+ pointer;
+ //]
+
+ //[reference__nary_node_base__const_pointer
+ typedef typename super_t::const_pointer
+ const_pointer;
+ //]
+
+ //[reference__nary_node_base__iterator
+ typedef // implementation_defined
+ //<-
+ typename children::iterator
+ //->
+ iterator;
+ //]
+
+ //[reference__nary_node_base__const_iterator
+ typedef // implementation_defined
+ //<-
+ typename children::const_iterator
+ //->
+ const_iterator;
+ //]
+
+ //[reference__nary_node_base__size_type
+ typedef // implementation_defined
+ //<-
+ typename children::size_type
+ //->
+ size_type;
+ //]
+
+ private:
+ children _children;
+ typename traits::data_type _data;
+ pointer _parent;
+
+ protected:
+ //[reference__nary_node_base__derived_copy_ctor
+ nary_node_base(Derived const& copy);
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ nary_node_base(BOOST_RV_REF(Derived) source);
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__nary_node_base__emplacement_ctor
+ template <typename ...Args>
+ explicit nary_node_base(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL
+ , nary_node_base
+ )
+#endif
+
+ ~nary_node_base();
+
+ //[reference__nary_node_base__on_post_copy_or_move
+ void on_post_copy_or_move();
+ //]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__nary_node_base__copy_assign
+ void copy_assign(Derived const& copy);
+ //]
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ public:
+ //[reference__nary_node_base__key_value_operator__const
+ typename traits::data_type const& operator[](data_key const&) const;
+ //]
+
+ //[reference__nary_node_base__key_value_operator
+ typename traits::data_type& operator[](data_key const&);
+ //]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ //[reference__nary_node_base__fusion_key_value_operator__const
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ operator[](FusionKey const&) const;
+ //]
+
+ //[reference__nary_node_base__fusion_key_value_operator
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ operator[](FusionKey const&);
+ //]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ //[reference__nary_node_base__get_parent_ptr__const
+ const_pointer get_parent_ptr() const;
+ //]
+
+ //[reference__nary_node_base__get_parent_ptr
+ pointer get_parent_ptr();
+ //]
+
+ //[reference__nary_node_base__insert
+ iterator insert(Derived const& child);
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__nary_node_base__emplace
+ template <typename ...Args>
+ iterator emplace(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ emplace( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__nary_node_base__begin__const
+ const_iterator begin() const;
+ //]
+
+ //[reference__nary_node_base__begin
+ iterator begin();
+ //]
+
+ //[reference__nary_node_base__end__const
+ const_iterator end() const;
+ //]
+
+ //[reference__nary_node_base__end
+ iterator end();
+ //]
+
+ //[reference__nary_node_base__size
+ size_type size() const;
+ //]
+
+ //[reference__nary_node_base__empty
+ bool empty() const;
+ //]
+
+ //[reference__nary_node_base__clear
+ void clear();
+ //]
+
+ private:
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ iterator _add_child(Args&& ...args);
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ _add_child( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ void _initialize(iterator& to_child);
+
+ void _link_children_to_parent();
+
+ void _on_post_modify_value(data_key const& key);
+
+ template <typename D, typename T0, typename S, typename V>
+ friend void
+ put(
+ nary_node_base<D,T0,S>& node
+ , data_key const& key
+ , V const& value
+ );
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename FusionKey>
+ void _on_post_modify_value(FusionKey const& key);
+
+ template <
+ typename D
+ , typename T0
+ , typename S
+ , typename FusionKey
+ , typename V
+ >
+ friend void
+ put(
+ nary_node_base<D,T0,S>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T0>::type
+ , ::boost::fusion::traits::is_associative<T0>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<nary_node_base<D,T0,S>,FusionKey>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ };
+
+ template <typename Derived, typename T, typename Selector>
+ nary_node_base<Derived,T,Selector>::nary_node_base(Derived const& copy)
+ : _children(copy._children)
+ , _data(copy._data)
+ , _parent(copy._parent)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T, typename Selector>
+ nary_node_base<Derived,T,Selector>::nary_node_base(
+ BOOST_RV_REF(Derived) source
+ ) : _children(::boost::move(source._children))
+ , _data(::boost::move(source._data))
+ , _parent(source._parent)
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T, typename Selector>
+ template <typename ...Args>
+ nary_node_base<Derived,T,Selector>::nary_node_base(Args&& ...args)
+ : _children(), _data(::boost::forward<Args>(args)...), _parent()
+ {
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ template <typename Derived, typename T, typename Selector> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ nary_node_base<Derived,T,Selector>::nary_node_base( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) : _children() \
+ , _data( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , _parent() \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T, typename Selector>
+ nary_node_base<Derived,T,Selector>::~nary_node_base()
+ {
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void nary_node_base<Derived,T,Selector>::on_post_copy_or_move()
+ {
+ this->_link_children_to_parent();
+ this->on_post_propagate_value(data_key());
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T, typename Selector>
+ void nary_node_base<Derived,T,Selector>::copy_assign(Derived const& copy)
+ {
+ Derived twin(copy);
+
+ this->_children = twin._children;
+ this->_data = twin._data;
+ }
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T, typename Selector>
+ void
+ nary_node_base<Derived,T,Selector>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+ {
+ Derived twin(static_cast<Derived const&>(copy));
+
+ this->_children = ::boost::move(twin._children);
+ this->_data = ::boost::move(twin._data);
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void
+ nary_node_base<Derived,T,Selector>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+ this->_children = ::boost::move(source._children);
+ this->_data = ::boost::move(source._data);
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ nary_node_base<Derived,T,Selector>::operator[](data_key const&) const
+ {
+ return this->_data;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::traits::data_type&
+ nary_node_base<Derived,T,Selector>::operator[](data_key const&)
+ {
+ return this->_data;
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename T, typename Selector>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ nary_node_base<Derived,T,Selector>::operator[](FusionKey const&) const
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ nary_node_base<Derived,T,Selector>::operator[](FusionKey const&)
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_pointer
+ nary_node_base<Derived,T,Selector>::get_parent_ptr() const
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::pointer
+ nary_node_base<Derived,T,Selector>::get_parent_ptr()
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::iterator
+ nary_node_base<Derived,T,Selector>::insert(Derived const& child)
+ {
+#if defined BOOST_MSVC
+ Derived twin(child);
+ iterator result(this->_add_child(twin));
+#else
+ iterator result(this->_add_child(Derived(child)));
+#endif
+ BOOST_ASSERT((*result)._parent == this->get_derived());
+ return result;
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T, typename Selector>
+ template <typename ...Args>
+ inline typename nary_node_base<Derived,T,Selector>::iterator
+ nary_node_base<Derived,T,Selector>::emplace(Args&& ...args)
+ {
+ iterator result(this->_add_child(::boost::forward<Args>(args)...));
+ BOOST_ASSERT((*result)._parent == this->get_derived());
+ return result;
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ template <typename Derived, typename T, typename Selector> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ inline typename nary_node_base<Derived,T,Selector>::iterator \
+ nary_node_base<Derived,T,Selector>::emplace( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ iterator result = this->_add_child( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ BOOST_ASSERT((*result)._parent == this->get_derived()); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_iterator
+ nary_node_base<Derived,T,Selector>::begin() const
+ {
+ return this->_children.begin();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::iterator
+ nary_node_base<Derived,T,Selector>::begin()
+ {
+ return this->_children.begin();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_iterator
+ nary_node_base<Derived,T,Selector>::end() const
+ {
+ return this->_children.end();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::iterator
+ nary_node_base<Derived,T,Selector>::end()
+ {
+ return this->_children.end();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::size_type
+ nary_node_base<Derived,T,Selector>::size() const
+ {
+ return this->_children.size();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline bool nary_node_base<Derived,T,Selector>::empty() const
+ {
+ return this->_children.empty();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void nary_node_base<Derived,T,Selector>::clear()
+ {
+ this->_children.clear();
+ this->on_post_clear();
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T, typename Selector>
+ template <typename ...Args>
+ inline typename nary_node_base<Derived,T,Selector>::iterator
+ nary_node_base<Derived,T,Selector>::_add_child(Args&& ...args)
+ {
+ typename ::boost::emplace_function_gen<Selector>::type emplacer;
+ ::std::pair<iterator,bool> p = emplacer(
+ this->_children
+ , ::boost::forward<Args>(args)...
+ );
+
+ if (p.second)
+ {
+ this->_initialize(p.first);
+ }
+
+ return p.first;
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ template <typename Derived, typename T, typename Selector> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ inline typename nary_node_base<Derived,T,Selector>::iterator \
+ nary_node_base<Derived,T,Selector>::_add_child( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename ::boost::emplace_function_gen<Selector>::type emplacer; \
+ ::std::pair<iterator,bool> p = emplacer( \
+ this->_children \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ if (p.second) \
+ { \
+ this->_initialize(p.first); \
+ } \
+ return p.first; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T, typename Selector>
+ inline void
+ nary_node_base<Derived,T,Selector>::_initialize(iterator& to_child)
+ {
+ (*to_child)._parent = this->get_derived();
+ (*to_child).on_post_inserted(
+ to_child
+ , ::boost::has_stable_iterators_selector<Selector>()
+ );
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ void nary_node_base<Derived,T,Selector>::_link_children_to_parent()
+ {
+ iterator itr_end = this->end();
+
+ for (iterator itr = this->begin(); itr != itr_end; ++itr)
+ {
+ (*itr)._parent = this->get_derived();
+ }
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void
+ nary_node_base<Derived,T,Selector>::_on_post_modify_value(
+ data_key const& key
+ )
+ {
+ this->on_post_modify_value(key);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename T, typename Selector>
+ template <typename FusionKey>
+ inline void
+ nary_node_base<Derived,T,Selector>::_on_post_modify_value(
+ FusionKey const& key
+ )
+ {
+ this->on_post_modify_value(key);
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__nary_node_base__get__const
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector>
+ typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ get(
+ nary_node_base<Derived,T,Selector> const& node
+ , data_key const& key
+ );
+
+ //<-
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ get(
+ nary_node_base<Derived,T,Selector> const& node
+ , data_key const& key
+ )
+ {
+ return node[key];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__nary_node_base__get
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector>
+ typename nary_node_base<Derived,T,Selector>::traits::data_type&
+ get(nary_node_base<Derived,T,Selector>& node, data_key const& key);
+
+ //<-
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::traits::data_type&
+ get(nary_node_base<Derived,T,Selector>& node, data_key const& key)
+ {
+ return node[key];
+ }
+
+ template <typename Derived, typename T, typename Selector, typename V>
+ inline void
+ put(
+ nary_node_base<Derived,T,Selector>& node
+ , data_key const& key
+ , V const& value
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#if !defined BOOST_NO_SFINAE
+//[reference__nary_node_base__get__key__const
+namespace boost { namespace tree_node {
+
+ template <typename Key, typename Derived, typename T, typename Selector>
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ >::type
+ get(nary_node_base<Derived,T,Selector> const& node);
+
+ //<-
+ template <typename Key, typename Derived, typename T, typename Selector>
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ >::type
+ get(nary_node_base<Derived,T,Selector> const& node)
+ {
+ return node[data_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__nary_node_base__get__key
+namespace boost { namespace tree_node {
+
+ template <typename Key, typename Derived, typename T, typename Selector>
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type&
+ >::type
+ get(nary_node_base<Derived,T,Selector>& node);
+
+ //<-
+ template <typename Key, typename Derived, typename T, typename Selector>
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type&
+ >::type
+ get(nary_node_base<Derived,T,Selector>& node)
+ {
+ return node[data_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_NO_SFINAE
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+//[reference__nary_node_base__get__fusion__const
+namespace boost { namespace tree_node {
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Selector
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(nary_node_base<Derived,T,Selector> const& node);
+
+ //<-
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Selector
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(nary_node_base<Derived,T,Selector> const& node)
+ {
+ return node[FusionKey()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__nary_node_base__get__fusion
+namespace boost { namespace tree_node {
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Selector
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(nary_node_base<Derived,T,Selector>& node);
+
+ //<-
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Selector
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(nary_node_base<Derived,T,Selector>& node)
+ {
+ return node[FusionKey()];
+ }
+
+ template <
+ typename Derived
+ , typename T
+ , typename Selector
+ , typename FusionKey
+ , typename V
+ >
+ inline void
+ put(
+ nary_node_base<Derived,T,Selector>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::tree_node::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+namespace boost { namespace tree_node {
+
+ template <typename T, typename Selector = ::boost::ptr_dequeS>
+ struct nary_node
+ : public
+ //[reference__nary_node__bases
+ nary_node_base<nary_node<T,Selector>,T,Selector>
+ //]
+ {
+ //[reference__nary_node__super_t
+ typedef nary_node_base<nary_node,T,Selector> super_t;
+ //]
+
+ //[reference__nary_node__traits
+ typedef typename super_t::traits traits;
+ //]
+
+ //[reference__nary_node__pointer
+ typedef typename super_t::pointer pointer;
+ //]
+
+ //[reference__nary_node__const_pointer
+ typedef typename super_t::const_pointer const_pointer;
+ //]
+
+ //[reference__nary_node__iterator
+ typedef typename super_t::iterator iterator;
+ //]
+
+ //[reference__nary_node__const_iterator
+ typedef typename super_t::const_iterator const_iterator;
+ //]
+
+ //[reference__nary_node__size_type
+ typedef typename super_t::size_type size_type;
+ //]
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(nary_node, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__nary_node__emplacement_ctor
+ template <typename ...Args>
+ explicit nary_node(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (nary_node, super_t)
+ )
+#endif
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename T, typename Selector>
+ template <typename ...Args>
+ inline nary_node<T,Selector>::nary_node(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__nary_node_gen
+namespace boost { namespace tree_node {
+
+ template <typename Selector = ::boost::ptr_dequeS>
+ struct nary_node_gen
+ {
+ template <typename Derived, typename T>
+ struct apply
+ {
+ typedef nary_node_base<Derived,T,Selector> type;
+ };
+ };
+
+ typedef nary_node_gen<> nary_node_default_gen;
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_NARY_NODE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/position_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/position_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_POSITION_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_POSITION_KEY_HPP_INCLUDED
+
+//[reference__position_key
+namespace boost { namespace tree_node {
+
+ struct position_key
+ {
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_POSITION_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/preprocessor.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/preprocessor.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,196 @@
+// 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_TREE_NODE_PREPROCESSOR_HPP_INCLUDED
+#define BOOST_TREE_NODE_PREPROCESSOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_SFINAE \
+ && !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION \
+ && !defined BOOST_TREE_NODE_CAN_USE_FUSION
+#define BOOST_TREE_NODE_CAN_USE_FUSION
+#endif
+
+#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/control/expr_if.hpp>
+#include <boost/preprocessor/control/expr_iif.hpp>
+#include <boost/preprocessor/comparison/equal.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/container/detail/preprocessor.hpp>
+
+//[reference__macro__emplacement_ctor_header
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_HEADER(z, n, Type) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ BOOST_PP_EXPR_IIF(BOOST_PP_EQUAL(n, 1), explicit) \
+ Type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+//]
+
+//[reference__macro__emplacement_ctor_fwd_decl
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL(z, n, Type) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_HEADER(z, n, Type); \
+//]
+
+//[reference__macro__emplacement_ctor_base_fwd
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_BASE_FWD(z, n, Base) \
+ : Base( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+//]
+
+//[reference__macro__emplacement_ctor_inline_header
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_HEADER( \
+ z \
+ , n \
+ , BOOST_PP_TUPLE_ELEM(2, 0, Tuple) \
+ ) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_BASE_FWD( \
+ z \
+ , n \
+ , BOOST_PP_TUPLE_ELEM(2, 1, Tuple) \
+ ) \
+//]
+
+//[reference__macro__emplacement_ctor_inline_def
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ { \
+ Base::on_post_emplacement_construct(); \
+ } \
+//]
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+//[reference__macro__copy_constructible
+#define BOOST_TREE_NODE_COPY_CONSTRUCTIBLE(Derived, Base) \
+ inline Derived(Derived const& copy) : Base(copy) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+ inline Derived(Derived& copy) \
+ : Base(const_cast<Derived const&>(copy)) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+//]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(Derived, Base) \
+ BOOST_TREE_NODE_COPY_CONSTRUCTIBLE(Derived, Base) \
+ inline Derived& operator=(Derived const& copy) \
+ { \
+ if (this != &copy) \
+ { \
+ Base::copy_assign(copy); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(Derived& copy) \
+ { \
+ if (this != &copy) \
+ { \
+ Base::copy_assign(const_cast<Derived const&>(copy)); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+//!
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#if defined BOOST_NO_RVALUE_REFERENCES
+#include <boost/move/move.hpp>
+#define BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(Derived, Base) \
+ BOOST_TREE_NODE_COPY_CONSTRUCTIBLE(Derived, Base) \
+ inline Derived(::boost::rv<Derived>& source) : Base(source) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+ inline operator ::boost::rv<Derived> const&() const \
+ { \
+ return *static_cast< ::boost::rv<Derived> const*>(this); \
+ } \
+ inline operator ::boost::rv<Derived>&() \
+ { \
+ return *static_cast< ::boost::rv<Derived>*>(this); \
+ } \
+ inline Derived& operator=(::boost::rv<Derived> const& ca_ref) \
+ { \
+ Derived const& copy = static_cast<Derived const&>(ca_ref); \
+ if (this != &copy) \
+ { \
+ Base::copy_assign(copy); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(::boost::rv<Derived>& rv_ref) \
+ { \
+ if (this != &static_cast<Derived&>(rv_ref)) \
+ { \
+ Base::move_assign(rv_ref); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(Derived& copy) \
+ { \
+ if (this != &copy) \
+ { \
+ Base::copy_assign(const_cast<Derived const&>(copy)); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+//!
+#else // !defined BOOST_NO_RVALUE_REFERENCES
+//[reference__macro__copyable_and_movable
+#define BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(Derived, Base) \
+ BOOST_TREE_NODE_COPY_CONSTRUCTIBLE(Derived, Base) \
+ inline Derived(Derived&& source) \
+ : Base(static_cast<Derived&&>(source)) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+ inline Derived& operator=(Derived const& copy) \
+ { \
+ if (this != &copy) \
+ { \
+ Base::copy_assign(copy); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(Derived&& source) \
+ { \
+ if (this != &static_cast<Derived&>(source)) \
+ { \
+ Base::move_assign(static_cast<Derived&&>(source)); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+//]
+#endif // BOOST_NO_RVALUE_REFERENCES
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_TREE_NODE_PREPROCESSOR_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/red_black_flag_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/red_black_flag_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_RED_BLACK_FLAG_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_RED_BLACK_FLAG_KEY_HPP_INCLUDED
+
+//[reference__red_black_flag_key
+namespace boost { namespace tree_node {
+
+ struct red_flag_key
+ {
+ };
+
+ struct black_flag_key
+ {
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_RED_BLACK_FLAG_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/accumulation_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/accumulation_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_TYPEOF_ACCUMULATION_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_ACCUMULATION_KEY_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/tree_node/typeof/data_key.hpp>
+#include <boost/tree_node/accumulation_key.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 0)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 5)
+
+#endif // BOOST_TREE_NODE_TYPEOF_ACCUMULATION_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/count_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/count_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_TYPEOF_COUNT_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_COUNT_KEY_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/count_key.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::count_key)
+
+#endif // BOOST_TREE_NODE_TYPEOF_COUNT_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/data_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/data_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_DATA_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_DATA_KEY_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/data_key.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::data_key)
+
+#endif // BOOST_TREE_NODE_DATA_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/height_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/height_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_TYPEOF_HEIGHT_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_HEIGHT_KEY_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/height_key.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::height_key)
+
+#endif // BOOST_TREE_NODE_TYPEOF_HEIGHT_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/position_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/position_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_TYPEOF_POSITION_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_POSITION_KEY_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/position_key.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::position_key)
+
+#endif // BOOST_TREE_NODE_TYPEOF_POSITION_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/red_black_flag_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/red_black_flag_key.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_TYPEOF_RED_BLACK_FLAG_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_RED_BLACK_FLAG_KEY_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/red_black_flag_key.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::red_flag_key)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::black_flag_key)
+
+#endif // BOOST_TREE_NODE_TYPEOF_RED_BLACK_FLAG_KEY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/with_accumulation.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/with_accumulation.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_TYPEOF_WITH_ACCUMULATION_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_WITH_ACCUMULATION_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/typeof/accumulation_key.hpp>
+#include <boost/tree_node/with_accumulation.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation_base, 9)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation_gen, 2)
+
+#endif // BOOST_TREE_NODE_TYPEOF_WITH_ACCUMULATION_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/with_count.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/with_count.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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_TREE_NODE_TYPEOF_WITH_COUNT_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_WITH_COUNT_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/typeof/count_key.hpp>
+#include <boost/tree_node/with_count.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count_base, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count_gen, 2)
+
+#endif // BOOST_TREE_NODE_TYPEOF_WITH_COUNT_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/with_height.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/with_height.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,22 @@
+// 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_TREE_NODE_TYPEOF_WITH_HEIGHT_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_WITH_HEIGHT_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/typeof/height_key.hpp>
+#include <boost/tree_node/with_height.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height_base, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height_gen, 2)
+
+#endif // BOOST_TREE_NODE_TYPEOF_WITH_HEIGHT_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/with_position.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/with_position.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,20 @@
+// 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_TREE_NODE_TYPEOF_WITH_POSITION_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_WITH_POSITION_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/typeof/position_key.hpp>
+#include <boost/tree_node/with_position.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_position_base, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_position, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_position, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_position_gen, 1)
+
+#endif // BOOST_TREE_NODE_TYPEOF_WITH_POSITION_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof/with_red_black_flag.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof/with_red_black_flag.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,20 @@
+// 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_TREE_NODE_TYPEOF_WITH_RED_BLACK_FLAG_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_WITH_RED_BLACK_FLAG_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/typeof/red_black_flag_key.hpp>
+#include <boost/tree_node/with_red_black_flag.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_red_black_flag_base, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_red_black_flag, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_red_black_flag, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_red_black_flag_gen, 1)
+
+#endif // BOOST_TREE_NODE_TYPEOF_WITH_RED_BLACK_FLAG_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/with_accumulation.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_accumulation.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,1492 @@
+// 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_TREE_NODE_WITH_ACCUMULATION_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_ACCUMULATION_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#if defined BOOST_NO_SFINAE
+#error boost::tree_node::with_accumulation requires working boost::enable_if.
+#endif
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tr1/functional.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/accumulators/framework/accumulator_set.hpp>
+#include <boost/accumulators/framework/extractor.hpp>
+#include <boost/accumulators/framework/features.hpp>
+#include <boost/utility/value_init.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/utility/get_reference.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/accumulation_key.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/breadth_first_desc_iterator.hpp>
+#include <boost/tree_node/algorithm/dereference_iterator.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+#include <boost/assert.hpp>
+
+namespace boost { namespace tree_node { namespace _detail {
+
+ template <typename Value>
+ struct choose_accumulation_value
+ {
+ template <typename Node, typename Key>
+ struct apply
+ {
+ typedef Value type;
+ };
+ };
+
+ template <>
+ struct choose_accumulation_value<void>
+ {
+ template <typename Node, typename Key>
+ struct apply
+ {
+ typedef BOOST_TYPEOF_TPL(
+ get<Key>(::boost::get_reference<Node const>())
+ )
+ type;
+ };
+ };
+}}} // namespace boost::tree_node::_detail
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ class with_accumulation_base
+ : public
+ //[reference__with_accumulation_base__bases
+ ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ //]
+ {
+ friend struct tree_node_base<Derived>;
+
+ typedef with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ self;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ private:
+ typedef typename ::boost::mpl::apply_wrap2<
+ _detail::choose_accumulation_value<
+ Value
+ >
+ , super_t
+ , Key
+ >::type
+ //->
+ AccumulationValue;
+
+ AccumulationValue _accumulation;
+
+ protected:
+ //[reference__with_accumulation_base__derived_copy_ctor
+ with_accumulation_base(Derived const& copy);
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_accumulation_base(BOOST_RV_REF(Derived) source);
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_accumulation_base__emplacement_ctor
+ template <typename ...Args>
+ explicit with_accumulation_base(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_WITH_ACCUMULATION_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , _accumulation( \
+ ::boost::accumulators::extractor<Tag>()( \
+ ::boost::accumulators::accumulator_set< \
+ AccumulationValue \
+ , ::boost::accumulators::features<Tag> \
+ >() \
+ ) \
+ ) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_ACCUMULATION_MACRO
+ , (with_accumulation_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_ACCUMULATION_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~with_accumulation_base();
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ void copy_assign(Derived const& copy);
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ void on_post_emplacement_construct();
+
+ void on_post_copy_or_move();
+
+ template <typename K>
+ void on_post_modify_value_impl(K const& key);
+
+ void on_post_modify_value_impl(Key const& key);
+
+ template <typename K>
+ void on_post_propagate_value_impl(K const& key);
+
+ void on_post_propagate_value_impl(Key const& key);
+
+ template <typename K>
+ void on_post_propagate_value_once_impl(K const& key);
+
+ void on_post_propagate_value_once_impl(Key const& key);
+
+ template <typename BooleanIntegralConstant>
+ void
+ on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ );
+
+ void on_post_erase_impl();
+
+ void on_post_clear_impl();
+
+ void on_post_rotate_left_impl();
+
+ void on_post_rotate_right_impl();
+
+ public:
+ //[reference__with_accumulation_base__key_value_operator
+ //<-
+#if 0
+ //->
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Value>
+ , BOOST_TYPEOF_TPL(get<Key>(static_cast<super_t const&>(*this)))
+ , Value
+ >::type const&
+ //<-
+#endif
+ AccumulationValue const&
+ //->
+ operator[](
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const&
+ )
+ const;
+ //]
+
+ private:
+ void
+ _set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const&
+ );
+
+ void _update();
+
+ static void
+ _update(
+ pointer p
+ , accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const&
+ );
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::with_accumulation_base(Derived const& copy)
+ : super_t(copy)
+ , _accumulation(
+ static_cast<self const&>(copy)[
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ ]
+ )
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::with_accumulation_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ ) : super_t(source)
+#else
+ Derived&& source
+ ) : super_t(static_cast<Derived&&>(source))
+#endif
+ , _accumulation(
+ static_cast<self&&>(source)[
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ ]
+ )
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename ...Args>
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::with_accumulation_base(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ , _accumulation(
+ ::boost::accumulators::extractor<Tag>()(
+ ::boost::accumulators::accumulator_set<
+ AccumulationValue
+ , ::boost::accumulators::features<Tag>
+ >()
+ )
+ )
+ {
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::~with_accumulation_base()
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesRoot
+ , Value
+ >::copy_assign(Derived const& copy)
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::move_assign(BOOST_RV_REF(Derived) source)
+ {
+#if defined BOOST_NO_RVALUE_REFERENCES
+ super_t::move_assign(source);
+#else
+ super_t::move_assign(static_cast<Derived&&>(source));
+#endif
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy)
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ {
+ super_t::copy_assign(copy);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_emplacement_construct()
+ {
+ super_t::on_post_emplacement_construct();
+
+ if (IncludesRoot::value)
+ {
+ self::_accumulation = get<Key>(*this->get_derived());
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_copy_or_move()
+ {
+ super_t::on_post_copy_or_move();
+ this->_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename K>
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_modify_value_impl(K const& key)
+ {
+ super_t::on_post_modify_value_impl(key);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_modify_value_impl(Key const& key)
+ {
+ super_t::on_post_modify_value_impl(key);
+
+ if (IncludesRoot::value)
+ {
+ this->_update();
+ }
+ else if (pointer p = this->get_parent_ptr())
+ {
+ static_cast<self*>(p)->_update();
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename K>
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_propagate_value_impl(K const& key)
+ {
+ super_t::on_post_propagate_value_impl(key);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_propagate_value_impl(Key const& key)
+ {
+ super_t::on_post_propagate_value_impl(key);
+
+ if (IncludesRoot::value)
+ {
+ this->_update();
+ }
+ else if (pointer p = this->get_parent_ptr())
+ {
+ static_cast<self*>(p)->_update();
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename K>
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_propagate_value_once_impl(K const& key)
+ {
+ super_t::on_post_propagate_value_once_impl(key);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_propagate_value_once_impl(Key const& key)
+ {
+ super_t::on_post_propagate_value_once_impl(key);
+
+ if (IncludesRoot::value)
+ {
+ this->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ }
+
+ self* p = this->get_parent_ptr();
+
+ BOOST_ASSERT_MSG(
+ p
+ , "Do not call on_post_propagate_value_once() on root."
+ );
+ p->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+
+ if ((p = p->get_parent_ptr()))
+ {
+ p->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename BooleanIntegralConstant>
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ )
+ {
+ super_t::on_post_inserted_impl(
+ position
+ , invalidates_sibling_positions
+ );
+ static_cast<self*>(this->get_parent_ptr())->_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_erase_impl()
+ {
+ super_t::on_post_erase_impl();
+ this->_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_clear_impl()
+ {
+ super_t::on_post_clear_impl();
+ this->_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_rotate_left_impl()
+ {
+ super_t::on_post_rotate_left_impl();
+ this->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ static_cast<self*>(this->get_parent_ptr())->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ this->on_post_propagate_value_once(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_rotate_right_impl()
+ {
+ super_t::on_post_rotate_right_impl();
+ this->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ static_cast<self*>(this->get_parent_ptr())->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ this->on_post_propagate_value_once(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::AccumulationValue const&
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::operator[](
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const&
+ ) const
+ {
+ return self::_accumulation;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const&
+ )
+ {
+ ::boost::accumulators::accumulator_set<
+ AccumulationValue
+ , ::boost::accumulators::features<Tag>
+ > acc;
+
+ if (IncludesRoot::value)
+ {
+ acc(get<Key>(*this->get_derived()));
+ }
+
+ if (IncludesAllDescendants::value)
+ {
+ for (
+ ::boost::tree_node::breadth_first_descendant_iterator<
+ Derived const
+ > c_itr(*this->get_derived());
+ c_itr;
+ ++c_itr
+ )
+ {
+ acc(get<Key>(::boost::tree_node::dereference_iterator(c_itr)));
+ }
+ }
+ else
+ {
+ const_iterator c_end = this->end();
+
+ for (const_iterator c_itr = this->begin(); c_itr != c_end; ++c_itr)
+ {
+ acc(get<Key>(::boost::tree_node::dereference_iterator(c_itr)));
+ }
+ }
+
+ self::_accumulation = ::boost::accumulators::extractor<
+ Tag
+ >()(acc);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::_update()
+ {
+ self::_update(
+ this->get_derived()
+ , accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ this->on_post_propagate_value(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::_update(
+ pointer p
+ , accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& key
+ )
+ {
+ do
+ {
+ static_cast<self*>(p)->_set_accumulation(key);
+ }
+ while ((p = p->get_parent_ptr()));
+ }
+}} // namespace boost::tree_node
+
+#if 0
+//[reference__with_accumulation_base__get
+namespace boost { namespace tree_node {
+
+ template <
+ typename AccumulationKey
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Value>
+ , BOOST_TYPEOF_TPL(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t const&
+ >(node)
+ )
+ , Value
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ );
+}} // namespace boost::tree_node
+//]
+#endif
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename AccumulationKey
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline typename ::boost::lazy_enable_if<
+ ::std::tr1::is_same<
+ accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ , AccumulationKey
+ >
+ , ::boost::mpl::apply_wrap2<
+ _detail::choose_accumulation_value<Value>
+ , typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t
+ , Key
+ >
+ >::type const&
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ )
+ {
+ return node[AccumulationKey()];
+ }
+
+ template <
+ typename AccumulationKey
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline typename ::boost::lazy_disable_if<
+ ::std::tr1::is_same<
+ accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ , AccumulationKey
+ >
+ , ::boost::mpl::apply_wrap2<
+ _detail::choose_accumulation_value<Value>
+ , typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t
+ , Key
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ )
+ {
+ return get<AccumulationKey>(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t const&
+ >(node)
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ struct has_key_impl<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2 = void
+ , typename AccumulationKey = accumulation_key<>
+ >
+ struct with_accumulation
+ : public
+ //[reference__with_accumulation__bases
+ with_accumulation_base<
+ with_accumulation<
+ BaseGenerator
+ , T1
+ , T2
+ , AccumulationKey
+ >
+ , BaseGenerator
+ , T1
+ , T2
+ , typename AccumulationKey::key
+ , typename AccumulationKey::tag
+ , typename AccumulationKey::includes_all_descendants
+ , typename AccumulationKey::includes_root
+ , typename AccumulationKey::value
+ >
+ //]
+ {
+ typedef with_accumulation_base<
+ with_accumulation
+ , BaseGenerator
+ , T1
+ , T2
+ , typename AccumulationKey::key
+ , typename AccumulationKey::tag
+ , typename AccumulationKey::includes_all_descendants
+ , typename AccumulationKey::includes_root
+ , typename AccumulationKey::value
+ >
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(with_accumulation, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_accumulation__emplacement_ctor
+ template <typename ...Args>
+ explicit with_accumulation(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (with_accumulation, super_t)
+ )
+#endif
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename AccumulationKey
+ >
+ template <typename ...Args>
+ inline with_accumulation<
+ BaseGenerator
+ , T1
+ , T2
+ , AccumulationKey
+ >::with_accumulation(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ super_t::on_post_emplacement_construct();
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__with_accumulation_gen
+namespace boost { namespace tree_node {
+
+ template <
+ typename BaseGenerator
+ , typename AccumulationKey = accumulation_key<>
+ >
+ struct with_accumulation_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , typename AccumulationKey::key
+ , typename AccumulationKey::tag
+ , typename AccumulationKey::includes_all_descendants
+ , typename AccumulationKey::includes_root
+ , typename AccumulationKey::value
+ >
+ type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_WITH_ACCUMULATION_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/with_count.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_count.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,715 @@
+// 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_TREE_NODE_WITH_COUNT_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_COUNT_HPP_INCLUDED
+
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/utility/value_init.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/algorithm/dereference_iterator.hpp>
+#include <boost/tree_node/count_key.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ class with_count_base
+ : public
+ //[reference__with_count_base__bases
+ ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ //]
+ {
+ friend struct tree_node_base<Derived>;
+
+ typedef with_count_base<Derived,BaseGenerator,T1,T2,Count>
+ self;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ private:
+ Count _count;
+
+ protected:
+ //[reference__with_count_base__derived_copy_ctor
+ with_count_base(Derived const& copy);
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_count_base(BOOST_RV_REF(Derived) source);
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_count_base__emplacement_ctor
+ template <typename ...Args>
+ explicit with_count_base(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_WITH_COUNT_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , _count(::boost::initialized_value) \
+ { \
+ ++this->_count; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_COUNT_MACRO
+ , (with_count_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_COUNT_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~with_count_base();
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ void copy_assign(Derived const& copy);
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ void on_post_copy_or_move();
+
+ template <typename BooleanIntegralConstant>
+ void
+ on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ );
+
+ void on_post_erase_impl();
+
+ void on_post_clear_impl();
+
+ void on_post_rotate_left_impl();
+
+ void on_post_rotate_right_impl();
+
+ public:
+ //[reference__with_count_base__key_value_operator
+ Count const& operator[](count_key const&) const;
+ //]
+
+ private:
+ void _shallow_update();
+
+ static Count _get_count(const_iterator c_itr, const_iterator c_end);
+
+ static void _update_less_count(pointer p, Count const& difference);
+
+ static void _update_greater_count(pointer p, Count const& difference);
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::with_count_base(
+ Derived const& copy
+ ) : super_t(copy), _count(copy._count)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::with_count_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ ) : super_t(source)
+#else
+ Derived&& source
+ ) : super_t(static_cast<Derived&&>(source))
+#endif
+ , _count(source._count)
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ template <typename ...Args>
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::with_count_base(
+ Args&& ...args
+ ) : super_t(::boost::forward<Args>(args)...)
+ , _count(::boost::initialized_value)
+ {
+ ++this->_count;
+ }
+#endif
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::~with_count_base()
+ {
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::copy_assign(
+ Derived const& copy
+ )
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+#if defined BOOST_NO_RVALUE_REFERENCES
+ super_t::move_assign(source);
+#else
+ super_t::move_assign(static_cast<Derived&&>(source));
+#endif
+// this->_count = source._count;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ {
+ super_t::copy_assign(copy);
+// this->_count = copy._count;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_copy_or_move()
+ {
+ super_t::on_post_copy_or_move();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ template <typename BooleanIntegralConstant>
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ )
+ {
+ super_t::on_post_inserted_impl(
+ position
+ , invalidates_sibling_positions
+ );
+ self::_update_greater_count(this->get_derived(), this->_count);
+ this->on_post_propagate_value(count_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_erase_impl()
+ {
+ super_t::on_post_erase_impl();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_clear_impl()
+ {
+ super_t::on_post_clear_impl();
+ self::_update_less_count(this->get_derived(), --this->_count);
+ ++(this->_count = ::boost::initialized_value);
+ this->on_post_propagate_value(count_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_rotate_left_impl()
+ {
+ super_t::on_post_rotate_left_impl();
+
+ pointer p = this->get_parent_ptr();
+
+ if (p->get_right_child_ptr())
+ {
+ this->_count -= p->get_right_child_ptr()->_count;
+ }
+
+ if (this->get_left_child_ptr())
+ {
+ p->_count += this->get_left_child_ptr()->_count;
+ }
+
+ --this->_count;
+ ++p->_count;
+ this->on_post_propagate_value_once(count_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_rotate_right_impl()
+ {
+ super_t::on_post_rotate_right_impl();
+
+ pointer p = this->get_parent_ptr();
+
+ if (pointer l = p->get_left_child_ptr())
+ {
+ this->_count -= p->get_left_child_ptr()->_count;
+ }
+
+ if (this->get_right_child_ptr())
+ {
+ p->_count += this->get_right_child_ptr()->_count;
+ }
+
+ --this->_count;
+ ++p->_count;
+ this->on_post_propagate_value_once(count_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline Count const&
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::operator[](
+ count_key const&
+ ) const
+ {
+ return this->_count;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ void with_count_base<Derived,BaseGenerator,T1,T2,Count>::_shallow_update()
+ {
+ Count new_count = self::_get_count(this->begin(), this->end());
+
+ if (++new_count < this->_count)
+ {
+ self::_update_less_count(
+ this->get_derived()
+ , this->_count - new_count
+ );
+ this->_count = new_count;
+ this->on_post_propagate_value(count_key());
+ }
+ else if (this->_count < new_count)
+ {
+ self::_update_greater_count(
+ this->get_derived()
+ , new_count - this->_count
+ );
+ this->_count = new_count;
+ this->on_post_propagate_value(count_key());
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ Count
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::_get_count(const_iterator c_itr, const_iterator c_end)
+ {
+ Count result = ::boost::initialized_value;
+
+ while (c_itr != c_end)
+ {
+ result += ::boost::tree_node::dereference_iterator(
+ c_itr
+ )._count;
+ ++c_itr;
+ }
+
+ return result;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::_update_less_count(pointer p, Count const& difference)
+ {
+ while ((p = p->get_parent_ptr()))
+ {
+ p->_count -= difference;
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::_update_greater_count(pointer p, Count const& difference)
+ {
+ while ((p = p->get_parent_ptr()))
+ {
+ p->_count += difference;
+ }
+ }
+}} // namespace boost::tree_node
+
+//[reference__with_count_base__get
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ Count const&
+ get(
+ with_count_base<Derived,BaseGenerator,T1,T2,Count> const& node
+ , count_key const& key
+ );
+
+ //<-
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline Count const&
+ get(
+ with_count_base<Derived,BaseGenerator,T1,T2,Count> const& node
+ , count_key const& key
+ )
+ {
+ return node[key];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#if !defined BOOST_NO_SFINAE
+//[reference__with_count_base__get__key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,count_key>
+ , Count const&
+ >::type
+ get(with_count_base<Derived,BaseGenerator,T1,T2,Count> const& node);
+
+ //<-
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,count_key>
+ , Count const&
+ >::type
+ get(with_count_base<Derived,BaseGenerator,T1,T2,Count> const& node)
+ {
+ return node[count_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_NO_SFINAE
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ struct has_key_impl<
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>
+ , count_key
+ > : ::boost::mpl::true_
+ {
+ };
+}} // namespace boost::tree_node
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2 = void
+ , typename Count = ::std::size_t
+ >
+ struct with_count
+ : public
+ //[reference__with_count__bases
+ with_count_base<
+ with_count<BaseGenerator,T1,T2,Count>
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >
+ //]
+ {
+ typedef with_count_base<with_count,BaseGenerator,T1,T2,Count> super_t;
+ typedef typename super_t::traits traits;
+ typedef typename super_t::pointer pointer;
+ typedef typename super_t::const_pointer const_pointer;
+ typedef typename super_t::iterator iterator;
+ typedef typename super_t::const_iterator const_iterator;
+ typedef typename super_t::size_type size_type;
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(with_count, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_count__emplacement_ctor
+ template <typename ...Args>
+ explicit with_count(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (with_count, super_t)
+ )
+#endif
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename BaseGenerator, typename T1, typename T2, typename Count>
+ template <typename ...Args>
+ inline with_count<BaseGenerator,T1,T2,Count>::with_count(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ super_t::on_post_emplacement_construct();
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__with_count_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename Count = ::std::size_t>
+ struct with_count_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_count_base<Derived,BaseGenerator,T1,T2,Count> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_WITH_COUNT_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/with_height.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_height.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,741 @@
+// 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_TREE_NODE_WITH_HEIGHT_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_HEIGHT_HPP_INCLUDED
+
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/utility/value_init.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/algorithm/dereference_iterator.hpp>
+#include <boost/tree_node/height_key.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ class with_height_base
+ : public
+ //[reference__with_height_base__bases
+ ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ //]
+ {
+ friend struct tree_node_base<Derived>;
+
+ typedef with_height_base<Derived,BaseGenerator,T1,T2,Height>
+ self;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ private:
+ Height _height;
+
+ protected:
+ //[reference__with_height_base__derived_copy_ctor
+ with_height_base(Derived const& copy);
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_height_base(BOOST_RV_REF(Derived) source);
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_height_base__emplacement_ctor
+ template <typename ...Args>
+ explicit with_height_base(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_WITH_HEIGHT_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , _height(::boost::initialized_value) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_HEIGHT_MACRO
+ , (with_height_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_HEIGHT_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~with_height_base();
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ void copy_assign(Derived const& copy);
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ void on_post_copy_or_move();
+
+ template <typename BooleanIntegralConstant>
+ void
+ on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ );
+
+ void on_post_erase_impl();
+
+ void on_post_clear_impl();
+
+ void on_post_rotate_left_impl();
+
+ void on_post_rotate_right_impl();
+
+ public:
+ //[reference__with_height_base__key_value_operator
+ Height const& operator[](height_key const&) const;
+ //]
+
+ private:
+ void _shallow_update();
+
+ static Height
+ _get_max_height(const_iterator c_itr, const_iterator c_end);
+
+ static void _update_less_height(pointer p);
+
+ static void _update_greater_height(pointer p);
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::with_height_base(
+ Derived const& copy
+ ) : super_t(copy), _height(copy._height)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::with_height_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ ) : super_t(source)
+#else
+ Derived&& source
+ ) : super_t(static_cast<Derived&&>(source))
+#endif
+ , _height(source._height)
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ template <typename ...Args>
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::with_height_base(
+ Args&& ...args
+ ) : super_t(::boost::forward<Args>(args)...)
+ , _height(::boost::initialized_value)
+ {
+ }
+#endif
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::~with_height_base()
+ {
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::copy_assign(
+ Derived const& copy
+ )
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+#if defined BOOST_NO_RVALUE_REFERENCES
+ super_t::move_assign(source);
+#else
+ super_t::move_assign(static_cast<Derived&&>(source));
+#endif
+// this->_height = source._height;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ {
+ super_t::copy_assign(copy);
+// this->_height = copy._height;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_copy_or_move()
+ {
+ super_t::on_post_copy_or_move();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ template <typename BooleanIntegralConstant>
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ )
+ {
+ super_t::on_post_inserted_impl(
+ position
+ , invalidates_sibling_positions
+ );
+ this->get_parent_ptr()->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_erase_impl()
+ {
+ super_t::on_post_erase_impl();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_clear_impl()
+ {
+ super_t::on_post_clear_impl();
+ this->_height = ::boost::initialized_value;
+ self::_update_less_height(this->get_derived());
+ this->on_post_propagate_value(height_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_rotate_left_impl()
+ {
+ super_t::on_post_rotate_left_impl();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_rotate_right_impl()
+ {
+ super_t::on_post_rotate_right_impl();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline Height const&
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::operator[](height_key const&) const
+ {
+ return this->_height;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ void
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::_shallow_update()
+ {
+ Height new_height = self::_get_max_height(this->begin(), this->end());
+
+ if (new_height < this->_height)
+ {
+ this->_height = new_height;
+ self::_update_less_height(this->get_derived());
+ this->on_post_propagate_value(height_key());
+ }
+ else if (this->_height < new_height)
+ {
+ this->_height = new_height;
+ self::_update_greater_height(this->get_derived());
+ this->on_post_propagate_value(height_key());
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ Height
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::_get_max_height(const_iterator c_itr, const_iterator c_end)
+ {
+ Height result = ::boost::initialized_value;
+
+ for (Height height_plus_1; c_itr != c_end; ++c_itr)
+ {
+ height_plus_1 = ::boost::tree_node::dereference_iterator(
+ c_itr
+ )._height;
+
+ if (result < ++height_plus_1)
+ {
+ result = height_plus_1;
+ }
+ }
+
+ return result;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::_update_less_height(pointer p)
+ {
+ Height new_height;
+
+ while ((p = p->get_parent_ptr()))
+ {
+ new_height = self::_get_max_height(p->begin(), p->end());
+
+ if (p->_height == new_height)
+ {
+ return;
+ }
+ else
+ {
+ // This is no longer the deepest branch.
+ p->_height = new_height;
+ }
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::_update_greater_height(pointer p)
+ {
+ Height p_height = p->_height;
+
+ while ((p = p->get_parent_ptr()) && (p->_height < ++p_height))
+ {
+ // This is the new deepest branch.
+ p->_height = p_height;
+ }
+ }
+}} // namespace boost::tree_node
+
+//[reference__with_height_base__get
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ Height const&
+ get(
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ > const& node
+ , height_key const& key
+ );
+
+ //<-
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline Height const&
+ get(
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ > const& node
+ , height_key const& key
+ )
+ {
+ return node[key];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#if !defined BOOST_NO_SFINAE
+//[reference__with_height_base__get__key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,height_key>
+ , Height const&
+ >::type
+ get(
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ > const& node
+ );
+
+ //<-
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,height_key>
+ , Height const&
+ >::type
+ get(
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ > const& node
+ )
+ {
+ return node[height_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_NO_SFINAE
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ struct has_key_impl<
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>
+ , height_key
+ > : ::boost::mpl::true_
+ {
+ };
+}} // namespace boost::tree_node
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2 = void
+ , typename Height = ::std::size_t
+ >
+ struct with_height
+ : public
+ //[reference__with_height__bases
+ with_height_base<
+ with_height<BaseGenerator,T1,T2,Height>
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >
+ //]
+ {
+ typedef with_height_base<with_height,BaseGenerator,T1,T2,Height>
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(with_height, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_height__emplacement_ctor
+ template <typename ...Args>
+ explicit with_height(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (with_height, super_t)
+ )
+#endif
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ template <typename ...Args>
+ inline with_height<BaseGenerator,T1,T2,Height>::with_height(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ super_t::on_post_emplacement_construct();
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__with_height_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename Height = ::std::size_t>
+ struct with_height_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_height_base<Derived,BaseGenerator,T1,T2,Height> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_WITH_HEIGHT_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/with_position.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_position.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,544 @@
+// 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_TREE_NODE_WITH_POSITION_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_POSITION_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/algorithm/dereference_iterator.hpp>
+#include <boost/tree_node/position_key.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ class with_position_base
+ : public
+ //[reference__with_position_base__bases
+ ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ //]
+ {
+ friend struct tree_node_base<Derived>;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ private:
+ iterator _position;
+
+ protected:
+ //[reference__with_position_base__derived_copy_ctor
+ with_position_base(Derived const& copy);
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_position_base(BOOST_RV_REF(Derived) source);
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_position_base__emplacement_ctor
+ template <typename ...Args>
+ explicit with_position_base(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_WITH_POSITION_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , _position() \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_POSITION_MACRO
+ , (with_position_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_POSITION_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~with_position_base();
+
+ void on_post_copy_or_move();
+
+ void on_post_inserted_impl(iterator position, ::boost::mpl::true_);
+
+ void on_post_inserted_impl(iterator position, ::boost::mpl::false_);
+
+ public:
+ //[reference__with_position_base__key_value_operator__const
+ const_iterator operator[](position_key const&) const;
+ //]
+
+ //[reference__with_position_base__key_value_operator
+ iterator operator[](position_key const&);
+ //]
+
+ private:
+ static void _set_child_positions(pointer to_parent);
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_position_base<Derived,BaseGenerator,T1,T2>::with_position_base(
+ Derived const& copy
+ ) : super_t(copy), _position()
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_position_base<Derived,BaseGenerator,T1,T2>::with_position_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ ) : super_t(source)
+#else
+ Derived&& source
+ ) : super_t(static_cast<Derived&&>(source))
+#endif
+ , _position()
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ template <typename ...Args>
+ with_position_base<Derived,BaseGenerator,T1,T2>::with_position_base(
+ Args&& ...args
+ ) : super_t(::boost::forward<Args>(args)...), _position()
+ {
+ }
+#endif
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_position_base<Derived,BaseGenerator,T1,T2>::~with_position_base()
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_position_base<Derived,BaseGenerator,T1,T2>::on_post_copy_or_move()
+ {
+ super_t::on_post_copy_or_move();
+ this->_set_child_positions(this->get_derived());
+ this->on_post_modify_value(position_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_position_base<Derived,BaseGenerator,T1,T2>::on_post_inserted_impl(
+ iterator position
+ , ::boost::mpl::true_ t
+ )
+ {
+ super_t::on_post_inserted_impl(position, t);
+ this->_position = position;
+ this->on_post_modify_value(position_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_position_base<Derived,BaseGenerator,T1,T2>::on_post_inserted_impl(
+ iterator position
+ , ::boost::mpl::false_ f
+ )
+ {
+ super_t::on_post_inserted_impl(position, f);
+ this->_set_child_positions(this->get_parent_ptr());
+
+ iterator itr_end = this->get_parent_ptr()->end();
+
+ for (
+ iterator itr = this->get_parent_ptr()->begin();
+ itr != itr_end;
+ ++itr
+ )
+ {
+ ::boost::tree_node::dereference_iterator(itr).on_post_modify_value(
+ position_key()
+ );
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename with_position_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_iterator
+ with_position_base<Derived,BaseGenerator,T1,T2>::operator[](
+ position_key const&
+ ) const
+ {
+ return this->_position;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename with_position_base<Derived,BaseGenerator,T1,T2>::iterator
+ with_position_base<Derived,BaseGenerator,T1,T2>::operator[](
+ position_key const&
+ )
+ {
+ return this->_position;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ void
+ with_position_base<Derived,BaseGenerator,T1,T2>::_set_child_positions(
+ pointer to_parent
+ )
+ {
+ iterator itr_end = to_parent->end();
+
+ for (iterator itr = to_parent->begin(); itr != itr_end; ++itr)
+ {
+ ::boost::tree_node::dereference_iterator(itr)._position = itr;
+ }
+ }
+}} // namespace boost::tree_node
+
+//[reference__with_position_base__get__const
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename with_position_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_iterator
+ get(
+ with_position_base<Derived,BaseGenerator,T1,T2> const& node
+ , position_key const& key
+ );
+
+ //<-
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename with_position_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_iterator
+ get(
+ with_position_base<Derived,BaseGenerator,T1,T2> const& node
+ , position_key const& key
+ )
+ {
+ return node[key];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_position_base__get
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename with_position_base<Derived,BaseGenerator,T1,T2>::iterator
+ get(
+ with_position_base<Derived,BaseGenerator,T1,T2>& node
+ , position_key const& key
+ );
+
+ //<-
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename with_position_base<Derived,BaseGenerator,T1,T2>::iterator
+ get(
+ with_position_base<Derived,BaseGenerator,T1,T2>& node
+ , position_key const& key
+ )
+ {
+ return node[key];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#if !defined BOOST_NO_SFINAE
+//[reference__with_position_base__get__key__const
+namespace boost { namespace tree_node {
+
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,position_key>
+ , typename with_position_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_iterator
+ >::type
+ get(with_position_base<Derived,BaseGenerator,T1,T2> const& node);
+
+ //<-
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,position_key>
+ , typename with_position_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_iterator
+ >::type
+ get(with_position_base<Derived,BaseGenerator,T1,T2> const& node)
+ {
+ return node[position_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_position_base__get__key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,position_key>
+ , typename with_position_base<Derived,BaseGenerator,T1,T2>::iterator
+ >::type
+ get(with_position_base<Derived,BaseGenerator,T1,T2>& node);
+
+ //<-
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,position_key>
+ , typename with_position_base<Derived,BaseGenerator,T1,T2>::iterator
+ >::type
+ get(with_position_base<Derived,BaseGenerator,T1,T2>& node)
+ {
+ return node[position_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_NO_SFINAE
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ struct has_key_impl<
+ with_position_base<Derived,BaseGenerator,T1,T2>
+ , position_key
+ > : ::boost::mpl::true_
+ {
+ };
+}} // namespace boost::tree_node
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename T1, typename T2 = void>
+ struct with_position
+ : public
+ //[reference__with_position__bases
+ with_position_base<
+ with_position<BaseGenerator,T1,T2>
+ , BaseGenerator
+ , T1
+ , T2
+ >
+ //]
+ {
+ typedef with_position_base<with_position,BaseGenerator,T1,T2> super_t;
+ typedef typename super_t::traits traits;
+ typedef typename super_t::pointer pointer;
+ typedef typename super_t::const_pointer const_pointer;
+ typedef typename super_t::iterator iterator;
+ typedef typename super_t::const_iterator const_iterator;
+ typedef typename super_t::size_type size_type;
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(with_position, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_position__emplacement_ctor
+ template <typename ...Args>
+ explicit with_position(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (with_position, super_t)
+ )
+#endif
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename BaseGenerator, typename T1, typename T2>
+ template <typename ...Args>
+ inline with_position<BaseGenerator,T1,T2>::with_position(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ super_t::on_post_emplacement_construct();
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__with_position_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator>
+ struct with_position_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_position_base<Derived,BaseGenerator,T1,T2> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_WITH_POSITION_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/with_red_black_flag.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_red_black_flag.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,669 @@
+// 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_TREE_NODE_WITH_RED_BLACK_FLAG_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/red_flag_key.hpp>
+#include <boost/tree_node/black_flag_key.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+//[reference__with_red_black_flag_base__put__red
+namespace boost { namespace tree_node {
+
+ //<-
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ class with_red_black_flag_base;
+ //->
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ void
+ put(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>& node
+ , red_flag_key const& key
+ , bool value
+ );
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_red_black_flag_base__put__black
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ void
+ put(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>& node
+ , black_flag_key const& key
+ , bool value
+ );
+}} // namespace boost::tree_node
+//]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ struct has_key_impl<
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>
+ , red_flag_key
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ struct has_key_impl<
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>
+ , black_flag_key
+ > : ::boost::mpl::true_
+ {
+ };
+}} // namespace boost::tree_node
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ class with_red_black_flag_base
+ : public
+ //[reference__with_red_black_flag_base__bases
+ ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ //]
+ {
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+
+ private:
+ bool _is_red;
+
+ protected:
+ //[reference__with_red_black_flag_base__derived_copy_ctor
+ with_red_black_flag_base(Derived const& copy);
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_red_black_flag_base(BOOST_RV_REF(Derived) source);
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_red_black_flag_base__emplacement_ctor
+ template <typename ...Args>
+ explicit with_red_black_flag_base(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , _is_red(false) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_MACRO
+ , (with_red_black_flag_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~with_red_black_flag_base();
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ void copy_assign(Derived const& copy);
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ void on_post_copy_or_move();
+
+ public:
+ //[reference__with_red_black_flag_base__key_value_operator__red
+ bool operator[](red_flag_key const&) const;
+ //]
+
+ //[reference__with_red_black_flag_base__key_value_operator__black
+ bool operator[](black_flag_key const&) const;
+ //]
+
+ //[reference__with_red_black_flag_base__set_red_flag
+ void set_red_flag(bool flag);
+ //]
+
+ //[reference__with_red_black_flag_base__set_black_flag
+ void set_black_flag(bool flag);
+ //]
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_red_black_flag_base(Derived const& copy)
+ : super_t(copy), _is_red(copy._is_red)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_red_black_flag_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ ) : super_t(source)
+#else
+ Derived&& source
+ ) : super_t(static_cast<Derived&&>(source))
+#endif
+ , _is_red(source._is_red)
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ template <typename ...Args>
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_red_black_flag_base(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...), _is_red(false)
+ {
+ }
+#endif
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::~with_red_black_flag_base()
+ {
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>::copy_assign(
+ Derived const& copy
+ )
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+#if defined BOOST_NO_RVALUE_REFERENCES
+ super_t::move_assign(source);
+#else
+ super_t::move_assign(static_cast<Derived&&>(source));
+#endif
+ this->_is_red = source._is_red;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ {
+ super_t::copy_assign(copy);
+ this->_is_red = copy._is_red;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::on_post_copy_or_move()
+ {
+ super_t::on_post_copy_or_move();
+ this->on_post_modify_value(red_flag_key());
+ this->on_post_modify_value(black_flag_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline bool
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::operator[](red_flag_key const&) const
+ {
+ return this->_is_red;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline bool
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::operator[](black_flag_key const&) const
+ {
+ return !this->_is_red;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>::set_red_flag(
+ bool flag
+ )
+ {
+ this->_is_red = flag;
+ this->on_post_modify_value(red_flag_key());
+ this->on_post_modify_value(black_flag_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>::set_black_flag(
+ bool flag
+ )
+ {
+ this->_is_red = !flag;
+ this->on_post_modify_value(red_flag_key());
+ this->on_post_modify_value(black_flag_key());
+ }
+}} // namespace boost::tree_node
+
+//[reference__with_red_black_flag_base__get__red
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ bool
+ get(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node
+ , red_flag_key const& key
+ );
+
+ //<-
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline bool
+ get(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node
+ , red_flag_key const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ put(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>& node
+ , red_flag_key const& key
+ , bool value
+ )
+ {
+ node.set_red_flag(value);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_red_black_flag_base__get__black
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ bool
+ get(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node
+ , black_flag_key const& key
+ );
+
+ //<-
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ > //->
+
+ inline bool
+ get(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node
+ , black_flag_key const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ put(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>& node
+ , black_flag_key const& key
+ , bool value
+ )
+ {
+ node.set_black_flag(value);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#if !defined BOOST_NO_SFINAE
+//[reference__with_red_black_flag_base__get__red_flag_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,red_flag_key>
+ , bool
+ >::type
+ get(with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node);
+
+ //<-
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,red_flag_key>
+ , bool
+ >::type
+ get(with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node)
+ {
+ return node[red_flag_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_red_black_flag_base__get__black_flag_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,black_flag_key>
+ , bool
+ >::type
+ get(with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node);
+
+ //<-
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,black_flag_key>
+ , bool
+ >::type
+ get(with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node)
+ {
+ return node[black_flag_key()];
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_NO_SFINAE
+
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename T1, typename T2 = void>
+ struct with_red_black_flag
+ : public
+ //[reference__with_red_black_flag__bases
+ with_red_black_flag_base<
+ with_red_black_flag<BaseGenerator,T1,T2>
+ , BaseGenerator
+ , T1
+ , T2
+ >
+ //]
+ {
+ typedef with_red_black_flag_base<
+ with_red_black_flag
+ , BaseGenerator
+ , T1
+ , T2
+ >
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(with_red_black_flag, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_red_black_flag__emplacement_ctor
+ template <typename ...Args>
+ explicit with_red_black_flag(Args&& ...args);
+ //]
+#else
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (with_red_black_flag, super_t)
+ )
+#endif
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename BaseGenerator, typename T1, typename T2>
+ template <typename ...Args>
+ inline with_red_black_flag<BaseGenerator,T1,T2>::with_red_black_flag(
+ Args&& ...args
+ ) : super_t(::boost::forward<Args>(args)...)
+ {
+ super_t::on_post_emplacement_construct();
+ }
+#endif
+}} // namespace boost::tree_node
+
+//[reference__with_red_black_flag_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator>
+ struct with_red_black_flag_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_red_black_flag_base<Derived,BaseGenerator,T1,T2> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/example/assoc_iterator_functions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/assoc_iterator_functions.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,81 @@
+// 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 LIBS_TREE_NODE_EXAMPLE_ASSOC_ITERATOR_FUNCTIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_ASSOC_ITERATOR_FUNCTIONS_HPP_INCLUDED
+
+#include <iostream>
+#include <boost/tree_node/breadth_first_desc_iterator.hpp>
+#include <boost/tree_node/pre_order_desc_iterator.hpp>
+#include <boost/tree_node/post_order_desc_iterator.hpp>
+#include <boost/tree_node/depth_first_desc_iterator.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/algorithm/dereference_iterator.hpp>
+
+template <typename NodeIterator, typename Function>
+void associative_iterator_out(NodeIterator itr, Function f, unsigned int n)
+{
+ for (unsigned int i = 0; itr; ++itr)
+ {
+ if (!i)
+ {
+ std::cout << std::endl << " ";
+ }
+
+ f(itr->first, boost::tree_node::dereference_iterator(itr));
+
+ if (++i == n)
+ {
+ i = 0;
+ }
+ }
+}
+
+template <typename Node, typename Function>
+void associative_out_bf_pre_post(Node const& node, Function f, unsigned int n)
+{
+ std::cout << ';' << std::endl << " emplacer[bf_d_vals]";
+ associative_iterator_out(
+ boost::tree_node::make_breadth_first_descendant_iterator(node)
+ , f
+ , n
+ );
+ std::cout << ';' << std::endl << " emplacer[pre_d_vals]";
+ associative_iterator_out(
+ boost::tree_node::make_pre_order_descendant_iterator(node)
+ , f
+ , n
+ );
+ std::cout << ';' << std::endl << " emplacer[post_d_vals]";
+ associative_iterator_out(
+ boost::tree_node::make_post_order_descendant_iterator(node)
+ , f
+ , n
+ );
+}
+
+template <typename Node, typename Function>
+void associative_out_df(Node const& node, Function f)
+{
+ std::cout << ';' << std::endl << " emplacer[df_d_vals]";
+
+ for (
+ boost::tree_node::depth_first_descendant_iterator<Node const> itr(
+ node
+ );
+ itr;
+ ++itr
+ )
+ {
+ f(
+ itr->first
+ , boost::tree_node::dereference_iterator(itr)
+ , boost::tree_node::traversal_state(itr)
+ );
+ }
+}
+
+#endif // LIBS_TREE_NODE_EXAMPLE_ASSOC_ITERATOR_FUNCTIONS_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/example/associative_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/associative_node.cpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,944 @@
+// 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)
+
+//#define BOOST_TYPEOF_COMPLIANT
+
+#include <iostream>
+#include <boost/config.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/typeof/associative_node.hpp>
+#include <boost/tree_node/typeof/with_count.hpp>
+#include <boost/tree_node/typeof/with_height.hpp>
+#include <boost/tree_node/typeof/with_position.hpp>
+#include <boost/tree_node/breadth_first_iterator.hpp>
+#include <boost/tree_node/breadth_first_desc_iterator.hpp>
+#include <boost/tree_node/pre_order_iterator.hpp>
+#include <boost/tree_node/post_order_iterator.hpp>
+#include <boost/tree_node/depth_first_iterator.hpp>
+#include <boost/tree_node/algorithm/dereference_iterator.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/tree_node/typeof/with_accumulation.hpp>
+#endif
+
+#include "type_definitions.hpp"
+#include "output_preamble.hpp"
+#include "output_functions.hpp"
+#include "iterator_functions.hpp"
+#include "assoc_iterator_functions.hpp"
+
+char const* names[] = {"able", "baker", "chuck", "dog", "easy", "fox"};
+
+template <typename Node>
+void initialize(Node& root)
+{
+ for (boost::tree_node::breadth_first_iterator<Node> itr(root); itr; ++itr)
+ {
+ BOOST_AUTO_TPL(data, get(*itr, boost::tree_node::data_key()));
+
+ if (1 < data)
+ {
+ for (std::size_t i = 0; i < data; ++i)
+ {
+ for (std::size_t j = 0; j + i < data; ++j)
+ {
+ itr->emplace(names[j], i);
+ }
+ }
+ }
+ }
+}
+
+#if defined BOOST_NO_SFINAE
+template <typename DNode>
+void out_with_it(DNode const& d_node)
+{
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 6);
+ associative_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 3);
+ associative_out_df(d_node, output_tree<boost::mpl::false_>(2, 5, true));
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+}
+#else
+template <typename DNode, typename ANode>
+void out_with_them(DNode const& d_node, ANode const& a_node)
+{
+ std::cout << std::endl << "#if defined BOOST_NO_SFINAE";
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 6);
+ associative_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 3);
+ associative_out_df(d_node, output_tree<boost::mpl::false_>(2, 5, true));
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+ std::cout << "#else // !defined BOOST_NO_SFINAE";
+ iterator_out_bf_pre_post(a_node, output_node<boost::mpl::true_>(), 2);
+ associative_out_bf_pre_post(a_node, output_node<boost::mpl::true_>(), 2);
+ associative_out_df(a_node, output_tree<boost::mpl::true_>(4, 7, false));
+ iterator_out_df(a_node, output_tree<boost::mpl::true_>(4, 7, false));
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+}
+#endif
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+template <typename FNode>
+void out_with_all(FNode const& f_node)
+{
+ iterator_out_bf_pre_post(f_node, output_uint_char_node(), 5);
+ associative_out_bf_pre_post(f_node, output_uint_char_node(), 3);
+ associative_out_df(f_node, output_uint_char_tree(4, 9, false));
+ iterator_out_df(f_node, output_uint_char_tree(4, 9, false));
+}
+#endif
+
+template <typename Selector>
+void output_driver()
+{
+ typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::associative_node_gen<Selector>
+ >
+ >
+ , char const*
+ , double
+ >
+ DNode;
+
+ DNode d_root(5.0);
+
+ initialize(d_root);
+
+#if !defined BOOST_NO_SFINAE
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::associative_node_gen<
+ Selector
+ >
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , char const*
+ , double
+ , AccuHeightKey
+ >
+ ANode;
+
+ ANode a_root(5.0);
+
+ initialize(a_root);
+#endif // BOOST_NO_SFINAE
+
+ std::cout << std::endl << "template <typename Selector>";
+ std::cout << std::endl << (
+ boost::is_unique_associative_selector<Selector>::value
+ ? "void test_unique_associative()"
+ : "void test_multiple_associative()"
+ ) << std::endl << '{' << std::endl;
+#if !defined BOOST_NO_SFINAE
+ std::cout << "#if defined BOOST_NO_SFINAE" << std::endl;
+#endif
+ std::cout << " typedef boost::tree_node::with_height<" << std::endl << (
+ " boost::tree_node::with_position_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_gen<"
+ ) << std::endl << " ";
+ std::cout << "boost::tree_node::associative_node_gen<Selector>";
+ std::cout << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , char const*" << std::endl;
+ std::cout << " , double" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " ANode;" << std::endl;
+#if !defined BOOST_NO_SFINAE
+ std::cout << "#else // !defined BOOST_NO_SFINAE" << std::endl << (
+ " typedef boost::tree_node::with_accumulation<"
+ ) << std::endl << " boost::tree_node::with_height_gen<";
+ std::cout << std::endl << (
+ " boost::tree_node::with_accumulation_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_position_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_accumulation_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_gen<"
+ ) << std::endl << " ";
+ std::cout << "boost::tree_node::with_accumulation_gen<" << std::endl << (
+ " "
+ ) << "boost::tree_node::associative_node_gen<" << std::endl;
+ std::cout << " Selector";
+ std::cout << std::endl << " >";
+ std::cout << std::endl << " >";
+ std::cout << std::endl << " >" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , char const*" << std::endl;
+ std::cout << " , double" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl;
+ std::cout << " >" << std::endl << " ANode;";
+ std::cout << std::endl << "#endif // BOOST_NO_SFINAE";
+#endif // BOOST_NO_SFINAE
+ output_container_type_preamble();
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " typename ANode::traits::key_type";
+ std::cout << std::endl << " , BOOST_TYPEOF_TPL(";
+ std::cout << std::endl << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::data_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::height_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::count_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#if !defined BOOST_NO_SFINAE" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " boost::tree_node::accumulation_key<>"
+ ) << std::endl << (
+ " >(boost::get_reference<ANode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuHeightKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuCountKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuAccuKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " KeyValues;" << std::endl;
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << (
+ " , typename ANode::traits::key_type"
+ ) << std::endl << " , BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::data_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::height_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << (
+ " , boost::tree_node::count_key()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#if !defined BOOST_NO_SFINAE" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " boost::tree_node::accumulation_key<>"
+ ) << std::endl << (
+ " >(boost::get_reference<ANode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuHeightKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuCountKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuAccuKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFKeyValues;" << std::endl;
+ std::cout << std::endl << " ANode a_root(5.0);" << std::endl;
+ std::cout << std::endl << " BOOST_CHECK(" << std::endl;
+ std::cout << " !a_root.get_parent_ptr()" << std::endl;
+ std::cout << "// , \"Parent member uninitialized.\"" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " initialize<Selector>(a_root);" << std::endl << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals;" << std::endl;
+ std::cout << " KeyValues bf_d_vals, pre_d_vals, post_d_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFKeyValues df_d_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_associative_node(" << std::endl;
+ std::cout << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl;
+ std::cout << " );" << std::endl << " }" << std::endl;
+
+ {
+ typename DNode::iterator d_child_itr(
+ boost::tree_node::dereference_iterator(
+ d_root.find(names[2])
+ ).insert(names[5], d_root)
+ );
+#if !defined BOOST_NO_SFINAE
+ typename ANode::iterator a_child_itr(
+ boost::tree_node::dereference_iterator(
+ a_root.find(names[2])
+ ).insert(names[5], a_root)
+ );
+#endif
+
+ std::cout << " {" << std::endl << " ANode a_copy(a_root);";
+ std::cout << std::endl << (
+ " boost::tree_node::breadth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " bf_root_itr(a_root), bf_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::breadth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::pre_order_iterator<ANode const>"
+ ) << std::endl << (
+ " pre_root_itr(a_root), pre_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::pre_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::post_order_iterator<ANode const>"
+ ) << std::endl << (
+ " post_root_itr(a_root), post_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::post_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " post_d_root_itr(a_root), post_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::depth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " df_root_itr(a_root), df_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::depth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " df_d_root_itr(a_root), df_d_copy_itr(a_copy);"
+ ) << std::endl << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(bf_root_itr, bf_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << std::endl << " " << (
+ " test_associative_node_copies(bf_d_root_itr, bf_d_copy_itr)"
+ ) << std::endl << " );" << std::endl << " " << (
+ "BOOST_CHECK(test_node_copies(pre_root_itr, pre_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << std::endl << " " << (
+ " test_associative_node_copies(pre_d_root_itr, pre_d_copy_itr)"
+ ) << std::endl << " );" << std::endl << " " << (
+ "BOOST_CHECK(test_node_copies(post_root_itr, post_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << std::endl << " " << (
+ " test_associative_node_copies(post_d_root_itr, post_d_copy_it"
+ ) << "r)" << std::endl << " );" << std::endl << " " << (
+ "BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << std::endl << " " << (
+ " test_associative_node_copies(df_d_root_itr, df_d_copy_itr)"
+ ) << std::endl << " );" << std::endl << " }" << std::endl;
+ std::cout << std::endl << " {" << std::endl << (
+ " typename ANode::iterator a_child_itr("
+ ) << std::endl << " boost::tree_node::dereference_iterator(";
+ std::cout << std::endl << " a_root.find(names[2])";
+ std::cout << std::endl << " ).insert(names[5], a_root)";
+ std::cout << std::endl << " );" << std::endl << (
+ " Values bf_vals, pre_vals, post_vals;"
+ ) << std::endl;
+ std::cout << " KeyValues bf_d_vals, pre_d_vals, post_d_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFKeyValues df_d_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_associative_node(" << std::endl;
+ std::cout << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+
+ d_root = boost::tree_node::dereference_iterator(d_child_itr);
+#if !defined BOOST_NO_SFINAE
+ a_root = boost::tree_node::dereference_iterator(a_child_itr);
+#endif
+ std::cout << " a_root = boost::tree_node::";
+ std::cout << "dereference_iterator(a_child_itr);" << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " bf_d_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " pre_d_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " post_d_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+ std::cout << " df_d_vals.clear();" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_associative_node(" << std::endl;
+ std::cout << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+
+ if (boost::is_unique_associative_selector<Selector>::value)
+ {
+ boost::tree_node::dereference_iterator(
+ d_child_itr = d_root.find(names[2])
+ ) = d_root;
+#if !defined BOOST_NO_SFINAE
+ boost::tree_node::dereference_iterator(
+ a_child_itr = a_root.find(names[2])
+ ) = a_root;
+#endif
+ std::cout << " a_child_itr = a_root.find(names[2]);";
+ std::cout << std::endl;
+ }
+ else
+ {
+ d_child_itr = boost::begin(d_root.equal_range(names[2]));
+
+ while (boost::tree_node::dereference_iterator(d_child_itr).empty())
+ {
+ ++d_child_itr;
+ }
+
+ d_child_itr = boost::begin(
+ boost::tree_node::dereference_iterator(
+ d_child_itr
+ ).equal_range(names[1])
+ );
+ boost::tree_node::dereference_iterator(d_child_itr) = d_root;
+#if !defined BOOST_NO_SFINAE
+ a_child_itr = boost::begin(a_root.equal_range(names[2]));
+
+ while (boost::tree_node::dereference_iterator(a_child_itr).empty())
+ {
+ ++a_child_itr;
+ }
+
+ a_child_itr = boost::begin(
+ boost::tree_node::dereference_iterator(
+ a_child_itr
+ ).equal_range(names[1])
+ );
+ boost::tree_node::dereference_iterator(a_child_itr) = a_root;
+#endif
+ std::cout << " a_child_itr = boost::begin(a_root.equal";
+ std::cout << "_range(names[2]));" << std::endl << std::endl << (
+ " while (boost::tree_node::dereference_iterator(a_"
+ ) << "child_itr).empty())" << std::endl << " {";
+ std::cout << std::endl << " ++a_child_itr;";
+ std::cout << std::endl << " }" << std::endl;
+ std::cout << std::endl << (
+ " a_child_itr = boost::begin("
+ ) << std::endl << (
+ " boost::tree_node::dereference_iterator("
+ ) << std::endl << " a_child_itr" << std::endl;
+ std::cout << " ).equal_range(names[1])";
+ std::cout << std::endl << " );" << std::endl;
+ }
+
+ std::cout << " boost::tree_node::dereference_iterator";
+ std::cout << "(a_child_itr) = a_root;" << std::endl;
+ std::cout << " test_associative_node(" << std::endl;
+ std::cout << " boost::tree_node::dereference_iterator";
+ std::cout << "(a_child_itr)" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " bf_d_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " pre_d_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " post_d_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+ std::cout << " df_d_vals.clear();" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_associative_node(" << std::endl;
+ std::cout << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl << " );";
+ std::cout << std::endl << " BOOST_CHECK(" << std::endl << (
+ " boost::tree_node::dereference_iterator("
+ ) << std::endl << " a_child_itr" << std::endl;
+ std::cout << " ).erase(names[1]) == ";
+ std::cout << boost::tree_node::dereference_iterator(
+ d_child_itr
+ ).erase(names[1]) << std::endl << " );" << std::endl;
+#if !defined BOOST_NO_SFINAE
+ boost::tree_node::dereference_iterator(a_child_itr).erase(names[1]);
+#endif
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " bf_d_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " pre_d_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " post_d_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+ std::cout << " df_d_vals.clear();" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_associative_node(" << std::endl;
+ std::cout << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl << " );";
+ }
+
+ std::cout << std::endl << " }";
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::associative_node_gen<Selector>
+ , char const*
+ , DataMap
+ , AccuYourUintKey
+ >
+ FNode;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ BOOST_AUTO_TPL(
+ data
+ , boost::tree_node::get<example_keys::your_uint>(
+ boost::tree_node::dereference_iterator(itr)
+ )
+ );
+
+ if (1 < data)
+ {
+ for (unsigned int i = 0; i < data; ++i)
+ {
+ for (std::size_t j = 0; j + i < data; ++j)
+ {
+ itr->emplace(
+ names[j]
+ , boost::fusion::make_pair<example_keys::your_uint>(i)
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + i
+ )
+ );
+ }
+ }
+ }
+ }
+
+ std::cout << std::endl << std::endl << (
+ "#if defined BOOST_TREE_NODE_CAN_USE_FUSION"
+ ) << std::endl << " typedef boost::tree_node::with_accumulation<";
+ std::cout << std::endl << (
+ " boost::tree_node::associative_node_gen<Selector>"
+ ) << std::endl << " , char const*" << std::endl;
+ std::cout << " , DataMap" << std::endl;
+ std::cout << " , AccuYourUintKey" << std::endl;
+ std::cout << " >" << std::endl << " FNode;";
+ output_container_fused_type_preamble();
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl << (
+ " typename FNode::traits::key_type"
+ ) << std::endl << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_uint"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_char"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuYourUintKey>("
+ ) << std::endl << (
+ " boost::get_reference<FNode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl << " >";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << " MoreKeyValues;" << std::endl;
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << (
+ " , typename FNode::traits::key_type"
+ ) << std::endl << " , BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " boost::tree_node::get<" << std::endl;
+ std::cout << " example_keys::your_uint";
+ std::cout << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_char"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuYourUintKey>("
+ ) << std::endl << (
+ " boost::get_reference<FNode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl << " >";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << " DFMoreKeyValues;" << std::endl << std::endl;
+ std::cout << " FNode f_root(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::your_uint>(5)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::your_char>(\'5\')"
+ ) << std::endl << " );" << std::endl << std::endl;
+ std::cout << " for (" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<FNode> itr(f_root);"
+ ) << std::endl << " itr;" << std::endl << " ++itr";
+ std::cout << std::endl << " )" << std::endl << " {" << std::endl;
+ std::cout << " BOOST_AUTO_TPL(" << std::endl;
+ std::cout << " data" << std::endl << (
+ " , boost::tree_node::get<example_keys::your_uint>("
+ ) << std::endl << (
+ " boost::tree_node::dereference_iterator(itr)"
+ ) << std::endl << " )" << std::endl << " );";
+ std::cout << std::endl << std::endl << " if (1 < data)";
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " for (unsigned int i = 0; i < data; ++i)";
+ std::cout << std::endl << " {" << std::endl << (
+ " for (std::size_t j = 0; j + i < data; ++j)"
+ ) << std::endl << " {" << std::endl;
+ std::cout << " itr->emplace(" << std::endl;
+ std::cout << " names[j]" << std::endl << (
+ " , boost::fusion::make_pair<example_keys::your_"
+ ) << "uint>(i)" << std::endl << " " << (
+ ", boost::fusion::make_pair<example_keys::your_char>("
+ ) << std::endl << " '0' + i" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " );" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl;
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " MoreValues bf_vals, pre_vals, post_vals;";
+ std::cout << std::endl << (
+ " MoreKeyValues bf_d_vals, pre_d_vals, post_d_vals;"
+ ) << std::endl << " DFMoreKeyValues df_d_vals;" << std::endl;
+ std::cout << " DFMoreValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+ out_with_all(f_root);
+ std::cout << " test_f_associative_node(" << std::endl;
+ std::cout << " f_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl << " , df_d_vals";
+ std::cout << std::endl << " );" << std::endl << std::endl;
+
+ put(
+ boost::tree_node::dereference_iterator(f_root.find(names[2]))
+ , example_keys::your_uint()
+ , 7
+ );
+ std::cout << " put(" << std::endl << " boost::tree_node";
+ std::cout << "::dereference_iterator(f_root.find(names[2]))" << std::endl;
+ std::cout << " , example_keys::your_uint()" << std::endl;
+ std::cout << " , 7" << std::endl << " );" << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " bf_d_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " pre_d_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " post_d_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+ std::cout << " df_d_vals.clear();" << std::endl;
+ out_with_all(f_root);
+ std::cout << " test_f_associative_node(" << std::endl;
+ std::cout << " f_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl << " , df_d_vals";
+ std::cout << std::endl << " );" << std::endl << " }";
+ std::cout << std::endl<< "#endif // BOOST_TREE_NODE_CAN_USE_FUSION";
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ std::cout << std::endl << '}' << std::endl;
+}
+
+#if defined BOOST_TYPEOF_EMULATION
+#include <boost/container_gen/selectors_typeof.hpp>
+#include <boost/container_gen/c_str_cmp_selectors_typeof.hpp>
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/ptr_container/ptr_map.hpp>
+#elif defined LIBS_TREE_NODE_EXAMPLE_ASSOCIATIVE_NODE_USE_FLAT_MAP
+#include <boost/typeof/boost/container/flat_map.hpp>
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/typeof/boost/container/map.hpp>
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#else // !defined BOOST_TYPEOF_EMULATION
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/c_str_cmp_selectors.hpp>
+#endif // BOOST_TYPEOF_EMULATION
+
+int main()
+{
+ output_copyright_and_config_preamble();
+ output_header_and_type_preamble();
+ std::cout << "#include <boost/tree_node/typeof/associative_node.hpp>";
+ std::cout << std::endl << (
+ "#include <boost/container_gen/is_unique_assoc_selector.hpp>"
+ ) << std::endl << std::endl << "char const* names[] = {\"able\"," << (
+ " \"baker\", \"chuck\", \"dog\", \"easy\", \"fox\"};"
+ ) << std::endl << std::endl << "template <typename Select, typename Node>";
+ std::cout << std::endl << "void initialize(Node& root)" << std::endl;
+ std::cout << '{' << std::endl << (
+ " for (boost::tree_node::breadth_first_iterator<Node> itr(root);"
+ ) << " itr; ++itr)" << std::endl << " {" << std::endl << " " << (
+ "BOOST_AUTO_TPL(data, get(*itr, boost::tree_node::data_key()));"
+ ) << std::endl << std::endl << " if (1 < data)" << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " for (std::size_t i = 0; i < data; ++i)";
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " for (std::size_t j = 0; j + i < data; ++j)";
+ std::cout << std::endl << " {" << std::endl << " " << (
+ " typename Node::iterator find_itr(itr->find(names[j]));"
+ ) << std::endl << (
+ " bool not_found = find_itr == itr->end();"
+ ) << std::endl << (
+ " typename Node::iterator child_itr("
+ ) << std::endl << (
+ " itr->emplace(names[j], i)"
+ ) << std::endl << " );" << std::endl;
+ std::cout << " Node& child(" << std::endl << (
+ " boost::tree_node::dereference_iterator"
+ ) << "(child_itr)" << std::endl << " );" << std::endl;
+ std::cout << " Node const& const_child(child);";
+ std::cout << std::endl << std::endl << (
+ " if (not_found)"
+ ) << std::endl << " {" << std::endl;
+ std::cout << " typename Node::pointer child_ptr(";
+ std::cout << std::endl << (
+ " child.get_parent_ptr()"
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " child_ptr == &*itr" << std::endl;
+ std::cout << "// , \"Ctor not linking child to";
+ std::cout << " parent.\"" << std::endl << " );";
+ std::cout << std::endl << " BOOST_CHECK(";
+ std::cout << std::endl << (
+ " child_ptr == const_child.get_parent_ptr()"
+ ) << std::endl << (
+ "// , \"Why are these pointers different?\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " }" << std::endl;
+ std::cout << " else if (" << std::endl;
+ std::cout << " boost::";
+ std::cout << "is_unique_associative_selector<Select>::value" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl << (
+ " find_itr->first == child_itr->first"
+ ) << std::endl;
+ std::cout << "// , \"Keys do not match.\"";
+ std::cout << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " get(" << std::endl << " " << (
+ " boost::tree_node::dereference_iterator("
+ ) << std::endl;
+ std::cout << " find_itr" << std::endl;
+ std::cout << " )" << std::endl << (
+ " , boost::tree_node::data_key()"
+ ) << std::endl << " ) == get(" << std::endl;
+ std::cout << " const_child";
+ std::cout << std::endl << (
+ " , boost::tree_node::data_key()"
+ ) << std::endl << " )" << std::endl << (
+ "// , \"Ctor not linking parent to child.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " }" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl << '}' << std::endl;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ output_driver<
+ boost::ptr_map_selector<boost::c_str_ordering_selector>
+ >();
+ output_driver<
+ boost::ptr_multimap_selector<boost::c_str_ordering_selector>
+ >();
+#elif defined LIBS_TREE_NODE_EXAMPLE_ASSOCIATIVE_NODE_USE_FLAT_MAP
+ output_driver<
+ boost::flat_map_selector<boost::c_str_ordering_selector>
+ >();
+ output_driver<
+ boost::flat_multimap_selector<boost::c_str_ordering_selector>
+ >();
+#else
+ output_driver<boost::map_selector<boost::mpl::true_> >();
+ output_driver<boost::multimap_selector<boost::mpl::true_> >();
+#endif
+
+ std::cout << std::endl << "#if defined BOOST_MSVC" << std::endl;
+ std::cout << " #pragma warning (pop)" << std::endl;
+ std::cout << "#endif" << std::endl << std::endl;
+ std::cout << "#if defined BOOST_TYPEOF_EMULATION" << std::endl << (
+ "#include <boost/container_gen/selectors_typeof.hpp>"
+ ) << std::endl << (
+ "#include <boost/container_gen/c_str_cmp_selectors_typeof.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/ptr_container/ptr_map.hpp>"
+ ) << std::endl << (
+ "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION"
+ ) << std::endl;
+ std::cout << "#include <boost/typeof/boost/mpl/bool.hpp>" << std::endl << (
+ "#include <boost/typeof/boost/container/map.hpp>"
+ ) << std::endl;
+ std::cout << "#include <boost/typeof/boost/container/flat_map.hpp>";
+ std::cout << std::endl << "#endif" << std::endl;
+ std::cout << "#else // !defined BOOST_TYPEOF_EMULATION" << std::endl;
+ std::cout << "#include <boost/container_gen/selectors.hpp>" << std::endl;
+ std::cout << "#include <boost/container_gen/c_str_cmp_selectors.hpp>";
+ std::cout << std::endl << "#endif // BOOST_TYPEOF_EMULATION" << std::endl;
+ std::cout << std::endl << "int test_main(int argc, char** argv)";
+ std::cout << std::endl << '{' << std::endl << (
+ " test_unique_associative<"
+ ) << std::endl << (
+ " boost::ptr_map_selector<boost::c_str_ordering_selector>"
+ ) << std::endl << " >();" << std::endl << (
+ " test_multiple_associative<"
+ ) << std::endl << (
+ " boost::ptr_multimap_selector<boost::c_str_ordering_selector>"
+ ) << std::endl << " >();" << std::endl;
+ std::cout << "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION";
+ std::cout << std::endl << " test_unique_associative<" << std::endl;
+ std::cout << " boost::map_selector<boost::mpl::true_,";
+ std::cout << "boost::c_str_ordering_selector>" << std::endl << " >();";
+ std::cout << std::endl << " test_multiple_associative<" << std::endl;
+ std::cout << " boost::multimap_selector<" << std::endl;
+ std::cout << " boost::mpl::true_" << std::endl;
+ std::cout << " , boost::c_str_ordering_selector" << std::endl;
+ std::cout << " >" << std::endl << " >();" << std::endl;
+ std::cout << " test_unique_associative<" << std::endl << (
+ " boost::flat_map_selector<boost::c_str_ordering_selector>"
+ ) << std::endl << " >();" << std::endl << (
+ " test_multiple_associative<"
+ ) << std::endl << (
+ " boost::flat_multimap_selector<boost::c_str_ordering_selector>"
+ ) << std::endl << " >();" << std::endl << "#endif" << std::endl;
+ std::cout << std::endl << " return 0;" << std::endl;
+ std::cout << '}' << std::endl << std::endl;
+
+ return 0;
+}
+

Added: sandbox/tree_node/libs/tree_node/example/binary_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/binary_node.cpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,735 @@
+// 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)
+
+//#define BOOST_TYPEOF_COMPLIANT
+
+#include <iostream>
+#include <boost/config.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/typeof/binary_node.hpp>
+#include <boost/tree_node/typeof/with_count.hpp>
+#include <boost/tree_node/typeof/with_height.hpp>
+#include <boost/tree_node/typeof/with_position.hpp>
+#include <boost/tree_node/breadth_first_iterator.hpp>
+#include <boost/tree_node/pre_order_desc_iterator.hpp>
+#include <boost/tree_node/post_order_iterator.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/tree_node/typeof/with_accumulation.hpp>
+#endif
+
+#include "type_definitions.hpp"
+#include "output_preamble.hpp"
+#include "output_functions.hpp"
+#include "iterator_functions.hpp"
+
+typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::binary_node_gen
+ >
+ >
+ , double
+ >
+ DNode;
+
+#if !defined BOOST_NO_SFINAE
+typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::binary_node_gen
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , double
+ , void
+ , AccuHeightKey
+ >
+ ANode;
+#endif // BOOST_NO_SFINAE
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+typedef boost::tree_node::with_accumulation<
+ boost::tree_node::binary_node_gen
+ , DataMap
+ , void
+ , AccuYourUintKey
+ >
+ FNode;
+
+void out_with_it(FNode const& f_node)
+{
+ iterator_out_bf_pre_post(f_node, output_uint_char_node(), 5);
+ iterator_out_in_order(f_node, output_uint_char_node(), 5);
+ iterator_out_df(f_node, output_uint_char_tree(2, 7, true));
+}
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+template <typename Node>
+void initialize(Node& root)
+{
+ for (boost::tree_node::breadth_first_iterator<Node> itr(root); itr; ++itr)
+ {
+ BOOST_AUTO_TPL(data, get(*itr, boost::tree_node::data_key()));
+
+ if (1 < data)
+ {
+ itr->emplace_left(data - 2);
+ itr->emplace_right(data - 1);
+ }
+ }
+}
+
+#if defined BOOST_NO_SFINAE
+void out_with_it(DNode const& d_node)
+{
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_in_order(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+}
+#else // !defined BOOST_NO_SFINAE
+void out_with_them(DNode const& d_node, ANode const& a_node)
+{
+ std::cout << std::endl << "#if defined BOOST_NO_SFINAE";
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_in_order(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+ std::cout << "#else // !defined BOOST_NO_SFINAE";
+ iterator_out_bf_pre_post(a_node, output_node<boost::mpl::true_>(), 2);
+ iterator_out_in_order(a_node, output_node<boost::mpl::true_>(), 2);
+ iterator_out_df(a_node, output_tree<boost::mpl::true_>(4, 7, false));
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+}
+#endif // BOOST_NO_SFINAE
+
+int main()
+{
+ DNode d_root(5.0);
+
+ initialize(d_root);
+
+#if !defined BOOST_NO_SFINAE
+ ANode a_root(5.0);
+
+ initialize(a_root);
+#endif
+
+ output_copyright_and_config_preamble();
+ output_header_and_type_preamble();
+ std::cout << "#include <boost/tree_node/typeof/binary_node.hpp>";
+ std::cout << std::endl;
+#if !defined BOOST_NO_SFINAE
+ std::cout << std::endl << "#if defined BOOST_NO_SFINAE";
+#endif
+ std::cout << std::endl << (
+ "typedef boost::tree_node::with_height<"
+ ) << std::endl << (
+ " boost::tree_node::with_position_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_gen<"
+ ) << std::endl << (
+ " boost::tree_node::binary_node_gen"
+ ) << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , double" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " ANode;" << std::endl;
+#if !defined BOOST_NO_SFINAE
+ std::cout << "#else // !defined BOOST_NO_SFINAE" << std::endl;
+ std::cout << "typedef boost::tree_node::with_accumulation<" << std::endl;
+ std::cout << " boost::tree_node::with_height_gen<" << std::endl;
+ std::cout << " boost::tree_node::with_accumulation_gen<";
+ std::cout << std::endl << (
+ " boost::tree_node::with_position_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_accumulation_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_gen<"
+ ) << std::endl << " ";
+ std::cout << "boost::tree_node::with_accumulation_gen<" << std::endl << (
+ " boost::tree_node::binary_node_gen"
+ ) << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , double" << std::endl;
+ std::cout << " , void" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " ANode;" << std::endl;
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+#endif // BOOST_NO_SFINAE
+ std::cout << std::endl << "typedef boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " BOOST_TYPEOF(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::data_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::height_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::count_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#if !defined BOOST_NO_SFINAE" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " boost::tree_node::accumulation_key<>"
+ ) << std::endl << (
+ " >(boost::get_reference<ANode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<AccuHeightKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<AccuCountKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<AccuAccuKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " Values;" << std::endl;
+ std::cout << "typedef boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << " , BOOST_TYPEOF(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::data_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::height_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::count_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#if !defined BOOST_NO_SFINAE" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " boost::tree_node::accumulation_key<>"
+ ) << std::endl << (
+ " >(boost::get_reference<ANode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<AccuHeightKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<AccuCountKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<AccuAccuKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFValues;" << std::endl;
+ std::cout << std::endl << "int test_main(int argc, char** argv)";
+ std::cout << std::endl << '{' << std::endl << " ANode a_root(5.0);";
+ std::cout << std::endl << std::endl << " BOOST_CHECK(" << std::endl;
+ std::cout << " !a_root.get_parent_ptr()" << std::endl;
+ std::cout << "// , \"Parent member uninitialized.\"" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " for (" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<ANode> itr(a_root);"
+ ) << std::endl << " itr;" << std::endl << " ++itr";
+ std::cout << std::endl << " )" << std::endl << " {" << std::endl;
+ std::cout << " BOOST_AUTO(data, get(*itr, ";
+ std::cout << "boost::tree_node::data_key()));" << std::endl << std::endl;
+ std::cout << " if (1 < data)" << std::endl << " {";
+ std::cout << std::endl << (
+ " ANode::iterator child_itr(itr->emplace_left(data - 2));"
+ ) << std::endl;
+ std::cout << " ANode::const_pointer const_child(&*child_itr);";
+ std::cout << std::endl << std::endl << " BOOST_CHECK(";
+ std::cout << std::endl << (
+ " child_itr->get_parent_ptr() == &*itr"
+ ) << std::endl << (
+ "// , \"Ctor not linking child to parent.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl << (
+ " itr->get_left_child_ptr() == &*child_itr"
+ ) << std::endl << (
+ "// , \"Ctor not linking parent to child.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl << " ";
+ std::cout << (
+ "child_itr->get_parent_ptr() == const_child->get_parent_ptr()"
+ ) << std::endl << (
+ "// , \"Why are these pointers different?\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " get(" << std::endl;
+ std::cout << " *child_itr" << std::endl;
+ std::cout << " , boost::tree_node::position_key()";
+ std::cout << std::endl << " ) == child_itr" << std::endl;
+ std::cout << "// , \"Position iterator incorrect.\"";
+ std::cout << std::endl << " );" << std::endl << std::endl;
+ std::cout << " child_itr = itr->emplace_right(data - 1);";
+ std::cout << std::endl << " const_child = &*child_itr;";
+ std::cout << std::endl << std::endl << " BOOST_CHECK(";
+ std::cout << std::endl << (
+ " child_itr->get_parent_ptr() == &*itr"
+ ) << std::endl;
+ std::cout << "// , \"Ctor not linking child to parent.\"";
+ std::cout << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl << (
+ " itr->get_right_child_ptr() == &*child_itr"
+ ) << std::endl << (
+ "// , \"Ctor not linking parent to child.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl << " ";
+ std::cout << (
+ "child_itr->get_parent_ptr() == const_child->get_parent_ptr()"
+ ) << std::endl << (
+ "// , \"Why are these pointers different?\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " get(" << std::endl;
+ std::cout << " *child_itr" << std::endl;
+ std::cout << " , boost::tree_node::position_key()";
+ std::cout << std::endl << " ) == child_itr" << std::endl;
+ std::cout << "// , \"Position iterator incorrect.\"";
+ std::cout << std::endl << " );" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl;
+ std::cout << " }" << std::endl << std::endl;
+
+ {
+ DNode::pointer d_p = d_root.get_left_child_ptr()->get_left_child_ptr();
+ DNode::iterator d_child_itr = d_p->insert_left(d_root);
+#if !defined BOOST_NO_SFINAE
+ ANode::pointer a_p = a_root.get_left_child_ptr()->get_left_child_ptr();
+ ANode::iterator a_child_itr = a_p->insert_left(a_root);
+#endif
+
+ std::cout << " {" << std::endl << " ANode a_copy(a_root);";
+ std::cout << std::endl << (
+ " boost::tree_node::breadth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " bf_root_itr(a_root), bf_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::breadth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::pre_order_iterator<ANode const>"
+ ) << std::endl << (
+ " pre_root_itr(a_root), pre_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::pre_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::post_order_iterator<ANode const>"
+ ) << std::endl << (
+ " post_root_itr(a_root), post_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::post_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " post_d_root_itr(a_root), post_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::in_order_iterator<ANode const>"
+ ) << std::endl << (
+ " in_root_itr(a_root), in_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::depth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " df_root_itr(a_root), df_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::depth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " df_d_root_itr(a_root), df_d_copy_itr(a_copy);"
+ ) << std::endl << std::endl << (
+ " BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(bf_d_root_itr, bf_d_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(pre_root_itr, pre_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(pre_d_root_itr, pre_d_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(post_root_itr, post_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(post_d_root_itr, post_d_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(in_root_itr, in_copy_itr));"
+ ) << std::endl << (
+ " BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(df_d_root_itr, df_d_copy_itr));"
+ ) << std::endl << " }" << std::endl << std::endl << " {";
+ std::cout << std::endl << " ANode::pointer p = ";
+ std::cout << "a_root.get_left_child_ptr()->get_left_child_ptr();";
+ std::cout << std::endl << (
+ " ANode::iterator a_child_itr = p->insert_left(a_root);"
+ ) << std::endl << (
+ " Values bf_vals, pre_vals, post_vals, in_vals;"
+ ) << std::endl << " DFValues df_vals;" << std::endl << (
+ " DFEmplacer emplacer;"
+ ) << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl << std::endl;
+
+ d_root = *d_child_itr;
+#if !defined BOOST_NO_SFINAE
+ a_root = *a_child_itr;
+#endif
+ std::cout << " a_root = *a_child_itr;" << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " in_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl << std::endl;
+
+ *(d_p = d_root.get_right_child_ptr()) = d_root;
+#if !defined BOOST_NO_SFINAE
+ *(a_p = a_root.get_right_child_ptr()) = a_root;
+#endif
+ std::cout << " *(p = a_root.get_right_child_ptr()) = a_root;";
+ std::cout << std::endl << " test_node(*p, bf_vals, pre_vals, ";
+ std::cout << "post_vals, in_vals, df_vals);" << std::endl << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " in_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl;
+ std::cout << " }" << std::endl << std::endl;
+ }
+
+ d_root.get_right_child_ptr()->rotate_left();
+#if !defined BOOST_NO_SFINAE
+ a_root.get_right_child_ptr()->rotate_left();
+#endif
+ std::cout << " a_root.get_right_child_ptr()->rotate_left();";
+ std::cout << std::endl << std::endl << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl;
+ std::cout << " }" << std::endl << std::endl;
+
+ {
+ DNode::pointer d_p(d_root.get_right_child_ptr()->get_right_child_ptr());
+ DNode::iterator d_child_itr(d_p->emplace_right());
+
+ put(*d_child_itr, boost::tree_node::data_key(), 7);
+
+#if !defined BOOST_NO_SFINAE
+ ANode::pointer a_p(a_root.get_right_child_ptr()->get_right_child_ptr());
+ ANode::iterator a_child_itr(a_p->emplace_right());
+
+ put(*a_child_itr, boost::tree_node::data_key(), 7);
+#endif
+ std::cout << " {" << std::endl << " ANode::pointer ";
+ std::cout << "p(a_root.get_right_child_ptr()->get_right_child_ptr());";
+ std::cout << std::endl << (
+ " ANode::iterator p_child_itr(p->emplace_right());"
+ ) << std::endl << (
+ " Values bf_vals, pre_vals, post_vals, in_vals;"
+ ) << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl << std::endl;
+ std::cout << (
+ " put(*p_child_itr, boost::tree_node::data_key(), 7);"
+ );
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl;
+ std::cout << " }" << std::endl << std::endl;
+ }
+
+ d_root.get_left_child_ptr()->rotate_right();
+#if !defined BOOST_NO_SFINAE
+ a_root.get_left_child_ptr()->rotate_right();
+#endif
+ std::cout << " a_root.get_left_child_ptr()->rotate_right();";
+ std::cout << std::endl << std::endl << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl;
+ std::cout << " }" << std::endl << std::endl;
+
+ d_root.get_left_child_ptr()->rotate_left();
+#if !defined BOOST_NO_SFINAE
+ a_root.get_left_child_ptr()->rotate_left();
+#endif
+ std::cout << " a_root.get_left_child_ptr()->rotate_left();";
+ std::cout << std::endl << std::endl << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl;
+ std::cout << " }" << std::endl << std::endl;
+
+ d_root.begin()->clear();
+#if !defined BOOST_NO_SFINAE
+ a_root.begin()->clear();
+#endif
+ std::cout << " a_root.begin()->clear();" << std::endl << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl << " }" << std::endl;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ BOOST_AUTO(data, boost::tree_node::get<example_keys::your_uint>(*itr));
+
+ if (1 < data)
+ {
+ --data;
+ itr->emplace_right(
+ boost::fusion::make_pair<example_keys::your_uint>(data)
+ , boost::fusion::make_pair<example_keys::your_char>('0' + data)
+ );
+ --data;
+ itr->emplace_left(
+ boost::fusion::make_pair<example_keys::your_uint>(data)
+ , boost::fusion::make_pair<example_keys::your_char>('0' + data)
+ );
+ }
+ }
+
+ std::cout << std::endl << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION";
+ std::cout << std::endl << (
+ " typedef boost::tree_node::with_accumulation<"
+ ) << std::endl << " boost::tree_node::binary_node_gen";
+ std::cout << std::endl << " , DataMap" << std::endl;
+ std::cout << " , void" << std::endl;
+ std::cout << " , AccuYourUintKey" << std::endl;
+ std::cout << " >" << std::endl << " FNode;";
+ std::cout << std::endl << " typedef boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_uint"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_char"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<AccuYourUintKey>("
+ ) << std::endl << (
+ " boost::get_reference<FNode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl << " >";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << " MoreValues;" << std::endl;
+ std::cout << " typedef boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << " , BOOST_TYPEOF(";
+ std::cout << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_uint"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_char"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF(" << std::endl << (
+ " boost::tree_node::get<AccuYourUintKey>("
+ ) << std::endl << (
+ " boost::get_reference<FNode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl << " >";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << " DFMoreValues;" << std::endl << std::endl;
+ std::cout << " FNode f_root(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::your_uint>(5)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::your_char>(\'5\')"
+ ) << std::endl << " );" << std::endl << std::endl;
+ std::cout << " for (" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<FNode> itr(f_root);"
+ ) << std::endl << " itr;" << std::endl << " ++itr";
+ std::cout << std::endl << " )" << std::endl << " {" << std::endl;
+ std::cout << " BOOST_AUTO(data, boost::tree_node::get<example_";
+ std::cout << "keys::your_uint>(*itr));" << std::endl << std::endl;
+ std::cout << " if (1 < data)" << std::endl << " {";
+ std::cout << std::endl << " --data;" << std::endl;
+ std::cout << " itr->emplace_right(" << std::endl << " " << (
+ " boost::fusion::make_pair<example_keys::your_uint>(data)"
+ ) << std::endl << " , boost::fusion::make_pair<example_keys";
+ std::cout << "::your_char>(\'0\' + data)" << std::endl << " );";
+ std::cout << std::endl << " --data;" << std::endl;
+ std::cout << " itr->emplace_left(" << std::endl << " " << (
+ " boost::fusion::make_pair<example_keys::your_uint>(data)"
+ ) << std::endl << " , boost::fusion::make_pair<example_keys";
+ std::cout << "::your_char>(\'0\' + data)" << std::endl << " );";
+ std::cout << std::endl << " }" << std::endl << " }" << std::endl;
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " MoreValues bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFMoreValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+ out_with_it(f_root);
+ std::cout << " test_f_node(f_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl;
+ std::cout << " }" << std::endl << std::endl;
+
+ put(
+ *f_root.get_right_child_ptr()->get_left_child_ptr()
+ , example_keys::your_uint()
+ , 7
+ );
+ std::cout << " put(";
+ std::cout << std::endl << (
+ " *f_root.get_right_child_ptr()->get_left_child_ptr()"
+ ) << std::endl << " , example_keys::your_uint()" << std::endl;
+ std::cout << " , 7" << std::endl << " );" << std::endl;
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " MoreValues bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFMoreValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+ out_with_it(f_root);
+ std::cout << " test_f_node(f_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " in_vals, df_vals);" << std::endl << " }" << std::endl;
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ std::cout << std::endl << " return 0;" << std::endl << '}' << std::endl;
+ std::cout << std::endl << "#if defined BOOST_MSVC" << std::endl;
+ std::cout << " #pragma warning (pop)" << std::endl;
+ std::cout << "#endif" << std::endl << std::endl;
+
+ return 0;
+}
+

Deleted: sandbox/tree_node/libs/tree_node/example/default_unconstruct_type.cpp
==============================================================================
--- sandbox/tree_node/libs/tree_node/example/default_unconstruct_type.cpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
+++ (empty file)
@@ -1,38 +0,0 @@
-// 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)
-
-#include "default_unconstruct_type.hpp"
-
-//[example__default_unconstructible_type__definitions
-default_unconstructible_example_type::default_unconstructible_example_type(
- std::size_t n
-) : number(n)
-{
-}
-
-bool default_unconstructible_example_type::operator==(std::size_t n) const
-{
- return number == n;
-}
-
-bool
- operator==(
- default_unconstructible_example_type const& lhs
- , default_unconstructible_example_type const& rhs
- )
-{
- return lhs.number == rhs.number;
-}
-
-bool
- operator<(
- default_unconstructible_example_type const& lhs
- , default_unconstructible_example_type const& rhs
- )
-{
- return lhs.number < rhs.number;
-}
-//]
-

Deleted: sandbox/tree_node/libs/tree_node/example/default_unconstruct_type.hpp
==============================================================================
--- sandbox/tree_node/libs/tree_node/example/default_unconstruct_type.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
+++ (empty file)
@@ -1,44 +0,0 @@
-// 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 LIBS_TREE_NODE_EXAMPLE_DEFAULT_UNCONSTRUCT_TYPE_HPP_INCLUDED
-#define LIBS_TREE_NODE_EXAMPLE_DEFAULT_UNCONSTRUCT_TYPE_HPP_INCLUDED
-
-#include <cstddef>
-#include <boost/config.hpp>
-
-//[example__default_unconstructible_type
-struct default_unconstructible_example_type
-{
- std::size_t number;
- explicit default_unconstructible_example_type(std::size_t n);
- bool operator==(std::size_t n) const;
-};
-//]
-
-//[example__default_unconstructible_type__operator_equal
-bool
- operator==(
- default_unconstructible_example_type const& lhs
- , default_unconstructible_example_type const& rhs
- );
-//]
-
-//[example__default_unconstructible_type__operator_less
-bool
- operator<(
- default_unconstructible_example_type const& lhs
- , default_unconstructible_example_type const& rhs
- );
-//]
-
-#if defined BOOST_TYPEOF_COMPLIANT
-#include <boost/typeof/typeof.hpp>
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-BOOST_TYPEOF_REGISTER_TYPE(default_unconstructible_example_type)
-#endif
-
-#endif // LIBS_TREE_NODE_EXAMPLE_DEFAULT_UNCONSTRUCT_TYPE_HPP_INCLUDED
-

Added: sandbox/tree_node/libs/tree_node/example/iterator_functions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/iterator_functions.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,79 @@
+// 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 LIBS_TREE_NODE_EXAMPLE_ITERATOR_FUNCTIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_ITERATOR_FUNCTIONS_HPP_INCLUDED
+
+#include <iostream>
+#include <boost/tree_node/breadth_first_iterator.hpp>
+#include <boost/tree_node/breadth_first_desc_iterator.hpp>
+#include <boost/tree_node/pre_order_iterator.hpp>
+#include <boost/tree_node/pre_order_desc_iterator.hpp>
+#include <boost/tree_node/post_order_iterator.hpp>
+#include <boost/tree_node/post_order_desc_iterator.hpp>
+#include <boost/tree_node/depth_first_iterator.hpp>
+#include <boost/tree_node/depth_first_desc_iterator.hpp>
+#include <boost/tree_node/in_order_iterator.hpp>
+#include <boost/tree_node/algorithm/dereference_iterator.hpp>
+
+template <typename NodeIterator, typename Function>
+void iterator_out(NodeIterator itr, Function f, unsigned int n)
+{
+ for (unsigned int i = 0; itr; ++itr)
+ {
+ if (!i)
+ {
+ std::cout << std::endl << " ";
+ }
+
+ f(*itr);
+
+ if (++i == n)
+ {
+ i = 0;
+ }
+ }
+}
+
+template <typename Node, typename Function>
+void iterator_out_bf_pre_post(Node const& node, Function f, unsigned int n)
+{
+ std::cout << std::endl << " emplacer[bf_vals]";
+ iterator_out(boost::tree_node::make_breadth_first_iterator(node), f, n);
+ std::cout << ';' << std::endl << " emplacer[pre_vals]";
+ iterator_out(boost::tree_node::make_pre_order_iterator(node), f, n);
+ std::cout << ';' << std::endl << " emplacer[post_vals]";
+ iterator_out(boost::tree_node::make_post_order_iterator(node), f, n);
+}
+
+template <typename Node, typename Function>
+void iterator_out_in_order(Node const& node, Function f, unsigned int n)
+{
+ std::cout << ';' << std::endl << " emplacer[in_vals]";
+ iterator_out(boost::tree_node::in_order_iterator<Node const>(node), f, n);
+}
+
+template <typename Node, typename Function>
+void iterator_out_df(Node const& node, Function f)
+{
+ std::cout << ';' << std::endl << " emplacer[df_vals]";
+
+ for (
+ boost::tree_node::depth_first_iterator<Node const> itr(node);
+ itr;
+ ++itr
+ )
+ {
+ f(
+ boost::tree_node::dereference_iterator(itr)
+ , boost::tree_node::traversal_state(itr)
+ );
+ }
+
+ std::cout << ';' << std::endl;
+}
+
+#endif // LIBS_TREE_NODE_EXAMPLE_ITERATOR_FUNCTIONS_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/example/match_predicate.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/match_predicate.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,95 @@
+// 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_TREE_NODE_EXAMPLE_MATCH_PREDICATE_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_MATCH_PREDICATE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/utility/get_iterator_second.hpp>
+#include <boost/utility/get_iterator_value_second.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+
+template <typename Node, typename Selector>
+class example_match_predicate
+{
+ typename Node::iterator _itr;
+
+ public:
+ explicit example_match_predicate(typename Node::iterator itr);
+
+ template <typename P>
+ bool operator()(P const& p) const;
+
+ private:
+ template <typename P>
+ bool _evaluate(P const& p, boost::mpl::true_) const;
+
+ template <typename P>
+ bool _evaluate(P const& p, boost::mpl::false_) const;
+};
+
+template <typename Node, typename Selector>
+example_match_predicate<Node,Selector>::example_match_predicate(
+ typename Node::iterator itr
+) : _itr(itr)
+{
+}
+
+template <typename Node, typename Selector>
+template <typename P>
+inline bool
+ example_match_predicate<Node,Selector>::operator()(P const& p) const
+{
+ return _evaluate(p, boost::is_ptr_selector<Selector>());
+}
+
+template <typename Node, typename Selector>
+template <typename P>
+inline bool
+ example_match_predicate<Node,Selector>::_evaluate(
+ P const& p
+ , boost::mpl::true_
+ ) const
+{
+#if defined BOOST_NO_SFINAE
+ return get(
+ boost::get_iterator_value_second(p)
+ , boost::tree_node::data_key()
+ ) == get(
+ boost::get_iterator_second(_itr)
+ , boost::tree_node::data_key()
+ );
+#else
+ return boost::tree_node::get<boost::tree_node::data_key>(
+ boost::get_iterator_value_second(p)
+ ) == boost::tree_node::get<boost::tree_node::data_key>(
+ boost::get_iterator_second(_itr)
+ );
+#endif
+}
+
+template <typename Node, typename Selector>
+template <typename P>
+inline bool
+ example_match_predicate<Node,Selector>::_evaluate(
+ P const& p
+ , boost::mpl::false_
+ ) const
+{
+#if defined BOOST_NO_SFINAE
+ return get(p.second, boost::tree_node::data_key()) == get(
+ _itr->second
+ , boost::tree_node::data_key()
+ );
+#else
+ return boost::tree_node::get<boost::tree_node::data_key>(
+ p.second
+ ) == boost::tree_node::get<boost::tree_node::data_key>(_itr->second);
+#endif
+}
+
+#endif // LIBS_TREE_NODE_EXAMPLE_MATCH_PREDICATE_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/example/nary_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/nary_node.cpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,588 @@
+// 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)
+
+//#define BOOST_TYPEOF_COMPLIANT
+
+#include <iterator>
+#include <iostream>
+#include <boost/config.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/typeof/nary_node.hpp>
+#include <boost/tree_node/typeof/with_count.hpp>
+#include <boost/tree_node/typeof/with_height.hpp>
+#include <boost/tree_node/typeof/with_position.hpp>
+#include <boost/tree_node/breadth_first_iterator.hpp>
+#include <boost/tree_node/pre_order_desc_iterator.hpp>
+#include <boost/tree_node/post_order_iterator.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/tree_node/typeof/with_accumulation.hpp>
+#endif
+
+#include "type_definitions.hpp"
+#include "output_preamble.hpp"
+#include "output_functions.hpp"
+#include "iterator_functions.hpp"
+
+template <typename Selector, typename Node>
+void initialize(Node& root)
+{
+ for (boost::tree_node::breadth_first_iterator<Node> itr(root); itr; ++itr)
+ {
+ BOOST_AUTO_TPL(data, get(*itr, boost::tree_node::data_key()));
+
+ if (1 < data)
+ {
+ for (std::size_t i = 0; i < data; ++i)
+ {
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ if (std::tr1::is_same<Selector,boost::slistS>::value)
+ (*itr).emplace(data - 1 - i);
+ else
+#endif
+ (*itr).emplace(i);
+ }
+ }
+ }
+}
+
+#if defined BOOST_NO_SFINAE
+template <typename DNode>
+void out_with_it(DNode const& d_node)
+{
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+}
+#else // !defined BOOST_NO_SFINAE
+template <typename DNode, typename ANode>
+void out_with_them(DNode const& d_node, ANode const& a_node)
+{
+ std::cout << std::endl << "#if defined BOOST_NO_SFINAE";
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+ std::cout << "#else // !defined BOOST_NO_SFINAE";
+ iterator_out_bf_pre_post(a_node, output_node<boost::mpl::true_>(), 2);
+ iterator_out_df(a_node, output_tree<boost::mpl::true_>(4, 7, false));
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+}
+#endif // BOOST_NO_SFINAE
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+template <typename FNode>
+void out_with_all(FNode const& f_node)
+{
+ iterator_out_bf_pre_post(f_node, output_uint_char_node(), 5);
+ iterator_out_df(f_node, output_uint_char_tree(2, 7, true));
+}
+#endif
+
+template <typename Selector>
+void example()
+{
+ typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::nary_node_gen<Selector>
+ >
+ >
+ , double
+ >
+ DNode;
+
+ DNode d_root(5.0);
+
+ initialize<Selector>(d_root);
+
+#if !defined BOOST_NO_SFINAE
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::nary_node_gen<
+ Selector
+ >
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , double
+ , void
+ , AccuHeightKey
+ >
+ ANode;
+
+ ANode a_root(5.0);
+
+ initialize<Selector>(a_root);
+#endif // BOOST_NO_SFINAE
+
+ output_copyright_and_config_preamble();
+ std::cout << std::endl << "#include <iterator>";
+ output_header_and_type_preamble();
+ std::cout << "#include <boost/tree_node/typeof/nary_node.hpp>";
+ std::cout << std::endl << std::endl << "template <typename Selector>";
+ std::cout << std::endl << "void test()" << std::endl << '{' << std::endl;
+#if !defined BOOST_NO_SFINAE
+ std::cout << "#if defined BOOST_NO_SFINAE" << std::endl;
+#endif
+ std::cout << " typedef boost::tree_node::with_height<" << std::endl << (
+ " boost::tree_node::with_position_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_gen<"
+ ) << std::endl << (
+ " boost::tree_node::nary_node_gen<Selector>"
+ ) << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , double" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " ANode;" << std::endl;
+#if !defined BOOST_NO_SFINAE
+ std::cout << "#else" << std::endl << (
+ " typedef boost::tree_node::with_accumulation<"
+ ) << std::endl << " boost::tree_node::with_height_gen<";
+ std::cout << std::endl << (
+ " boost::tree_node::with_accumulation_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_position_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_accumulation_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_gen<"
+ ) << std::endl << " ";
+ std::cout << "boost::tree_node::with_accumulation_gen<" << std::endl << (
+ " "
+ ) << "boost::tree_node::nary_node_gen<" << std::endl;
+ std::cout << " Selector";
+ std::cout << std::endl << " >";
+ std::cout << std::endl << " >";
+ std::cout << std::endl << " >";
+ std::cout << std::endl << " , AccuAccuKey";
+ std::cout << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , double" << std::endl;
+ std::cout << " , void" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " ANode;" << std::endl << "#endif" << std::endl;
+#endif // BOOST_NO_SFINAE
+ output_container_type_preamble();
+ std::cout << std::endl << " ANode a_root(5.0);" << std::endl;
+ std::cout << std::endl << " BOOST_CHECK(" << std::endl;
+ std::cout << " !a_root.get_parent_ptr()" << std::endl;
+ std::cout << "// , \"Parent member uninitialized.\"" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " for (" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<ANode> itr(a_root);"
+ ) << std::endl << " itr;" << std::endl << " ++itr";
+ std::cout << std::endl << " )" << std::endl << " {" << std::endl << (
+ " BOOST_AUTO(data, get(*itr, boost::tree_node::data_key"
+ ) << "()));" << std::endl << std::endl << " if (1 < data)";
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " for (std::size_t i = 0; i < data; ++i)";
+ std::cout << std::endl << " {" << std::endl << (
+ " typename ANode::iterator child_itr("
+ ) << std::endl << (
+ "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION"
+ ) << std::endl << (
+ " (std::tr1::is_same<Selector,boost::slistS>::value"
+ ) << ") ? (" << std::endl;
+ std::cout << " (*itr).emplace(data - 1 - i)";
+ std::cout << std::endl << " ) :" << std::endl;
+ std::cout << "#endif" << std::endl;
+ std::cout << " (*itr).emplace(i)";
+ std::cout << std::endl << " );" << std::endl << (
+ " typename ANode::const_pointer const_child(&*child_itr"
+ ) << ");" << std::endl << " BOOST_CHECK(" << std::endl;
+ std::cout << " (*child_itr).get_parent_ptr() == &*itr";
+ std::cout << std::endl << (
+ "// , \"Ctor not linking child to parent.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " (" << std::endl << (
+ " (*child_itr).get_parent_ptr()"
+ ) << std::endl << (
+ " ) == (*const_child).get_parent_ptr()"
+ ) << std::endl;
+ std::cout << "// , \"Why are these pointers different?\"";
+ std::cout << std::endl << " );" << std::endl << std::endl;
+ std::cout << " {" << std::endl << (
+ " typename ANode::iterator c_itr = (*itr).begin();"
+ ) << std::endl << std::endl << (
+ "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION"
+ ) << std::endl << " " << (
+ "if (!std::tr1::is_same<Selector,boost::slistS>::value)"
+ ) << std::endl << "#endif" << std::endl;
+ std::cout << " std::advance(c_itr, i);" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " &*child_itr == &*c_itr" << std::endl;
+ std::cout << "// " << (
+ ", \"Ctor not linking parent to child.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " }" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl << " }";
+ std::cout << std::endl << std::endl << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals, df_";
+ std::cout << "vals);" << std::endl << " }" << std::endl << std::endl;
+
+ {
+ typename DNode::iterator d_child_itr(
+ (*(++d_root.begin())).insert(d_root)
+ );
+#if !defined BOOST_NO_SFINAE
+ typename ANode::iterator a_child_itr(
+ (*(++a_root.begin())).insert(a_root)
+ );
+#endif
+
+ std::cout << " {" << std::endl << " ANode a_copy(a_root);";
+ std::cout << std::endl << (
+ " boost::tree_node::breadth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " bf_root_itr(a_root), bf_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::breadth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::pre_order_iterator<ANode const>"
+ ) << std::endl << (
+ " pre_root_itr(a_root), pre_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::pre_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::post_order_iterator<ANode const>"
+ ) << std::endl << (
+ " post_root_itr(a_root), post_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::post_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " post_d_root_itr(a_root), post_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::depth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " df_root_itr(a_root), df_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::depth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " df_d_root_itr(a_root), df_d_copy_itr(a_copy);"
+ ) << std::endl << std::endl << (
+ " BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(bf_d_root_itr, bf_d_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(pre_root_itr, pre_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(pre_d_root_itr, pre_d_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(post_root_itr, post_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(post_d_root_itr, post_d_copy_itr));"
+ ) << std::endl << (
+ " BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(df_d_root_itr, df_d_copy_itr));"
+ ) << std::endl << " }" << std::endl << std::endl << " {";
+ std::cout << std::endl << (
+ " typename ANode::iterator a_child_itr("
+ ) << std::endl << " (*(++a_root.begin())).insert(a_root)";
+ std::cout << std::endl << " );" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals";
+ std::cout << ", df_vals);" << std::endl << std::endl;
+
+ d_root = *d_child_itr;
+#if !defined BOOST_NO_SFINAE
+ a_root = *a_child_itr;
+#endif
+ std::cout << " a_root = *a_child_itr;" << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals";
+ std::cout << ", df_vals);" << std::endl << std::endl;
+
+ d_child_itr = d_root.begin();
+ std::advance(d_child_itr, 4);
+ *(*d_child_itr).begin() = d_root;
+#if !defined BOOST_NO_SFINAE
+ a_child_itr = a_root.begin();
+ std::advance(a_child_itr, 4);
+ *(*a_child_itr).begin() = a_root;
+#endif
+ }
+
+ std::cout << " a_child_itr = a_root.begin();" << std::endl;
+ std::cout << " std::advance(a_child_itr, 4);" << std::endl;
+ std::cout << " a_child_itr = (*a_child_itr).begin();" << std::endl;
+ std::cout << " *a_child_itr = a_root;" << std::endl;
+ std::cout << " test_node(*a_child_itr, bf_vals, pre_vals,";
+ std::cout << " post_vals, df_vals);" << std::endl << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals, df_";
+ std::cout << "vals);" << std::endl << " }" << std::endl << std::endl;
+
+ {
+ typename DNode::iterator d_child_itr(d_root.begin());
+
+ std::advance(d_child_itr, 3);
+ (*d_child_itr).clear();
+ }
+
+#if !defined BOOST_NO_SFINAE
+ {
+ typename ANode::iterator a_child_itr(a_root.begin());
+
+ std::advance(a_child_itr, 3);
+ (*a_child_itr).clear();
+ }
+#endif
+
+ std::cout << " {" << std::endl << (
+ " typename ANode::iterator a_child_itr(a_root.begin());"
+ ) << std::endl << std::endl << " std::advance(a_child_itr, 3);";
+ std::cout << std::endl << " (*a_child_itr).clear();" << std::endl;
+ std::cout << std::endl << " Values bf_vals, pre_vals, post_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+#if defined BOOST_NO_SFINAE
+ out_with_it(d_root);
+#else
+ out_with_them(d_root, a_root);
+#endif
+ std::cout << " test_node(a_root, bf_vals, pre_vals, post_vals, df_";
+ std::cout << "vals);" << std::endl << " }" << std::endl;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::nary_node_gen<Selector>
+ , DataMap
+ , void
+ , AccuYourUintKey
+ >
+ FNode;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ BOOST_AUTO_TPL(
+ data
+ , boost::tree_node::get<example_keys::your_uint>(*itr)
+ );
+
+ if (1 < data)
+ {
+ for (unsigned int i = 0; i < data; ++i)
+ {
+ if (std::tr1::is_same<Selector,boost::slistS>::value)
+ {
+ (*itr).emplace(
+ boost::fusion::make_pair<example_keys::your_uint>(
+ data - 1 - i
+ )
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + data - 1 - i
+ )
+ );
+ }
+ else
+ {
+ (*itr).emplace(
+ boost::fusion::make_pair<example_keys::your_uint>(i)
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + i
+ )
+ );
+ }
+ }
+ }
+ }
+
+ std::cout << std::endl << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION";
+ std::cout << std::endl << (
+ " typedef boost::tree_node::with_accumulation<"
+ ) << std::endl << (
+ " boost::tree_node::nary_node_gen<Selector>"
+ ) << std::endl << " , DataMap" << std::endl;
+ std::cout << " , void" << std::endl;
+ std::cout << " , AccuYourUintKey" << std::endl;
+ std::cout << " >" << std::endl << " FNode;";
+ output_container_fused_type_preamble();
+ std::cout << std::endl << " FNode f_root(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::your_uint>(5)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::your_char>(\'5\')"
+ ) << std::endl << " );" << std::endl << std::endl;
+ std::cout << " for (" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<FNode> itr(f_root);"
+ ) << std::endl << " itr;" << std::endl << " ++itr";
+ std::cout << std::endl << " )" << std::endl << " {" << std::endl;
+ std::cout << " BOOST_AUTO_TPL(" << std::endl << " data";
+ std::cout << std::endl << (
+ " , boost::tree_node::get<example_keys::your_uint>(*itr)"
+ ) << std::endl << " );" << std::endl << std::endl;
+ std::cout << " if (1 < data)" << std::endl << " {";
+ std::cout << std::endl << (
+ " for (unsigned int i = 0; i < data; ++i)"
+ ) << std::endl << " {" << std::endl << (
+ " if (std::tr1::is_same<Selector,boost::slistS>::value)"
+ ) << std::endl << " {" << std::endl;
+ std::cout << " (*itr).emplace(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::your_"
+ ) << "uint>(" << std::endl << " data - 1 - i";
+ std::cout << std::endl << " )" << std::endl << (
+ " , boost::fusion::make_pair<example_keys::your_"
+ ) << "char>(" << std::endl << (
+ " \'0\' + data - 1 - i"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " );" << std::endl << " }";
+ std::cout << std::endl << " else" << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " (*itr).emplace(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::your_"
+ ) << "uint>(i)" << std::endl << " , boost::" << (
+ "fusion::make_pair<example_keys::your_char>("
+ ) << std::endl << " \'0\' + i" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " );" << std::endl;
+ std::cout << " }" << std::endl;
+ std::cout << " }" << std::endl;
+ std::cout << std::endl << " }" << std::endl << " }" << std::endl;
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " MoreValues bf_vals, pre_vals, post_vals;";
+ std::cout << std::endl << " DFMoreValues df_vals;" << std::endl;
+ std::cout << " DFEmplacer emplacer;" << std::endl;
+ out_with_all(f_root);
+ std::cout << " test_f_node(f_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " df_vals);" << std::endl << std::endl << (
+ " typename FNode::iterator f_child_itr(f_root.begin());"
+ ) << std::endl << std::endl << " std::advance(f_child_itr, 3);";
+ std::cout << std::endl << " f_child_itr = (*f_child_itr).begin();";
+ std::cout << std::endl << " std::advance(f_child_itr, 2);";
+ std::cout << std::endl << " " << (
+ "boost::tree_node::put(*f_child_itr, example_keys::your_uint(), 7);"
+ ) << std::endl << " bf_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+
+ {
+ typename FNode::iterator f_child_itr(f_root.begin());
+
+ std::advance(f_child_itr, 3);
+ f_child_itr = (*f_child_itr).begin();
+ std::advance(f_child_itr, 2);
+ put(*f_child_itr, example_keys::your_uint(), 7);
+ }
+
+ out_with_all(f_root);
+ std::cout << " test_f_node(f_root, bf_vals, pre_vals, post_vals,";
+ std::cout << " df_vals);" << std::endl << " }" << std::endl;
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ std::cout << '}' << std::endl << std::endl << "#if defined BOOST_MSVC";
+ std::cout << std::endl << " #pragma warning (pop)" << std::endl;
+ std::cout << "#endif" << std::endl << std::endl;
+ std::cout << "#if defined BOOST_TYPEOF_EMULATION" << std::endl << (
+ "#include <boost/typeof/boost/ptr_container/ptr_vector.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/ptr_container/ptr_deque.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/ptr_container/ptr_list.hpp>"
+ ) << std::endl << "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION";
+ std::cout << std::endl << (
+ "#include <boost/typeof/boost/container/vector.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/container/stable_vector.hpp>"
+ ) << std::endl << "#include <boost/typeof/boost/container/deque.hpp>";
+ std::cout << std::endl << (
+ "#include <boost/typeof/boost/container/list.hpp>"
+ ) << std::endl << "#include <boost/typeof/boost/container/slist.hpp>";
+ std::cout << std::endl << (
+ "#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION"
+ ) << std::endl << "#endif // BOOST_TYPEOF_EMULATION" << std::endl;
+ std::cout << std::endl << "int test_main(int argc, char** argv)";
+ std::cout << std::endl << '{' << std::endl;
+ std::cout << " test<boost::ptr_vecS>();" << std::endl;
+ std::cout << " test<boost::ptr_dequeS>();" << std::endl;
+ std::cout << " test<boost::ptr_listS>();" << std::endl << (
+ "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION"
+ ) << std::endl << (
+ " test<boost::vector_selector<boost::mpl::true_> >();"
+ ) << std::endl << " test<boost::stable_vecS>();" << std::endl;
+ std::cout << " test<boost::deque_selector<boost::mpl::true_> >();";
+ std::cout << std::endl << (
+ " test<boost::list_selector<boost::mpl::true_> >();"
+ ) << std::endl << " test<boost::slistS>();" << std::endl;
+ std::cout << "#endif" << std::endl << std::endl;
+ std::cout << " return 0;" << std::endl << '}' << std::endl << std::endl;
+}
+
+#if defined BOOST_TYPEOF_EMULATION
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/ptr_container/ptr_vector.hpp>
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/container/slist.hpp>
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // BOOST_TYPEOF_EMULATION
+
+int main()
+{
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ example<boost::ptr_vecS>();
+#else
+ example<boost::slistS>();
+#endif
+ return 0;
+}
+

Added: sandbox/tree_node/libs/tree_node/example/output_functions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/output_functions.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,195 @@
+// 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 LIBS_TREE_NODE_EXAMPLE_OUTPUT_FUNCTIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_OUTPUT_FUNCTIONS_HPP_INCLUDED
+
+#include <iostream>
+#include <boost/mpl/bool.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/data_key.hpp>
+#include <boost/tree_node/count_key.hpp>
+#include <boost/tree_node/height_key.hpp>
+#include <boost/tree_node/position_key.hpp>
+#include <boost/tree_node/accumulation_key.hpp>
+#include "type_definitions.hpp"
+#include "output_tabs.hpp"
+
+template <typename Node>
+void output_data_height_and_count(Node const& node, bool b, boost::mpl::false_)
+{
+ std::cout << get(node, boost::tree_node::data_key());
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << get(node, boost::tree_node::height_key());
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << get(node, boost::tree_node::count_key());
+}
+
+template <typename Node>
+void output_data_height_and_count(Node const& node, bool b, boost::mpl::true_)
+{
+ std::cout << boost::tree_node::get<boost::tree_node::data_key>(node);
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << boost::tree_node::get<boost::tree_node::height_key>(node);
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << boost::tree_node::get<boost::tree_node::count_key>(node);
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ node
+ );
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << boost::tree_node::get<AccuHeightKey>(node);
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << boost::tree_node::get<AccuCountKey>(node);
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << boost::tree_node::get<AccuAccuKey>(node);
+}
+
+template <typename Node>
+void output_uint_and_char(Node const& node, bool b)
+{
+ std::cout << boost::tree_node::get<example_keys::your_uint>(
+ node
+ ) << (b ? ", \'" : ",\'") << static_cast<char>(
+ boost::tree_node::get<example_keys::your_char>(node)
+ ) << (b ? "\', " : "\',") << boost::tree_node::get<AccuYourUintKey>(node);
+}
+
+template <typename IncludeAccumulations>
+struct output_node
+{
+ template <typename Node>
+ void operator()(Node const& node) const
+ {
+ std::cout << '(';
+ output_data_height_and_count(node, true, IncludeAccumulations());
+ std::cout << ')';
+ }
+
+ template <typename Key, typename Node>
+ void operator()(Key const& key, Node const& node) const
+ {
+ std::cout << "(\"" << key << "\", ";
+ output_data_height_and_count(node, true, IncludeAccumulations());
+ std::cout << ')';
+ }
+};
+
+struct output_uint_char_node
+{
+ template <typename Node>
+ void operator()(Node const& node) const
+ {
+ std::cout << '(';
+ output_uint_and_char(node, true);
+ std::cout << ')';
+ }
+
+ template <typename Key, typename Node>
+ void operator()(Key const& key, Node const& node) const
+ {
+ std::cout << "(\"" << key << "\", ";
+ output_uint_and_char(node, true);
+ std::cout << ')';
+ }
+};
+
+template <typename IncludeAccumulations>
+class output_tree
+{
+ unsigned int _ply_limit;
+ unsigned int _tab_limit;
+ bool _is_4_long;
+
+ public:
+ output_tree(unsigned int ply_limit, unsigned int tab_limit, bool is_4_long)
+ : _ply_limit(ply_limit), _tab_limit(tab_limit), _is_4_long(is_4_long)
+ {
+ }
+
+ template <typename Node>
+ void
+ operator()(
+ Node const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ std::cout << std::endl;
+ output_tabs(state, _ply_limit, _tab_limit, _is_4_long);
+ output_data_height_and_count(node, true, IncludeAccumulations());
+ std::cout << ')';
+ }
+
+ template <typename Key, typename Node>
+ void
+ operator()(
+ Key const& key
+ , Node const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ std::cout << std::endl;
+ output_tabs(state, _ply_limit, _tab_limit, _is_4_long);
+ std::cout << '\"' << key << "\",";
+ if (_is_4_long) std::cout << ' ';
+ output_data_height_and_count(node, _is_4_long, IncludeAccumulations());
+ std::cout << ')';
+ }
+};
+
+class output_uint_char_tree
+{
+ unsigned int _ply_limit;
+ unsigned int _tab_limit;
+ bool _is_4_long;
+
+ public:
+ output_uint_char_tree(
+ unsigned int ply_limit
+ , unsigned int tab_limit
+ , bool is_4_long
+ ) : _ply_limit(ply_limit), _tab_limit(tab_limit), _is_4_long(is_4_long)
+ {
+ }
+
+ template <typename Node>
+ void
+ operator()(
+ Node const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ std::cout << std::endl;
+ output_tabs(state, _ply_limit, _tab_limit, _is_4_long);
+ output_uint_and_char(node, _is_4_long);
+ std::cout << ')';
+ }
+
+ template <typename Key, typename Node>
+ void
+ operator()(
+ Key const& key
+ , Node const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ std::cout << std::endl;
+ output_tabs(state, _ply_limit, _tab_limit, _is_4_long);
+ std::cout << '\"' << key << "\",";
+ if (_is_4_long) std::cout << ' ';
+ output_uint_and_char(node, _is_4_long);
+ std::cout << ')';
+ }
+};
+
+#if defined BOOST_TYPEOF_COMPLIANT
+#include <boost/typeof/typeof.hpp>
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(output_node, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(output_tree, 1)
+#endif
+
+#endif // LIBS_TREE_NODE_EXAMPLE_OUTPUT_FUNCTIONS_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/example/output_preamble.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/output_preamble.cpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,219 @@
+// 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)
+
+#include <iostream>
+#include <boost/tree_node/preprocessor.hpp>
+#include "output_preamble.hpp"
+
+void output_copyright_and_config_preamble()
+{
+ std::cout << "// Copyright (C) 2012 Cromwell D. Enage" << std::endl << (
+ "// Distributed under the Boost Software License, Version 1.0."
+ ) << std::endl << "// (See accompanying file LICENSE_1_0.txt or copy at";
+ std::cout << std::endl << "// http://www.boost.org/LICENSE_1_0.txt)";
+ std::cout << std::endl << std::endl << "//#define BOOST_TYPEOF_COMPLIANT";
+ std::cout << std::endl << std::endl << "#include <boost/config.hpp>";
+ std::cout << std::endl << std::endl << "#if defined BOOST_MSVC";
+ std::cout << std::endl << " #pragma warning (push)" << std::endl;
+ std::cout << " #pragma warning (disable : 4996) // fn called w/params";
+ std::cout << " that may be unsafe" << std::endl << "#endif" << std::endl;
+}
+
+void output_header_and_type_preamble()
+{
+ std::cout << std::endl << "#include <boost/typeof/typeof.hpp>";
+ std::cout << std::endl << "#include <boost/tuple/tuple.hpp>" << std::endl;
+ std::cout << "#include <boost/utility/get_reference.hpp>" << std::endl;
+ std::cout << "#include <boost/container_gen/selectors.hpp>" << std::endl;
+ std::cout << "#include <boost/container_gen/container_gen.hpp>";
+ std::cout << std::endl << (
+ "#include <boost/container_gen/emplace_function_gen.hpp>"
+ ) << std::endl << (
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ "#include <boost/tree_node/preprocessor.hpp>"
+ ) << std::endl << (
+#endif
+ "#include <boost/tree_node/typeof/with_count.hpp>"
+ ) << std::endl << (
+ "#include <boost/tree_node/typeof/with_height.hpp>"
+ ) << std::endl << (
+ "#include <boost/tree_node/typeof/with_position.hpp>"
+ ) << std::endl << std::endl << "#if !defined BOOST_NO_SFINAE" << std::endl;
+ std::cout << "#include <boost/tree_node/typeof/with_accumulation.hpp>";
+ std::cout << std::endl << "#endif" << std::endl << std::endl;
+ std::cout << "#include \"../example/type_definitions.hpp\"" << std::endl;
+ std::cout << "#include \"iterator_functions.hpp\"" << std::endl;
+ std::cout << std::endl << (
+ "typedef boost::emplace_function_gen<boost::dequeS>::type"
+ ) << std::endl << " DFEmplacer;" << std::endl << std::endl;
+}
+
+void output_container_type_preamble()
+{
+ std::cout << std::endl << " typedef typename boost::container_gen<";
+ std::cout << std::endl << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::data_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::height_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::count_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#if !defined BOOST_NO_SFINAE" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " boost::tree_node::accumulation_key<>"
+ ) << std::endl << (
+ " >(boost::get_reference<ANode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuHeightKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuCountKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuAccuKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " Values;" << std::endl;
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << " , BOOST_TYPEOF_TPL(";
+ std::cout << std::endl << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::data_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::height_key()";
+ std::cout << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl;
+ std::cout << " get(" << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << (
+ " , boost::tree_node::count_key()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#if !defined BOOST_NO_SFINAE" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " boost::tree_node::accumulation_key<>"
+ ) << std::endl << (
+ " >(boost::get_reference<ANode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuHeightKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuCountKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuAccuKey>("
+ ) << std::endl << (
+ " boost::get_reference<ANode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFValues;" << std::endl;
+}
+
+void output_container_fused_type_preamble()
+{
+ std::cout << std::endl << " typedef typename boost::container_gen<";
+ std::cout << std::endl << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_uint"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_char"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuYourUintKey>("
+ ) << std::endl << (
+ " boost::get_reference<FNode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl << " >";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << " MoreValues;" << std::endl;
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << " , BOOST_TYPEOF_TPL(";
+ std::cout << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_uint"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<"
+ ) << std::endl << (
+ " example_keys::your_char"
+ ) << std::endl << (
+ " >(boost::get_reference<FNode const>())"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " , BOOST_TYPEOF_TPL(" << std::endl << (
+ " boost::tree_node::get<AccuYourUintKey>("
+ ) << std::endl << (
+ " boost::get_reference<FNode const>()"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " )" << std::endl << " >";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << " DFMoreValues;" << std::endl;
+}
+

Added: sandbox/tree_node/libs/tree_node/example/output_preamble.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/output_preamble.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,15 @@
+// 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_TREE_NODE_EXAMPLE_OUTPUT_PREAMBLE_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_OUTPUT_PREAMBLE_HPP_INCLUDED
+
+void output_copyright_and_config_preamble();
+void output_header_and_type_preamble();
+void output_container_type_preamble();
+void output_container_fused_type_preamble();
+
+#endif // LIBS_TREE_NODE_EXAMPLE_OUTPUT_PREAMBLE_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/example/output_tabs.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/output_tabs.cpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,60 @@
+// 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)
+
+#include <iostream>
+#include <algorithm>
+#include <boost/assert.hpp>
+#include "output_tabs.hpp"
+
+void
+ output_tabs(
+ boost::tree_node::traversal_state state
+ , unsigned int& ply_limit
+ , unsigned int tab_limit
+ , bool is_4_long
+ )
+{
+ switch (state)
+ {
+ case boost::tree_node::pre_order_traversal:
+ {
+ ++ply_limit;
+
+ for (
+ unsigned int ply = 0;
+ ply < (std::min)(ply_limit, tab_limit);
+ ++ply
+ )
+ {
+ std::cout << (is_4_long ? " " : " ");
+ }
+
+ std::cout << "(boost::tree_node::pre_order_traversal, ";
+ break;
+ }
+
+ case boost::tree_node::post_order_traversal:
+ {
+ for (
+ unsigned int ply = 0;
+ ply < (std::min)(ply_limit, tab_limit);
+ ++ply
+ )
+ {
+ std::cout << (is_4_long ? " " : " ");
+ }
+
+ std::cout << "(boost::tree_node::post_order_traversal, ";
+ --ply_limit;
+ break;
+ }
+
+ default:
+ {
+ BOOST_ASSERT(false);
+ }
+ }
+}
+

Added: sandbox/tree_node/libs/tree_node/example/output_tabs.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/output_tabs.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,20 @@
+// 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 LIBS_TREE_NODE_EXAMPLE_OUTPUT_TABS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_OUTPUT_TABS_HPP_INCLUDED
+
+#include <boost/tree_node/traversal_state.hpp>
+
+void
+ output_tabs(
+ boost::tree_node::traversal_state state
+ , unsigned int& ply_limit
+ , unsigned int tab_limit
+ , bool is_4_long
+ );
+
+#endif // LIBS_TREE_NODE_EXAMPLE_OUTPUT_TABS_HPP_INCLUDED
+

Deleted: sandbox/tree_node/libs/tree_node/example/show_functions.cpp
==============================================================================
--- sandbox/tree_node/libs/tree_node/example/show_functions.cpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
+++ (empty file)
@@ -1,69 +0,0 @@
-// 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)
-
-#include <boost/assert.hpp>
-#include "show_functions.hpp"
-
-//[example__show_tabs
-void
- show_tabs(
- boost::tree_node::traversal_state state
- , unsigned int& ply_limit
- )
-{
- switch (state)
- {
- case boost::tree_node::pre_order_traversal:
- {
- ++ply_limit;
- std::cout << " ";
-
- for (unsigned int ply = 0; ply < ply_limit; ++ply)
- {
- std::cout << " ";
- }
-
- std::cout << "(boost::tree_node::pre_order_traversal, ";
- break;
- }
-
- case boost::tree_node::post_order_traversal:
- {
- std::cout << " ";
-
- for (unsigned int ply = 0; ply < ply_limit; ++ply)
- {
- std::cout << " ";
- }
-
- std::cout << "(boost::tree_node::post_order_traversal, ";
- --ply_limit;
- break;
- }
-
- default:
- {
- BOOST_ASSERT(false);
- }
- }
-}
-//]
-
-show_number_tree::show_number_tree() : ply_limit(1)
-{
-}
-
-show_key_and_number_tree::show_key_and_number_tree() : ply_limit(1)
-{
-}
-
-show_data_tree::show_data_tree() : ply_limit(1)
-{
-}
-
-show_key_and_data_tree::show_key_and_data_tree() : ply_limit(1)
-{
-}
-

Deleted: sandbox/tree_node/libs/tree_node/example/show_functions.hpp
==============================================================================
--- sandbox/tree_node/libs/tree_node/example/show_functions.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
+++ (empty file)
@@ -1,160 +0,0 @@
-// 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 LIBS_TREE_NODE_EXAMPLE_SHOW_FUNCTIONS_HPP_INCLUDED
-#define LIBS_TREE_NODE_EXAMPLE_SHOW_FUNCTIONS_HPP_INCLUDED
-
-#include <iostream>
-#include <boost/tree_node/traversal_state.hpp>
-#include <boost/tree_node/algorithm/dereference_iterator.hpp>
-
-void
- show_tabs(
- boost::tree_node::traversal_state state
- , unsigned int& ply_limit
- );
-
-//[example__show_number
-template <typename Node>
-void show_number(Node const& node)
-{
- std::cout << ", " << node.get_data().number;
-}
-//]
-
-//[example__show_number_tree
-class show_number_tree
-{
- unsigned int ply_limit;
-
- public:
- show_number_tree();
-
- template <typename Node>
- void
- operator()(
- Node const& node
- , boost::tree_node::traversal_state state
- )
- {
- show_tabs(state, ply_limit);
- std::cout << node.get_data().number << ')' << std::endl;
- }
-};
-//]
-
-//[example__show_key_and_number
-template <typename Key, typename Node>
-void show_key_and_number(Key const& key, Node const& node)
-{
- std::cout << "(\"" << key << "\", " << node.get_data().number << ')';
-}
-//]
-
-//[example__show_key_and_number_tree
-class show_key_and_number_tree
-{
- unsigned int ply_limit;
-
- public:
- show_key_and_number_tree();
-
- template <typename Iterator>
- void
- operator()(
- Iterator const& itr
- , boost::tree_node::traversal_state state
- )
- {
- show_tabs(state, ply_limit);
- std::cout << '\"' << itr->first << "\", ";
- std::cout << boost::tree_node::dereference_iterator(
- itr
- ).get_data().number;
- std::cout << ')' << std::endl;
- }
-};
-//]
-
-//[example__show_data
-template <typename Node>
-void show_data(Node const& node)
-{
-#if 0
- std::cout << ", \"" << node.get_data() << '\"';
-#else
- std::cout << "(\"" << node.get_data() << "\", " << node.get_height();
- std::cout << ", " << node.get_count() << ')';
-#endif
-}
-//]
-
-//[example__show_data_tree
-class show_data_tree
-{
- unsigned int ply_limit;
-
- public:
- show_data_tree();
-
- template <typename Node>
- void
- operator()(
- Node const& node
- , boost::tree_node::traversal_state state
- )
- {
- show_tabs(state, ply_limit);
- std::cout << '\"' << node.get_data() << "\", " << node.get_height();
- std::cout << ", " << node.get_count() << ')' << std::endl;
- }
-};
-//]
-
-//[example__show_key_and_data
-template <typename Key, typename Node>
-void show_key_and_data(Key const& key, Node const& node)
-{
- std::cout << "(\"" << key << "\", \"" << node.get_data() << "\", ";
- std::cout << node.get_height() << ", " << node.get_count() << ')';
-}
-//]
-
-//[example__show_key_and_data_tree
-class show_key_and_data_tree
-{
- unsigned int ply_limit;
-
- public:
- show_key_and_data_tree();
-
- template <typename Iterator>
- void
- operator()(
- Iterator const& itr
- , boost::tree_node::traversal_state state
- )
- {
- show_tabs(state, ply_limit);
- std::cout << '\"' << itr->first << "\", \"";
- std::cout << boost::tree_node::dereference_iterator(itr).get_data();
- std::cout << "\", ";
- std::cout << boost::tree_node::dereference_iterator(itr).get_height();
- std::cout << ", ";
- std::cout << boost::tree_node::dereference_iterator(itr).get_count();
- std::cout << ')' << std::endl;
- }
-};
-//]
-
-#if defined BOOST_TYPEOF_COMPLIANT
-#include <boost/typeof/typeof.hpp>
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-BOOST_TYPEOF_REGISTER_TYPE(show_data_tree)
-BOOST_TYPEOF_REGISTER_TYPE(show_key_and_data_tree)
-#endif
-
-#endif // LIBS_TREE_NODE_EXAMPLE_SHOW_FUNCTIONS_HPP_INCLUDED
-

Deleted: sandbox/tree_node/libs/tree_node/example/showcase_assoc_iterators.hpp
==============================================================================
--- sandbox/tree_node/libs/tree_node/example/showcase_assoc_iterators.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
+++ (empty file)
@@ -1,104 +0,0 @@
-// 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 LIBS_TREE_NODE_EXAMPLE_SHOWCASE_ASSOC_ITERATORS_HPP_INCLUDED
-#define LIBS_TREE_NODE_EXAMPLE_SHOWCASE_ASSOC_ITERATORS_HPP_INCLUDED
-
-#include <iostream>
-#include <boost/typeof/typeof.hpp>
-#include <boost/tree_node/typeof/breadth_first_desc_iterator.hpp>
-#include <boost/tree_node/typeof/pre_order_desc_iterator.hpp>
-#include <boost/tree_node/typeof/post_order_desc_iterator.hpp>
-#include <boost/tree_node/typeof/depth_first_desc_iterator.hpp>
-#include <boost/tree_node/traversal_state.hpp>
-#include <boost/tree_node/algorithm/dereference_iterator.hpp>
-
-//[example__showcase_associative_iterators
-template <
- typename Node
- , typename Function1
- , typename Function2
- , typename Function4
- , typename Function3
->
-void
- showcase_associative_iterators(
- Node const& root
- , Function1 show1
- , Function2 show2
- , Function3 show3
- , Function4 show4
- )
-{
- std::cout << " Breadth-first: ";
- boost::tree_node::breadth_first_iterate(root, show1);
- std::cout << std::endl << " sans root: ";
-
- for (
- BOOST_AUTO_TPL(
- itr
- , boost::tree_node::make_breadth_first_descendant_iterator(root)
- );
- itr;
- ++itr
- )
- {
- show3(itr->first, boost::tree_node::dereference_iterator(itr));
- }
-
- std::cout << std::endl << " Pre-order: ";
- boost::tree_node::pre_order_iterate(root, show1);
- std::cout << std::endl << " sans root: ";
-
- for (
- BOOST_AUTO_TPL(
- itr
- , boost::tree_node::make_pre_order_descendant_iterator(root)
- );
- itr;
- ++itr
- )
- {
- show3(itr->first, boost::tree_node::dereference_iterator(itr));
- }
-
- std::cout << std::endl << " Post-order: ";
- boost::tree_node::post_order_iterate(root, show1);
- std::cout << std::endl << " sans root: ";
-
- for (
- BOOST_AUTO_TPL(
- itr
- , boost::tree_node::make_post_order_descendant_iterator(root)
- );
- itr;
- ++itr
- )
- {
- show3(itr->first, boost::tree_node::dereference_iterator(itr));
- }
-
- std::cout << std::endl << " Depth-first:" << std::endl;
- boost::tree_node::depth_first_iterate(root, show2);
- std::cout << std::endl << " sans root:" << std::endl;
-
- for (
- BOOST_AUTO_TPL(
- itr
- , boost::tree_node::make_depth_first_descendant_iterator(root)
- );
- itr;
- ++itr
- )
- {
- show4(itr, boost::tree_node::traversal_state(itr));
- }
-
- std::cout << std::endl;
-}
-//]
-
-#endif // LIBS_TREE_NODE_EXAMPLE_SHOWCASE_ASSOC_ITERATORS_HPP_INCLUDED
-

Deleted: sandbox/tree_node/libs/tree_node/example/showcase_iterators.hpp
==============================================================================
--- sandbox/tree_node/libs/tree_node/example/showcase_iterators.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
+++ (empty file)
@@ -1,62 +0,0 @@
-// 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 LIBS_TREE_NODE_EXAMPLE_SHOWCASE_ITERATORS_HPP_INCLUDED
-#define LIBS_TREE_NODE_EXAMPLE_SHOWCASE_ITERATORS_HPP_INCLUDED
-
-#include <iostream>
-#include <boost/tree_node/breadth_first_iterator.hpp>
-#include <boost/tree_node/breadth_first_desc_iterator.hpp>
-#include <boost/tree_node/pre_order_iterator.hpp>
-#include <boost/tree_node/pre_order_desc_iterator.hpp>
-#include <boost/tree_node/post_order_iterator.hpp>
-#include <boost/tree_node/post_order_desc_iterator.hpp>
-#include <boost/tree_node/depth_first_iterator.hpp>
-#include <boost/tree_node/depth_first_desc_iterator.hpp>
-#include <boost/tree_node/in_order_iterator.hpp>
-
-//[example__showcase_iterators
-template <typename Node, typename Function1, typename Function2>
-void
- showcase_iterators(
- Node const& root
- , Function1 show1
- , Function2 show2
- )
-{
- std::cout << " Breadth-first: ";
- boost::tree_node::breadth_first_iterate(root, show1);
- std::cout << std::endl << " sans root: ";
- boost::tree_node::breadth_first_iterate_descendants(root, show1);
- std::cout << std::endl << " Pre-order: ";
- boost::tree_node::pre_order_iterate(root, show1);
- std::cout << std::endl << " sans root: ";
- boost::tree_node::pre_order_iterate_descendants(root, show1);
- std::cout << std::endl << " Post-order: ";
- boost::tree_node::post_order_iterate(root, show1);
- std::cout << std::endl << " sans root: ";
- boost::tree_node::post_order_iterate_descendants(root, show1);
- std::cout << std::endl << " Depth-first:" << std::endl;
- boost::tree_node::depth_first_iterate(root, show2);
- std::cout << std::endl << " sans root:" << std::endl;
- boost::tree_node::depth_first_iterate_descendants(root, show2);
- std::cout << std::endl;
-}
-//]
-
-//[example__showcase_in_order_iterator
-template <typename Node, typename Function>
-void showcase_in_order_iterator(Node const& node, Function show)
-{
- std::cout << " In-order fwd: ";
- boost::tree_node::in_order_iterate_forward(node, show);
- std::cout << std::endl << " In-order bck: ";
- boost::tree_node::in_order_iterate_reverse(node, show);
- std::cout << std::endl;
-}
-//]
-
-#endif // LIBS_TREE_NODE_EXAMPLE_SHOWCASE_ITERATORS_HPP_INCLUDED
-

Added: sandbox/tree_node/libs/tree_node/example/type_definitions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/type_definitions.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -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 LIBS_TREE_NODE_EXAMPLE_TYPE_DEFINITIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_TYPE_DEFINITIONS_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/accumulators/statistics/sum_kahan.hpp>
+#include <boost/accumulators/statistics/max.hpp>
+#include <boost/accumulators/statistics/mean.hpp>
+#include <boost/tree_node/count_key.hpp>
+#include <boost/tree_node/height_key.hpp>
+#include <boost/tree_node/accumulation_key.hpp>
+
+typedef boost::tree_node::accumulation_key<
+ boost::tree_node::count_key
+ , boost::accumulators::tag::sum_kahan
+ >
+ AccuCountKey;
+typedef boost::tree_node::accumulation_key<
+ boost::tree_node::height_key
+ , boost::accumulators::tag::max
+ , boost::mpl::false_
+ , boost::mpl::false_
+ >
+ AccuHeightKey;
+typedef boost::tree_node::accumulation_key<
+ boost::tree_node::accumulation_key<>
+ , boost::accumulators::tag::mean
+ >
+ AccuAccuKey;
+
+namespace example_keys {
+
+ struct your_uint
+ {
+ };
+
+ struct your_char
+ {
+ };
+}
+
+typedef boost::tree_node::accumulation_key<example_keys::your_uint>
+ AccuYourUintKey;
+
+#include <boost/tree_node/preprocessor.hpp>
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/fusion/container/map.hpp>
+
+typedef boost::fusion::map<
+ boost::fusion::pair<example_keys::your_uint,unsigned int>
+ , boost::fusion::pair<example_keys::your_char,char>
+ >
+ DataMap;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+#endif // LIBS_TREE_NODE_EXAMPLE_TYPE_DEFINITIONS_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/test/associative_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/test/associative_node.cpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,9484 @@
+// 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)
+
+//#define BOOST_TYPEOF_COMPLIANT
+
+#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/typeof/typeof.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <boost/utility/get_reference.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/typeof/with_count.hpp>
+#include <boost/tree_node/typeof/with_height.hpp>
+#include <boost/tree_node/typeof/with_position.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/tree_node/typeof/with_accumulation.hpp>
+#endif
+
+#include "../example/type_definitions.hpp"
+#include "iterator_functions.hpp"
+
+typedef boost::emplace_function_gen<boost::dequeS>::type
+ DFEmplacer;
+
+#include <boost/tree_node/typeof/associative_node.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+
+char const* names[] = {"able", "baker", "chuck", "dog", "easy", "fox"};
+
+template <typename Select, typename Node>
+void initialize(Node& root)
+{
+ for (boost::tree_node::breadth_first_iterator<Node> itr(root); itr; ++itr)
+ {
+ BOOST_AUTO_TPL(data, get(*itr, boost::tree_node::data_key()));
+
+ if (1 < data)
+ {
+ for (std::size_t i = 0; i < data; ++i)
+ {
+ for (std::size_t j = 0; j + i < data; ++j)
+ {
+ typename Node::iterator find_itr(itr->find(names[j]));
+ bool not_found = find_itr == itr->end();
+ typename Node::iterator child_itr(
+ itr->emplace(names[j], i)
+ );
+ Node& child(
+ boost::tree_node::dereference_iterator(child_itr)
+ );
+ Node const& const_child(child);
+
+ if (not_found)
+ {
+ typename Node::pointer child_ptr(
+ child.get_parent_ptr()
+ );
+ BOOST_CHECK(
+ child_ptr == &*itr
+// , "Ctor not linking child to parent."
+ );
+ BOOST_CHECK(
+ child_ptr == const_child.get_parent_ptr()
+// , "Why are these pointers different?"
+ );
+ }
+ else if (
+ boost::is_unique_associative_selector<Select>::value
+ )
+ {
+ BOOST_CHECK(
+ find_itr->first == child_itr->first
+// , "Keys do not match."
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(
+ find_itr
+ )
+ , boost::tree_node::data_key()
+ ) == get(
+ const_child
+ , boost::tree_node::data_key()
+ )
+// , "Ctor not linking parent to child."
+ );
+ }
+ }
+ }
+ }
+ }
+}
+
+template <typename Selector>
+void test_unique_associative()
+{
+#if defined BOOST_NO_SFINAE
+ typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::associative_node_gen<Selector>
+ >
+ >
+ , char const*
+ , double
+ >
+ ANode;
+#else // !defined BOOST_NO_SFINAE
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::associative_node_gen<
+ Selector
+ >
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , char const*
+ , double
+ , AccuHeightKey
+ >
+ ANode;
+#endif // BOOST_NO_SFINAE
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ Values;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ DFValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename ANode::traits::key_type
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ KeyValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename ANode::traits::key_type
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ DFKeyValues;
+
+ ANode a_root(5.0);
+
+ BOOST_CHECK(
+ !a_root.get_parent_ptr()
+// , "Parent member uninitialized."
+ );
+
+ initialize<Selector>(a_root);
+
+ {
+ Values bf_vals, pre_vals, post_vals;
+ KeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFValues df_vals;
+ DFKeyValues df_d_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 1, 6)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 1, 6)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(5, 1, 6);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 1, 6);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 1, 6, 5, 0, 11, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_vals]
+ (5, 1, 6, 5, 0, 11, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(5, 1, 6, 5, 0, 11, 0);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 1, 6, 5, 0, 11, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 1, 6, 5, 0, 11, 0);
+#endif // BOOST_NO_SFINAE
+ test_associative_node(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+ {
+ ANode a_copy(a_root);
+ boost::tree_node::breadth_first_iterator<ANode const>
+ bf_root_itr(a_root), bf_copy_itr(a_copy);
+ boost::tree_node::breadth_first_descendant_iterator<ANode const>
+ bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);
+ boost::tree_node::pre_order_iterator<ANode const>
+ pre_root_itr(a_root), pre_copy_itr(a_copy);
+ boost::tree_node::pre_order_descendant_iterator<ANode const>
+ pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);
+ boost::tree_node::post_order_iterator<ANode const>
+ post_root_itr(a_root), post_copy_itr(a_copy);
+ boost::tree_node::post_order_descendant_iterator<ANode const>
+ post_d_root_itr(a_root), post_d_copy_itr(a_copy);
+ boost::tree_node::depth_first_iterator<ANode const>
+ df_root_itr(a_root), df_copy_itr(a_copy);
+ boost::tree_node::depth_first_descendant_iterator<ANode const>
+ df_d_root_itr(a_root), df_d_copy_itr(a_copy);
+
+ BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(bf_d_root_itr, bf_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(pre_root_itr, pre_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(pre_d_root_itr, pre_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(post_root_itr, post_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(post_d_root_itr, post_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(df_d_root_itr, df_d_copy_itr)
+ );
+ }
+
+ {
+ typename ANode::iterator a_child_itr(
+ boost::tree_node::dereference_iterator(
+ a_root.find(names[2])
+ ).insert(names[5], a_root)
+ );
+ Values bf_vals, pre_vals, post_vals;
+ KeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFValues df_vals;
+ DFKeyValues df_d_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 3, 12)(0, 0, 1)(0, 0, 1)(0, 2, 7)(0, 0, 1)(0, 0, 1)
+ (5, 1, 6)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 3, 12)(0, 0, 1)(0, 0, 1)(0, 2, 7)(5, 1, 6)(0, 0, 1)
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(5, 1, 6)(0, 2, 7)(0, 0, 1)(0, 0, 1)(5, 3, 12);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 2, 7)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1)("fox", 5, 1, 6)
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 2, 7)
+ ("fox", 5, 1, 6)("able", 0, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("dog", 0, 0, 1)("easy", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 0, 0, 1)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1)("fox", 5, 1, 6)("chuck", 0, 2, 7)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 2, 7)
+ (boost::tree_node::pre_order_traversal, "fox", 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "fox", 5, 1, 6)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 2, 7)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 2, 7)
+ (boost::tree_node::pre_order_traversal, 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 1, 6)
+ (boost::tree_node::post_order_traversal, 0, 2, 7)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 3, 12);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 3, 12, 10, 2, 34, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 2, 7, 5, 1, 18, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (5, 1, 6, 5, 0, 11, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_vals]
+ (5, 3, 12, 10, 2, 34, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 2, 7, 5, 1, 18, 1)
+ (5, 1, 6, 5, 0, 11, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(5, 1, 6, 5, 0, 11, 0)
+ (0, 2, 7, 5, 1, 18, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(5, 3, 12, 10, 2, 34, 1);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 2, 7, 5, 1, 18, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("fox", 5, 1, 6, 5, 0, 11, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 2, 7, 5, 1, 18, 1)("fox", 5, 1, 6, 5, 0, 11, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("fox", 5, 1, 6, 5, 0, 11, 0)
+ ("chuck", 0, 2, 7, 5, 1, 18, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",0,2,7,5,1,18,1)
+ (boost::tree_node::pre_order_traversal, "fox",5,1,6,5,0,11,0)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "fox",5,1,6,5,0,11,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,2,7,5,1,18,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 3, 12, 10, 2, 34, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 2, 7, 5, 1, 18, 1)
+ (boost::tree_node::pre_order_traversal, 5, 1, 6, 5, 0, 11, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 1, 6, 5, 0, 11, 0)
+ (boost::tree_node::post_order_traversal, 0, 2, 7, 5, 1, 18, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 3, 12, 10, 2, 34, 1);
+#endif // BOOST_NO_SFINAE
+ test_associative_node(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ a_root = boost::tree_node::dereference_iterator(a_child_itr);
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 1, 6)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 1, 6)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(5, 1, 6);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 1, 6);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 1, 6, 5, 0, 11, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_vals]
+ (5, 1, 6, 5, 0, 11, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(5, 1, 6, 5, 0, 11, 0);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 1, 6, 5, 0, 11, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 1, 6, 5, 0, 11, 0);
+#endif // BOOST_NO_SFINAE
+ test_associative_node(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ a_child_itr = a_root.find(names[2]);
+ boost::tree_node::dereference_iterator(a_child_itr) = a_root;
+ test_associative_node(
+ boost::tree_node::dereference_iterator(a_child_itr)
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 2, 11)(0, 0, 1)(0, 0, 1)(5, 1, 6)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 2, 11)(0, 0, 1)(0, 0, 1)(5, 1, 6)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(5, 1, 6)(0, 0, 1)(0, 0, 1)(5, 2, 11);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 5, 1, 6)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1)("able", 0, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 0, 0, 1)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 5, 1, 6)
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 0, 0, 1)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1)("chuck", 5, 1, 6)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 2, 11)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 2, 11);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 2, 11, 10, 1, 26, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(5, 1, 6, 5, 0, 11, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_vals]
+ (5, 2, 11, 10, 1, 26, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(5, 1, 6, 5, 0, 11, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(5, 1, 6, 5, 0, 11, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (5, 2, 11, 10, 1, 26, 1);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 5, 1, 6, 5, 0, 11, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 5, 1, 6, 5, 0, 11, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("easy", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("chuck", 5, 1, 6, 5, 0, 11, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",5,1,6,5,0,11,0)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",5,1,6,5,0,11,0)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 2, 11, 10, 1, 26, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 5, 1, 6, 5, 0, 11, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 1, 6, 5, 0, 11, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 2, 11, 10, 1, 26, 1);
+#endif // BOOST_NO_SFINAE
+ test_associative_node(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ BOOST_CHECK(
+ boost::tree_node::dereference_iterator(
+ a_child_itr
+ ).erase(names[1]) == 1
+ );
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 2, 10)(0, 0, 1)(0, 0, 1)(5, 1, 5)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 2, 10)(0, 0, 1)(0, 0, 1)(5, 1, 5)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)
+ (5, 1, 5)(0, 0, 1)(0, 0, 1)(5, 2, 10);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 5, 1, 5)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1)("able", 0, 0, 1)
+ ("chuck", 0, 0, 1)("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 5, 1, 5)
+ ("able", 0, 0, 1)("chuck", 0, 0, 1)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1)("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("chuck", 0, 0, 1)("dog", 0, 0, 1)("easy", 0, 0, 1)
+ ("chuck", 5, 1, 5)("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 5, 1, 5)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 5, 1, 5)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 5, 1, 5)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 1, 5)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 2, 10);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 2, 10, 10, 1, 23, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(5, 1, 5, 5, 0, 9, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_vals]
+ (5, 2, 10, 10, 1, 23, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(5, 1, 5, 5, 0, 9, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (5, 1, 5, 5, 0, 9, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(5, 2, 10, 10, 1, 23, 1);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 5, 1, 5, 5, 0, 9, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 5, 1, 5, 5, 0, 9, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("easy", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 5, 1, 5, 5, 0, 9, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",5,1,5,5,0,9,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",5,1,5,5,0,9,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 2, 10, 10, 1, 23, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 5, 1, 5, 5, 0, 9, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 1, 5, 5, 0, 9, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 2, 10, 10, 1, 23, 1);
+#endif // BOOST_NO_SFINAE
+ test_associative_node(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::associative_node_gen<Selector>
+ , char const*
+ , DataMap
+ , AccuYourUintKey
+ >
+ FNode;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ MoreValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ DFMoreValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename FNode::traits::key_type
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ MoreKeyValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename FNode::traits::key_type
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ DFMoreKeyValues;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ BOOST_AUTO_TPL(
+ data
+ , boost::tree_node::get<example_keys::your_uint>(
+ boost::tree_node::dereference_iterator(itr)
+ )
+ );
+
+ if (1 < data)
+ {
+ for (unsigned int i = 0; i < data; ++i)
+ {
+ for (std::size_t j = 0; j + i < data; ++j)
+ {
+ itr->emplace(
+ names[j]
+ , boost::fusion::make_pair<example_keys::your_uint>(i)
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + i
+ )
+ );
+ }
+ }
+ }
+ }
+
+ {
+ MoreValues bf_vals, pre_vals, post_vals;
+ MoreKeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFMoreKeyValues df_d_vals;
+ DFMoreValues df_vals;
+ DFEmplacer emplacer;
+
+ emplacer[bf_vals]
+ (5, '5', 5)(0, '0', 0)(0, '0', 0)(0, '0', 0)(0, '0', 0)
+ (0, '0', 0);
+ emplacer[pre_vals]
+ (5, '5', 5)(0, '0', 0)(0, '0', 0)(0, '0', 0)(0, '0', 0)
+ (0, '0', 0);
+ emplacer[post_vals]
+ (0, '0', 0)(0, '0', 0)(0, '0', 0)(0, '0', 0)(0, '0', 0)
+ (5, '5', 5);
+ emplacer[bf_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 0, '0', 0)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[pre_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 0, '0', 0)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[post_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 0, '0', 0)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::post_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "easy",0,'0',0)
+ (boost::tree_node::post_order_traversal, "easy",0,'0',0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5,'5',5)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 5,'5',5);
+ test_f_associative_node(
+ f_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ put(
+ boost::tree_node::dereference_iterator(f_root.find(names[2]))
+ , example_keys::your_uint()
+ , 7
+ );
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+ emplacer[bf_vals]
+ (5, '5', 12)(0, '0', 0)(0, '0', 0)(7, '0', 7)(0, '0', 0)
+ (0, '0', 0);
+ emplacer[pre_vals]
+ (5, '5', 12)(0, '0', 0)(0, '0', 0)(7, '0', 7)(0, '0', 0)
+ (0, '0', 0);
+ emplacer[post_vals]
+ (0, '0', 0)(0, '0', 0)(7, '0', 7)(0, '0', 0)(0, '0', 0)
+ (5, '5', 12);
+ emplacer[bf_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 7, '0', 7)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[pre_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 7, '0', 7)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[post_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 7, '0', 7)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "chuck",7,'0',7)
+ (boost::tree_node::post_order_traversal, "chuck",7,'0',7)
+ (boost::tree_node::pre_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::post_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "easy",0,'0',0)
+ (boost::tree_node::post_order_traversal, "easy",0,'0',0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5,'5',12)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 7,'0',7)
+ (boost::tree_node::post_order_traversal, 7,'0',7)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 5,'5',12);
+ test_f_associative_node(
+ f_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+}
+
+template <typename Selector>
+void test_multiple_associative()
+{
+#if defined BOOST_NO_SFINAE
+ typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::associative_node_gen<Selector>
+ >
+ >
+ , char const*
+ , double
+ >
+ ANode;
+#else // !defined BOOST_NO_SFINAE
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::associative_node_gen<
+ Selector
+ >
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , char const*
+ , double
+ , AccuHeightKey
+ >
+ ANode;
+#endif // BOOST_NO_SFINAE
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ Values;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ DFValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename ANode::traits::key_type
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ KeyValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename ANode::traits::key_type
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ DFKeyValues;
+
+ ANode a_root(5.0);
+
+ BOOST_CHECK(
+ !a_root.get_parent_ptr()
+// , "Parent member uninitialized."
+ );
+
+ initialize<Selector>(a_root);
+
+ {
+ Values bf_vals, pre_vals, post_vals;
+ KeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFValues df_vals;
+ DFKeyValues df_d_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 68)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 68)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(5, 4, 68);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("baker", 3, 2, 10)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 3, 2, 10)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 2, 1, 4)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 4, 68);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 68, 55, 3, 211, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_vals]
+ (5, 4, 68, 55, 3, 211, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(5, 4, 68, 55, 3, 211, 2);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("able", 4, 3, 26, 21, 2, 69, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 3, 2, 10, 8, 1, 22, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 68, 55, 3, 211, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 4, 68, 55, 3, 211, 2);
+#endif // BOOST_NO_SFINAE
+ test_associative_node(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+ {
+ ANode a_copy(a_root);
+ boost::tree_node::breadth_first_iterator<ANode const>
+ bf_root_itr(a_root), bf_copy_itr(a_copy);
+ boost::tree_node::breadth_first_descendant_iterator<ANode const>
+ bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);
+ boost::tree_node::pre_order_iterator<ANode const>
+ pre_root_itr(a_root), pre_copy_itr(a_copy);
+ boost::tree_node::pre_order_descendant_iterator<ANode const>
+ pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);
+ boost::tree_node::post_order_iterator<ANode const>
+ post_root_itr(a_root), post_copy_itr(a_copy);
+ boost::tree_node::post_order_descendant_iterator<ANode const>
+ post_d_root_itr(a_root), post_d_copy_itr(a_copy);
+ boost::tree_node::depth_first_iterator<ANode const>
+ df_root_itr(a_root), df_copy_itr(a_copy);
+ boost::tree_node::depth_first_descendant_iterator<ANode const>
+ df_d_root_itr(a_root), df_d_copy_itr(a_copy);
+
+ BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(bf_d_root_itr, bf_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(pre_root_itr, pre_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(pre_d_root_itr, pre_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(post_root_itr, post_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(post_d_root_itr, post_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(df_d_root_itr, df_d_copy_itr)
+ );
+ }
+
+ {
+ typename ANode::iterator a_child_itr(
+ boost::tree_node::dereference_iterator(
+ a_root.find(names[2])
+ ).insert(names[5], a_root)
+ );
+ Values bf_vals, pre_vals, post_vals;
+ KeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFValues df_vals;
+ DFKeyValues df_d_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 136)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 5, 69)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(5, 4, 68)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 136)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 5, 69)
+ (5, 4, 68)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(5, 4, 68)
+ (0, 5, 69)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(5, 6, 136);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("baker", 3, 2, 10)
+ ("chuck", 0, 5, 69)("chuck", 1, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("fox", 5, 4, 68)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 3, 2, 10)
+ ("able", 4, 3, 26)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("baker", 3, 2, 10)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("chuck", 2, 1, 4)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 3, 2, 10)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 5, 69)("fox", 5, 4, 68)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 3, 2, 10)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("able", 4, 3, 26)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("baker", 3, 2, 10)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 2, 1, 4)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1)("fox", 5, 4, 68)
+ ("chuck", 0, 5, 69)("chuck", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 5, 69)
+ (boost::tree_node::pre_order_traversal, "fox", 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "fox", 5, 4, 68)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 5, 69)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 136)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 5, 69)
+ (boost::tree_node::pre_order_traversal, 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 4, 68)
+ (boost::tree_node::post_order_traversal, 0, 5, 69)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 6, 136);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 136, 110, 5, 558, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(3, 2, 10, 8, 1, 22, 1)
+ (0, 5, 69, 55, 4, 280, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (5, 4, 68, 55, 3, 211, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(3, 2, 10, 8, 1, 22, 1)
+ (4, 3, 26, 21, 2, 69, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_vals]
+ (5, 6, 136, 110, 5, 558, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 5, 69, 55, 4, 280, 2)
+ (5, 4, 68, 55, 3, 211, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(5, 4, 68, 55, 3, 211, 2)
+ (0, 5, 69, 55, 4, 280, 2)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(5, 6, 136, 110, 5, 558, 2);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("chuck", 0, 5, 69, 55, 4, 280, 2)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("fox", 5, 4, 68, 55, 3, 211, 2)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("able", 4, 3, 26, 21, 2, 69, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("baker", 3, 2, 10, 8, 1, 22, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 2, 1, 4, 3, 0, 7, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 1, 0, 1, 1, 0, 1, 1)("easy", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 5, 69, 55, 4, 280, 2)("fox", 5, 4, 68, 55, 3, 211, 2)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("able", 4, 3, 26, 21, 2, 69, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("able", 4, 3, 26, 21, 2, 69, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 3, 2, 10, 8, 1, 22, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("fox", 5, 4, 68, 55, 3, 211, 2)
+ ("chuck", 0, 5, 69, 55, 4, 280, 2)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,5,69,55,4,280,2)
+ (boost::tree_node::pre_order_traversal, "fox",5,4,68,55,3,211,2)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "fox",5,4,68,55,3,211,2)
+ (boost::tree_node::post_order_traversal, "chuck",0,5,69,55,4,280,2)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 136, 110, 5, 558, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 5, 69, 55, 4, 280, 2)
+ (boost::tree_node::pre_order_traversal, 5, 4, 68, 55, 3, 211, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 4, 68, 55, 3, 211, 2)
+ (boost::tree_node::post_order_traversal, 0, 5, 69, 55, 4, 280, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 6, 136, 110, 5, 558, 2);
+#endif // BOOST_NO_SFINAE
+ test_associative_node(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ a_root = boost::tree_node::dereference_iterator(a_child_itr);
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 68)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 68)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(5, 4, 68);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("baker", 3, 2, 10)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 3, 2, 10)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 2, 1, 4)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 4, 68);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 68, 55, 3, 211, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_vals]
+ (5, 4, 68, 55, 3, 211, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(5, 4, 68, 55, 3, 211, 2);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("able", 4, 3, 26, 21, 2, 69, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 3, 2, 10, 8, 1, 22, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 68, 55, 3, 211, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 4, 68, 55, 3, 211, 2);
+#endif // BOOST_NO_SFINAE
+ test_associative_node(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ a_child_itr = boost::begin(a_root.equal_range(names[2]));
+
+ while (boost::tree_node::dereference_iterator(a_child_itr).empty())
+ {
+ ++a_child_itr;
+ }
+
+ a_child_itr = boost::begin(
+ boost::tree_node::dereference_iterator(
+ a_child_itr
+ ).equal_range(names[1])
+ );
+ boost::tree_node::dereference_iterator(a_child_itr) = a_root;
+ test_associative_node(
+ boost::tree_node::dereference_iterator(a_child_itr)
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 135)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (2, 5, 71)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(5, 4, 68)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 135)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 5, 71)(0, 0, 1)(1, 0, 1)(5, 4, 68)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(4, 3, 26)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(5, 4, 68)(2, 5, 71)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(5, 6, 135);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("baker", 3, 2, 10)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 5, 71)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 5, 4, 68)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 3, 2, 10)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("baker", 3, 2, 10)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 1, 4)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 5, 71)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 5, 4, 68)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 3, 2, 10)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 4, 3, 26)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 3, 2, 10)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("chuck", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 3, 2, 10)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("baker", 3, 2, 10)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("baker", 5, 4, 68)("chuck", 2, 5, 71)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 5, 71)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 5, 4, 68)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 5, 71)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 135)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 5, 71)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 4, 68)
+ (boost::tree_node::post_order_traversal, 2, 5, 71)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 6, 135);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 135, 110, 5, 555, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 5, 71, 58, 4, 284, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (5, 4, 68, 55, 3, 211, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_vals]
+ (5, 6, 135, 110, 5, 555, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 5, 71, 58, 4, 284, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (5, 4, 68, 55, 3, 211, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(5, 4, 68, 55, 3, 211, 2)
+ (2, 5, 71, 58, 4, 284, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (5, 6, 135, 110, 5, 555, 2);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("chuck", 2, 5, 71, 58, 4, 284, 2)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 5, 4, 68, 55, 3, 211, 2)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 2, 5, 71, 58, 4, 284, 2)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 5, 4, 68, 55, 3, 211, 2)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 1, 0, 1, 1, 0, 1, 1)("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("able", 4, 3, 26, 21, 2, 69, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 3, 2, 10, 8, 1, 22, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("able", 4, 3, 26, 21, 2, 69, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 3, 2, 10, 8, 1, 22, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("baker", 5, 4, 68, 55, 3, 211, 2)
+ ("chuck", 2, 5, 71, 58, 4, 284, 2)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 1, 0, 1, 1, 0, 1, 1)("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",2,5,71,58,4,284,2)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",5,4,68,55,3,211,2)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",5,4,68,55,3,211,2)
+ (boost::tree_node::post_order_traversal, "chuck",2,5,71,58,4,284,2)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 135, 110, 5, 555, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 5, 71, 58, 4, 284, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 5, 4, 68, 55, 3, 211, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 4, 68, 55, 3, 211, 2)
+ (boost::tree_node::post_order_traversal, 2, 5, 71, 58, 4, 284, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 6, 135, 110, 5, 555, 2);
+#endif // BOOST_NO_SFINAE
+ test_associative_node(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ BOOST_CHECK(
+ boost::tree_node::dereference_iterator(
+ a_child_itr
+ ).erase(names[1]) == 4
+ );
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 119)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (2, 5, 55)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(5, 4, 52)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 119)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 5, 55)(0, 0, 1)(1, 0, 1)(5, 4, 52)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(4, 3, 26)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(5, 4, 52)
+ (2, 5, 55)(0, 0, 1)(1, 0, 1)(0, 0, 1)(5, 6, 119);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("baker", 3, 2, 10)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 5, 55)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 5, 4, 52)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 3, 2, 10)("able", 4, 3, 26)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 5, 55)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 5, 4, 52)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 3, 2, 10)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 4, 3, 26)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 3, 2, 10)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 4, 3, 26)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 2, 1, 4)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1)("baker", 5, 4, 52)
+ ("chuck", 2, 5, 55)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 5, 55)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 5, 4, 52)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 5, 4, 52)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 5, 55)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 119)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 5, 55)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 5, 4, 52)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 4, 52)
+ (boost::tree_node::post_order_traversal, 2, 5, 55)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 6, 119);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 119, 98, 5, 476, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 5, 55, 46, 4, 221, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (5, 4, 52, 43, 3, 164, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (3, 2, 10, 8, 1, 22, 1)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_vals]
+ (5, 6, 119, 98, 5, 476, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 5, 55, 46, 4, 221, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (5, 4, 52, 43, 3, 164, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (3, 2, 10, 8, 1, 22, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 4, 3, 0, 7, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(3, 2, 10, 8, 1, 22, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(4, 3, 26, 21, 2, 69, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 4, 3, 0, 7, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(5, 4, 52, 43, 3, 164, 2)
+ (2, 5, 55, 46, 4, 221, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (5, 6, 119, 98, 5, 476, 2);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("chuck", 2, 5, 55, 46, 4, 221, 2)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 5, 4, 52, 43, 3, 164, 2)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 2, 5, 55, 46, 4, 221, 2)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 5, 4, 52, 43, 3, 164, 2)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 3, 2, 10, 8, 1, 22, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 4, 3, 26, 21, 2, 69, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("baker", 1, 0, 1, 1, 0, 1, 1)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 1, 0, 1, 1, 0, 1, 1)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 2, 1, 4, 3, 0, 7, 1)("able", 0, 0, 1, 0, 0, 1, 0)
+ ("able", 1, 0, 1, 1, 0, 1, 1)("baker", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 1, 0, 1, 1, 0, 1, 1)("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("able", 4, 3, 26, 21, 2, 69, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("baker", 3, 2, 10, 8, 1, 22, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("able", 2, 1, 4, 3, 0, 7, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("able", 3, 2, 10, 8, 1, 22, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("baker", 2, 1, 4, 3, 0, 7, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("able", 4, 3, 26, 21, 2, 69, 1)
+ ("chuck", 0, 0, 1, 0, 0, 1, 0)("chuck", 1, 0, 1, 1, 0, 1, 1)
+ ("able", 0, 0, 1, 0, 0, 1, 0)("able", 1, 0, 1, 1, 0, 1, 1)
+ ("baker", 0, 0, 1, 0, 0, 1, 0)("chuck", 2, 1, 4, 3, 0, 7, 1)
+ ("dog", 0, 0, 1, 0, 0, 1, 0)("dog", 1, 0, 1, 1, 0, 1, 1)
+ ("easy", 0, 0, 1, 0, 0, 1, 0)("baker", 5, 4, 52, 43, 3, 164, 2)
+ ("chuck", 2, 5, 55, 46, 4, 221, 2)("dog", 0, 0, 1, 0, 0, 1, 0)
+ ("dog", 1, 0, 1, 1, 0, 1, 1)("easy", 0, 0, 1, 0, 0, 1, 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",2,5,55,46,4,221,2)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",5,4,52,43,3,164,2)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",3,2,10,8,1,22,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "baker",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",4,3,26,21,2,69,1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "chuck",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "able",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "able",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "chuck",2,1,4,3,0,7,1)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "baker",5,4,52,43,3,164,2)
+ (boost::tree_node::post_order_traversal, "chuck",2,5,55,46,4,221,2)
+ (boost::tree_node::pre_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "dog",0,0,1,0,0,1,0)
+ (boost::tree_node::pre_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::post_order_traversal, "dog",1,0,1,1,0,1,1)
+ (boost::tree_node::pre_order_traversal, "easy",0,0,1,0,0,1,0)
+ (boost::tree_node::post_order_traversal, "easy",0,0,1,0,0,1,0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 119, 98, 5, 476, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 5, 55, 46, 4, 221, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 5, 4, 52, 43, 3, 164, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 3, 2, 10, 8, 1, 22, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 4, 3, 26, 21, 2, 69, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 2, 1, 4, 3, 0, 7, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 4, 52, 43, 3, 164, 2)
+ (boost::tree_node::post_order_traversal, 2, 5, 55, 46, 4, 221, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 5, 6, 119, 98, 5, 476, 2);
+#endif // BOOST_NO_SFINAE
+ test_associative_node(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::associative_node_gen<Selector>
+ , char const*
+ , DataMap
+ , AccuYourUintKey
+ >
+ FNode;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ MoreValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ DFMoreValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename FNode::traits::key_type
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ MoreKeyValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename FNode::traits::key_type
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ DFMoreKeyValues;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ BOOST_AUTO_TPL(
+ data
+ , boost::tree_node::get<example_keys::your_uint>(
+ boost::tree_node::dereference_iterator(itr)
+ )
+ );
+
+ if (1 < data)
+ {
+ for (unsigned int i = 0; i < data; ++i)
+ {
+ for (std::size_t j = 0; j + i < data; ++j)
+ {
+ itr->emplace(
+ names[j]
+ , boost::fusion::make_pair<example_keys::your_uint>(i)
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + i
+ )
+ );
+ }
+ }
+ }
+ }
+
+ {
+ MoreValues bf_vals, pre_vals, post_vals;
+ MoreKeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFMoreKeyValues df_d_vals;
+ DFMoreValues df_vals;
+ DFEmplacer emplacer;
+
+ emplacer[bf_vals]
+ (5, '5', 55)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)
+ (4, '4', 21)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0);
+ emplacer[pre_vals]
+ (5, '5', 55)(0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(3, '3', 8)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(4, '4', 21)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(3, '3', 8)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(3, '3', 8)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0);
+ emplacer[post_vals]
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (3, '3', 8)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(3, '3', 8)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(4, '4', 21)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(3, '3', 8)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(5, '5', 55);
+ emplacer[bf_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 3, '3', 8)("able", 4, '4', 21)("baker", 0, '0', 0)
+ ("baker", 1, '1', 1)("baker", 2, '2', 3)("baker", 3, '3', 8)
+ ("chuck", 0, '0', 0)("chuck", 1, '1', 1)("chuck", 2, '2', 3)
+ ("dog", 0, '0', 0)("dog", 1, '1', 1)("easy", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 3, '3', 8)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("baker", 2, '2', 3)("chuck", 0, '0', 0)("chuck", 1, '1', 1)
+ ("dog", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0);
+ emplacer[pre_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 4, '4', 21)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("able", 2, '2', 3)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 3, '3', 8)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("chuck", 0, '0', 0)("chuck", 1, '1', 1)("dog", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("baker", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("chuck", 0, '0', 0)("chuck", 1, '1', 1)
+ ("chuck", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("dog", 0, '0', 0)("dog", 1, '1', 1)
+ ("easy", 0, '0', 0);
+ emplacer[post_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("able", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 3, '3', 8)("baker", 0, '0', 0)
+ ("baker", 1, '1', 1)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 2, '2', 3)("chuck", 0, '0', 0)
+ ("chuck", 1, '1', 1)("dog", 0, '0', 0)("able", 4, '4', 21)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("baker", 3, '3', 8)("chuck", 0, '0', 0)("chuck", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("chuck", 2, '2', 3)("dog", 0, '0', 0)("dog", 1, '1', 1)
+ ("easy", 0, '0', 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::post_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "able",4,'4',21)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::post_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::post_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,'1',1)
+ (boost::tree_node::post_order_traversal, "chuck",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::post_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",4,'4',21)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::post_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "baker",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::post_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,'1',1)
+ (boost::tree_node::post_order_traversal, "chuck",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "chuck",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::post_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "dog",1,'1',1)
+ (boost::tree_node::post_order_traversal, "dog",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "easy",0,'0',0)
+ (boost::tree_node::post_order_traversal, "easy",0,'0',0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5,'5',55)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 4,'4',21)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 4,'4',21)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 5,'5',55);
+ test_f_associative_node(
+ f_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ put(
+ boost::tree_node::dereference_iterator(f_root.find(names[2]))
+ , example_keys::your_uint()
+ , 7
+ );
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+ emplacer[bf_vals]
+ (5, '5', 62)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)
+ (4, '4', 21)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)
+ (7, '0', 7)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0);
+ emplacer[pre_vals]
+ (5, '5', 62)(0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(3, '3', 8)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(4, '4', 21)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(3, '3', 8)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(3, '3', 8)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(7, '0', 7)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0);
+ emplacer[post_vals]
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (3, '3', 8)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(3, '3', 8)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(4, '4', 21)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(3, '3', 8)(7, '0', 7)(1, '1', 1)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(5, '5', 62);
+ emplacer[bf_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 3, '3', 8)("able", 4, '4', 21)("baker", 0, '0', 0)
+ ("baker", 1, '1', 1)("baker", 2, '2', 3)("baker", 3, '3', 8)
+ ("chuck", 7, '0', 7)("chuck", 1, '1', 1)("chuck", 2, '2', 3)
+ ("dog", 0, '0', 0)("dog", 1, '1', 1)("easy", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 3, '3', 8)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("baker", 2, '2', 3)("chuck", 0, '0', 0)("chuck", 1, '1', 1)
+ ("dog", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0);
+ emplacer[pre_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 4, '4', 21)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("able", 2, '2', 3)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 3, '3', 8)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("chuck", 0, '0', 0)("chuck", 1, '1', 1)("dog", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("baker", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("chuck", 7, '0', 7)("chuck", 1, '1', 1)
+ ("chuck", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("dog", 0, '0', 0)("dog", 1, '1', 1)
+ ("easy", 0, '0', 0);
+ emplacer[post_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("able", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 3, '3', 8)("baker", 0, '0', 0)
+ ("baker", 1, '1', 1)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 2, '2', 3)("chuck", 0, '0', 0)
+ ("chuck", 1, '1', 1)("dog", 0, '0', 0)("able", 4, '4', 21)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("baker", 3, '3', 8)("chuck", 7, '0', 7)("chuck", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("chuck", 2, '2', 3)("dog", 0, '0', 0)("dog", 1, '1', 1)
+ ("easy", 0, '0', 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::post_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "able",4,'4',21)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::post_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::post_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "chuck",1,'1',1)
+ (boost::tree_node::post_order_traversal, "chuck",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::post_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",4,'4',21)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::post_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "baker",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::post_order_traversal, "baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",3,'3',8)
+ (boost::tree_node::pre_order_traversal, "chuck",7,'0',7)
+ (boost::tree_node::post_order_traversal, "chuck",7,'0',7)
+ (boost::tree_node::pre_order_traversal, "chuck",1,'1',1)
+ (boost::tree_node::post_order_traversal, "chuck",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "chuck",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "able",0,'0',0)
+ (boost::tree_node::post_order_traversal, "able",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "able",1,'1',1)
+ (boost::tree_node::post_order_traversal, "able",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "baker",0,'0',0)
+ (boost::tree_node::post_order_traversal, "chuck",2,'2',3)
+ (boost::tree_node::pre_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::post_order_traversal, "dog",0,'0',0)
+ (boost::tree_node::pre_order_traversal, "dog",1,'1',1)
+ (boost::tree_node::post_order_traversal, "dog",1,'1',1)
+ (boost::tree_node::pre_order_traversal, "easy",0,'0',0)
+ (boost::tree_node::post_order_traversal, "easy",0,'0',0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5,'5',62)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 4,'4',21)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 4,'4',21)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 3,'3',8)
+ (boost::tree_node::pre_order_traversal, 7,'0',7)
+ (boost::tree_node::post_order_traversal, 7,'0',7)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 2,'2',3)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::pre_order_traversal, 1,'1',1)
+ (boost::tree_node::post_order_traversal, 1,'1',1)
+ (boost::tree_node::pre_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 0,'0',0)
+ (boost::tree_node::post_order_traversal, 5,'5',62);
+ test_f_associative_node(
+ f_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+}
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
+#if defined BOOST_TYPEOF_EMULATION
+#include <boost/container_gen/selectors_typeof.hpp>
+#include <boost/container_gen/c_str_cmp_selectors_typeof.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_map.hpp>
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/typeof/boost/container/map.hpp>
+#include <boost/typeof/boost/container/flat_map.hpp>
+#endif
+#else // !defined BOOST_TYPEOF_EMULATION
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/c_str_cmp_selectors.hpp>
+#endif // BOOST_TYPEOF_EMULATION
+
+int test_main(int argc, char** argv)
+{
+ test_unique_associative<
+ boost::ptr_map_selector<boost::c_str_ordering_selector>
+ >();
+ test_multiple_associative<
+ boost::ptr_multimap_selector<boost::c_str_ordering_selector>
+ >();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_unique_associative<
+ boost::map_selector<boost::mpl::true_,boost::c_str_ordering_selector>
+ >();
+ test_multiple_associative<
+ boost::multimap_selector<
+ boost::mpl::true_
+ , boost::c_str_ordering_selector
+ >
+ >();
+ test_unique_associative<
+ boost::flat_map_selector<boost::c_str_ordering_selector>
+ >();
+ test_multiple_associative<
+ boost::flat_multimap_selector<boost::c_str_ordering_selector>
+ >();
+#endif
+
+ return 0;
+}
+

Added: sandbox/tree_node/libs/tree_node/test/binary_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/test/binary_node.cpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,1898 @@
+// 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)
+
+//#define BOOST_TYPEOF_COMPLIANT
+
+#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/typeof/typeof.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <boost/utility/get_reference.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/typeof/with_count.hpp>
+#include <boost/tree_node/typeof/with_height.hpp>
+#include <boost/tree_node/typeof/with_position.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/tree_node/typeof/with_accumulation.hpp>
+#endif
+
+#include "../example/type_definitions.hpp"
+#include "iterator_functions.hpp"
+
+typedef boost::emplace_function_gen<boost::dequeS>::type
+ DFEmplacer;
+
+#include <boost/tree_node/typeof/binary_node.hpp>
+
+#if defined BOOST_NO_SFINAE
+typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::binary_node_gen
+ >
+ >
+ , double
+ >
+ ANode;
+#else // !defined BOOST_NO_SFINAE
+typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::binary_node_gen
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , double
+ , void
+ , AccuHeightKey
+ >
+ ANode;
+#endif // BOOST_NO_SFINAE
+
+typedef boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ BOOST_TYPEOF(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ Values;
+typedef boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , BOOST_TYPEOF(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ DFValues;
+
+int test_main(int argc, char** argv)
+{
+ ANode a_root(5.0);
+
+ BOOST_CHECK(
+ !a_root.get_parent_ptr()
+// , "Parent member uninitialized."
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<ANode> itr(a_root);
+ itr;
+ ++itr
+ )
+ {
+ BOOST_AUTO(data, get(*itr, boost::tree_node::data_key()));
+
+ if (1 < data)
+ {
+ ANode::iterator child_itr(itr->emplace_left(data - 2));
+ ANode::const_pointer const_child(&*child_itr);
+
+ BOOST_CHECK(
+ child_itr->get_parent_ptr() == &*itr
+// , "Ctor not linking child to parent."
+ );
+ BOOST_CHECK(
+ itr->get_left_child_ptr() == &*child_itr
+// , "Ctor not linking parent to child."
+ );
+ BOOST_CHECK(
+ child_itr->get_parent_ptr() == const_child->get_parent_ptr()
+// , "Why are these pointers different?"
+ );
+ BOOST_CHECK(
+ get(
+ *child_itr
+ , boost::tree_node::position_key()
+ ) == child_itr
+// , "Position iterator incorrect."
+ );
+
+ child_itr = itr->emplace_right(data - 1);
+ const_child = &*child_itr;
+
+ BOOST_CHECK(
+ child_itr->get_parent_ptr() == &*itr
+// , "Ctor not linking child to parent."
+ );
+ BOOST_CHECK(
+ itr->get_right_child_ptr() == &*child_itr
+// , "Ctor not linking parent to child."
+ );
+ BOOST_CHECK(
+ child_itr->get_parent_ptr() == const_child->get_parent_ptr()
+// , "Why are these pointers different?"
+ );
+ BOOST_CHECK(
+ get(
+ *child_itr
+ , boost::tree_node::position_key()
+ ) == child_itr
+// , "Position iterator incorrect."
+ );
+ }
+ }
+
+ {
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 15)(3, 2, 5)(4, 3, 9)(1, 0, 1)(2, 1, 3)(2, 1, 3)(3, 2, 5)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 15)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 9)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1);
+ emplacer[post_vals]
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(4, 3, 9)
+ (5, 4, 15);
+ emplacer[in_vals]
+ (1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 4, 15)(0, 0, 1)
+ (2, 1, 3)(1, 0, 1)(4, 3, 9)(1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 15)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 3, 9)
+ (boost::tree_node::post_order_traversal, 5, 4, 15);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 15, 26, 3, 51, 4)(3, 2, 5, 7, 1, 11, 2)
+ (4, 3, 9, 14, 2, 25, 3)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 4, 15, 26, 3, 51, 4)(3, 2, 5, 7, 1, 11, 2)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 3, 9, 14, 2, 25, 3)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(4, 3, 9, 14, 2, 25, 3)
+ (5, 4, 15, 26, 3, 51, 4);
+ emplacer[in_vals]
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 4, 15, 26, 3, 51, 4)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(4, 3, 9, 14, 2, 25, 3)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 15, 26, 3, 51, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9, 14, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 9, 14, 2, 25, 3)
+ (boost::tree_node::post_order_traversal, 5, 4, 15, 26, 3, 51, 4);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+ }
+
+ {
+ ANode a_copy(a_root);
+ boost::tree_node::breadth_first_iterator<ANode const>
+ bf_root_itr(a_root), bf_copy_itr(a_copy);
+ boost::tree_node::breadth_first_descendant_iterator<ANode const>
+ bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);
+ boost::tree_node::pre_order_iterator<ANode const>
+ pre_root_itr(a_root), pre_copy_itr(a_copy);
+ boost::tree_node::pre_order_descendant_iterator<ANode const>
+ pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);
+ boost::tree_node::post_order_iterator<ANode const>
+ post_root_itr(a_root), post_copy_itr(a_copy);
+ boost::tree_node::post_order_descendant_iterator<ANode const>
+ post_d_root_itr(a_root), post_d_copy_itr(a_copy);
+ boost::tree_node::in_order_iterator<ANode const>
+ in_root_itr(a_root), in_copy_itr(a_copy);
+ boost::tree_node::depth_first_iterator<ANode const>
+ df_root_itr(a_root), df_copy_itr(a_copy);
+ boost::tree_node::depth_first_descendant_iterator<ANode const>
+ df_d_root_itr(a_root), df_d_copy_itr(a_copy);
+
+ BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));
+ BOOST_CHECK(test_node_copies(bf_d_root_itr, bf_d_copy_itr));
+ BOOST_CHECK(test_node_copies(pre_root_itr, pre_copy_itr));
+ BOOST_CHECK(test_node_copies(pre_d_root_itr, pre_d_copy_itr));
+ BOOST_CHECK(test_node_copies(post_root_itr, post_copy_itr));
+ BOOST_CHECK(test_node_copies(post_d_root_itr, post_d_copy_itr));
+ BOOST_CHECK(test_node_copies(in_root_itr, in_copy_itr));
+ BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));
+ BOOST_CHECK(test_node_copies(df_d_root_itr, df_d_copy_itr));
+ }
+
+ {
+ ANode::pointer p = a_root.get_left_child_ptr()->get_left_child_ptr();
+ ANode::iterator a_child_itr = p->insert_left(a_root);
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 7, 30)(3, 6, 20)(4, 3, 9)(1, 5, 16)(2, 1, 3)(2, 1, 3)(3, 2, 5)
+ (5, 4, 15)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 5)(4, 3, 9)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(2, 1, 3)
+ (3, 2, 5)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 7, 30)(3, 6, 20)(1, 5, 16)(5, 4, 15)(3, 2, 5)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(4, 3, 9)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 5)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (4, 3, 9)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(4, 3, 9)
+ (5, 4, 15)(1, 5, 16)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 6, 20)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)
+ (4, 3, 9)(5, 7, 30);
+ emplacer[in_vals]
+ (1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 4, 15)(0, 0, 1)
+ (2, 1, 3)(1, 0, 1)(4, 3, 9)(1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1)(1, 5, 16)(3, 6, 20)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 7, 30)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 3, 9)(1, 0, 1)(3, 2, 5)(0, 0, 1)
+ (2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 7, 30)
+ (boost::tree_node::pre_order_traversal, 3, 6, 20)
+ (boost::tree_node::pre_order_traversal, 1, 5, 16)
+ (boost::tree_node::pre_order_traversal, 5, 4, 15)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 3, 9)
+ (boost::tree_node::post_order_traversal, 5, 4, 15)
+ (boost::tree_node::post_order_traversal, 1, 5, 16)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 6, 20)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 3, 9)
+ (boost::tree_node::post_order_traversal, 5, 7, 30);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 7, 30, 52, 6, 147, 7)(3, 6, 20, 33, 5, 92, 6)
+ (4, 3, 9, 14, 2, 25, 3)(1, 5, 16, 27, 4, 67, 5)
+ (2, 1, 3, 3, 0, 5, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(5, 4, 15, 26, 3, 51, 4)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(4, 3, 9, 14, 2, 25, 3)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 7, 30, 52, 6, 147, 7)(3, 6, 20, 33, 5, 92, 6)
+ (1, 5, 16, 27, 4, 67, 5)(5, 4, 15, 26, 3, 51, 4)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(4, 3, 9, 14, 2, 25, 3)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(4, 3, 9, 14, 2, 25, 3)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(4, 3, 9, 14, 2, 25, 3)
+ (5, 4, 15, 26, 3, 51, 4)(1, 5, 16, 27, 4, 67, 5)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 6, 20, 33, 5, 92, 6)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (4, 3, 9, 14, 2, 25, 3)(5, 7, 30, 52, 6, 147, 7);
+ emplacer[in_vals]
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 4, 15, 26, 3, 51, 4)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(4, 3, 9, 14, 2, 25, 3)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(1, 5, 16, 27, 4, 67, 5)
+ (3, 6, 20, 33, 5, 92, 6)(0, 0, 1, 0, 0, 1, 0)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1)
+ (5, 7, 30, 52, 6, 147, 7)(0, 0, 1, 0, 0, 1, 0)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1)
+ (4, 3, 9, 14, 2, 25, 3)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 5, 7, 1, 11, 2)(0, 0, 1, 0, 0, 1, 0)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 7, 30, 52, 6, 147, 7)
+ (boost::tree_node::pre_order_traversal, 3, 6, 20, 33, 5, 92, 6)
+ (boost::tree_node::pre_order_traversal, 1, 5, 16, 27, 4, 67, 5)
+ (boost::tree_node::pre_order_traversal, 5, 4, 15, 26, 3, 51, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9, 14, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 9, 14, 2, 25, 3)
+ (boost::tree_node::post_order_traversal, 5, 4, 15, 26, 3, 51, 4)
+ (boost::tree_node::post_order_traversal, 1, 5, 16, 27, 4, 67, 5)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 6, 20, 33, 5, 92, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9, 14, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 9, 14, 2, 25, 3)
+ (boost::tree_node::post_order_traversal, 5, 7, 30, 52, 6, 147, 7);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+
+ a_root = *a_child_itr;
+ bf_vals.clear();
+ pre_vals.clear();
+ post_vals.clear();
+ in_vals.clear();
+ df_vals.clear();
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 15)(3, 2, 5)(4, 3, 9)(1, 0, 1)(2, 1, 3)(2, 1, 3)(3, 2, 5)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 15)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 9)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1);
+ emplacer[post_vals]
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(4, 3, 9)
+ (5, 4, 15);
+ emplacer[in_vals]
+ (1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 4, 15)(0, 0, 1)
+ (2, 1, 3)(1, 0, 1)(4, 3, 9)(1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 15)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 3, 9)
+ (boost::tree_node::post_order_traversal, 5, 4, 15);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 15, 26, 3, 51, 4)(3, 2, 5, 7, 1, 11, 2)
+ (4, 3, 9, 14, 2, 25, 3)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 4, 15, 26, 3, 51, 4)(3, 2, 5, 7, 1, 11, 2)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 3, 9, 14, 2, 25, 3)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(4, 3, 9, 14, 2, 25, 3)
+ (5, 4, 15, 26, 3, 51, 4);
+ emplacer[in_vals]
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 4, 15, 26, 3, 51, 4)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(4, 3, 9, 14, 2, 25, 3)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 15, 26, 3, 51, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9, 14, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 9, 14, 2, 25, 3)
+ (boost::tree_node::post_order_traversal, 5, 4, 15, 26, 3, 51, 4);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+
+ *(p = a_root.get_right_child_ptr()) = a_root;
+ test_node(*p, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+
+ bf_vals.clear();
+ pre_vals.clear();
+ post_vals.clear();
+ in_vals.clear();
+ df_vals.clear();
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 21)(3, 2, 5)(5, 4, 15)(1, 0, 1)(2, 1, 3)(3, 2, 5)(4, 3, 9)
+ (0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(2, 1, 3)(3, 2, 5)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 21)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(5, 4, 15)
+ (3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 9)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 5)(0, 0, 1)(1, 0, 1)(2, 1, 3)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(4, 3, 9)(5, 4, 15)(5, 5, 21);
+ emplacer[in_vals]
+ (1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 5, 21)(1, 0, 1)
+ (3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 4, 15)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1)(4, 3, 9)(1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 21)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 5, 4, 15)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 3, 9)
+ (boost::tree_node::post_order_traversal, 5, 4, 15)
+ (boost::tree_node::post_order_traversal, 5, 5, 21);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 21, 38, 4, 83, 5)(3, 2, 5, 7, 1, 11, 2)
+ (5, 4, 15, 26, 3, 51, 4)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (4, 3, 9, 14, 2, 25, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 5, 21, 38, 4, 83, 5)(3, 2, 5, 7, 1, 11, 2)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (5, 4, 15, 26, 3, 51, 4)(3, 2, 5, 7, 1, 11, 2)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 3, 9, 14, 2, 25, 3)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (4, 3, 9, 14, 2, 25, 3)(5, 4, 15, 26, 3, 51, 4)
+ (5, 5, 21, 38, 4, 83, 5);
+ emplacer[in_vals]
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 5, 21, 38, 4, 83, 5)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 4, 15, 26, 3, 51, 4)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(4, 3, 9, 14, 2, 25, 3)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 21, 38, 4, 83, 5)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 5, 4, 15, 26, 3, 51, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9, 14, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 9, 14, 2, 25, 3)
+ (boost::tree_node::post_order_traversal, 5, 4, 15, 26, 3, 51, 4)
+ (boost::tree_node::post_order_traversal, 5, 5, 21, 38, 4, 83, 5);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+ }
+
+ a_root.get_right_child_ptr()->rotate_left();
+
+ {
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 21)(3, 2, 5)(4, 4, 15)(1, 0, 1)(2, 1, 3)(5, 3, 9)(3, 2, 5)
+ (0, 0, 1)(1, 0, 1)(3, 2, 5)(2, 1, 3)(1, 0, 1)(2, 1, 3)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 21)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 4, 15)
+ (5, 3, 9)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 5)(0, 0, 1)(1, 0, 1)(2, 1, 3)(5, 3, 9)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(4, 4, 15)(5, 5, 21);
+ emplacer[in_vals]
+ (1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 5, 21)(1, 0, 1)
+ (3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 3, 9)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1)(4, 4, 15)(1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 21)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 4, 4, 15)
+ (boost::tree_node::pre_order_traversal, 5, 3, 9)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 5, 3, 9)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 4, 15)
+ (boost::tree_node::post_order_traversal, 5, 5, 21);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 21, 38, 4, 83, 5)(3, 2, 5, 7, 1, 11, 2)
+ (4, 4, 15, 26, 3, 51, 4)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(5, 3, 9, 15, 2, 25, 3)
+ (3, 2, 5, 7, 1, 11, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 5, 21, 38, 4, 83, 5)(3, 2, 5, 7, 1, 11, 2)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 4, 15, 26, 3, 51, 4)(5, 3, 9, 15, 2, 25, 3)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(5, 3, 9, 15, 2, 25, 3)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(4, 4, 15, 26, 3, 51, 4)
+ (5, 5, 21, 38, 4, 83, 5);
+ emplacer[in_vals]
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 5, 21, 38, 4, 83, 5)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 3, 9, 15, 2, 25, 3)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(4, 4, 15, 26, 3, 51, 4)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 21, 38, 4, 83, 5)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 4, 4, 15, 26, 3, 51, 4)
+ (boost::tree_node::pre_order_traversal, 5, 3, 9, 15, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 5, 3, 9, 15, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::post_order_traversal, 4, 4, 15, 26, 3, 51, 4)
+ (boost::tree_node::post_order_traversal, 5, 5, 21, 38, 4, 83, 5);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+ }
+
+ {
+ ANode::pointer p(a_root.get_right_child_ptr()->get_right_child_ptr());
+ ANode::iterator p_child_itr(p->emplace_right());
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ DFEmplacer emplacer;
+
+ put(*p_child_itr, boost::tree_node::data_key(), 7);
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 21)(3, 2, 5)(4, 4, 15)(1, 0, 1)(2, 1, 3)(5, 3, 9)(3, 2, 5)
+ (0, 0, 1)(1, 0, 1)(3, 2, 5)(2, 1, 3)(1, 0, 1)(7, 1, 3)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 21)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 4, 15)
+ (5, 3, 9)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(7, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 5)(0, 0, 1)(1, 0, 1)(2, 1, 3)(5, 3, 9)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(7, 1, 3)(3, 2, 5)(4, 4, 15)(5, 5, 21);
+ emplacer[in_vals]
+ (1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 5, 21)(1, 0, 1)
+ (3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 3, 9)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1)(4, 4, 15)(1, 0, 1)(3, 2, 5)(0, 0, 1)(7, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 21)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 4, 4, 15)
+ (boost::tree_node::pre_order_traversal, 5, 3, 9)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 5, 3, 9)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 7, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 7, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 4, 15)
+ (boost::tree_node::post_order_traversal, 5, 5, 21);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 21, 43, 4, 83, 6)(3, 2, 5, 7, 1, 11, 2)
+ (4, 4, 15, 31, 3, 51, 5)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(5, 3, 9, 15, 2, 25, 3)
+ (3, 2, 5, 12, 1, 11, 4)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1)
+ (7, 1, 3, 8, 0, 5, 3)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 5, 21, 43, 4, 83, 6)(3, 2, 5, 7, 1, 11, 2)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 4, 15, 31, 3, 51, 5)(5, 3, 9, 15, 2, 25, 3)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 5, 12, 1, 11, 4)(1, 0, 1, 1, 0, 1, 1)
+ (7, 1, 3, 8, 0, 5, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(5, 3, 9, 15, 2, 25, 3)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(7, 1, 3, 8, 0, 5, 3)
+ (3, 2, 5, 12, 1, 11, 4)(4, 4, 15, 31, 3, 51, 5)
+ (5, 5, 21, 43, 4, 83, 6);
+ emplacer[in_vals]
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 5, 21, 43, 4, 83, 6)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 3, 9, 15, 2, 25, 3)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(4, 4, 15, 31, 3, 51, 5)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 12, 1, 11, 4)
+ (0, 0, 1, 0, 0, 1, 0)(7, 1, 3, 8, 0, 5, 3)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 21, 43, 4, 83, 6)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 4, 4, 15, 31, 3, 51, 5)
+ (boost::tree_node::pre_order_traversal, 5, 3, 9, 15, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 5, 3, 9, 15, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 12, 1, 11, 4)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 7, 1, 3, 8, 0, 5, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 7, 1, 3, 8, 0, 5, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 12, 1, 11, 4)
+ (boost::tree_node::post_order_traversal, 4, 4, 15, 31, 3, 51, 5)
+ (boost::tree_node::post_order_traversal, 5, 5, 21, 43, 4, 83, 6);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+ }
+
+ a_root.get_left_child_ptr()->rotate_right();
+
+ {
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 21)(1, 0, 5)(4, 4, 15)(3, 2, 4)(5, 3, 9)(3, 2, 5)(2, 1, 3)
+ (3, 2, 5)(2, 1, 3)(1, 0, 1)(7, 1, 3)(0, 0, 1)(1, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 21)(1, 0, 5)(3, 2, 4)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 4, 15)
+ (5, 3, 9)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(7, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 4)(1, 0, 5)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 5)(0, 0, 1)(1, 0, 1)(2, 1, 3)(5, 3, 9)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(7, 1, 3)(3, 2, 5)(4, 4, 15)(5, 5, 21);
+ emplacer[in_vals]
+ (1, 0, 5)(3, 2, 4)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 5, 21)(1, 0, 1)
+ (3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 3, 9)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1)(4, 4, 15)(1, 0, 1)(3, 2, 5)(0, 0, 1)(7, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 21)
+ (boost::tree_node::pre_order_traversal, 1, 0, 5)
+ (boost::tree_node::pre_order_traversal, 3, 2, 4)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 4)
+ (boost::tree_node::post_order_traversal, 1, 0, 5)
+ (boost::tree_node::pre_order_traversal, 4, 4, 15)
+ (boost::tree_node::pre_order_traversal, 5, 3, 9)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 5, 3, 9)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 7, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 7, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 4, 15)
+ (boost::tree_node::post_order_traversal, 5, 5, 21);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 21, 43, 4, 86, 6)(1, 0, 5, 7, 2, 14, 3)
+ (4, 4, 15, 31, 3, 51, 5)(3, 2, 4, 6, 1, 9, 2)
+ (5, 3, 9, 15, 2, 25, 3)(3, 2, 5, 12, 1, 11, 4)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1)
+ (7, 1, 3, 8, 0, 5, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 5, 21, 43, 4, 86, 6)(1, 0, 5, 7, 2, 14, 3)
+ (3, 2, 4, 6, 1, 9, 2)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 4, 15, 31, 3, 51, 5)(5, 3, 9, 15, 2, 25, 3)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 5, 12, 1, 11, 4)(1, 0, 1, 1, 0, 1, 1)
+ (7, 1, 3, 8, 0, 5, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 4, 6, 1, 9, 2)
+ (1, 0, 5, 7, 2, 14, 3)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(5, 3, 9, 15, 2, 25, 3)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(7, 1, 3, 8, 0, 5, 3)
+ (3, 2, 5, 12, 1, 11, 4)(4, 4, 15, 31, 3, 51, 5)
+ (5, 5, 21, 43, 4, 86, 6);
+ emplacer[in_vals]
+ (1, 0, 5, 7, 2, 14, 3)(3, 2, 4, 6, 1, 9, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 5, 21, 43, 4, 86, 6)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 3, 9, 15, 2, 25, 3)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(4, 4, 15, 31, 3, 51, 5)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 12, 1, 11, 4)
+ (0, 0, 1, 0, 0, 1, 0)(7, 1, 3, 8, 0, 5, 3)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 21, 43, 4, 86, 6)
+ (boost::tree_node::pre_order_traversal, 1, 0, 5, 7, 2, 14, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 4, 6, 1, 9, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 4, 6, 1, 9, 2)
+ (boost::tree_node::post_order_traversal, 1, 0, 5, 7, 2, 14, 3)
+ (boost::tree_node::pre_order_traversal, 4, 4, 15, 31, 3, 51, 5)
+ (boost::tree_node::pre_order_traversal, 5, 3, 9, 15, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 5, 3, 9, 15, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 12, 1, 11, 4)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 7, 1, 3, 8, 0, 5, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 7, 1, 3, 8, 0, 5, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 12, 1, 11, 4)
+ (boost::tree_node::post_order_traversal, 4, 4, 15, 31, 3, 51, 5)
+ (boost::tree_node::post_order_traversal, 5, 5, 21, 43, 4, 86, 6);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+ }
+
+ a_root.get_left_child_ptr()->rotate_left();
+
+ {
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 21)(3, 2, 5)(4, 4, 15)(1, 0, 1)(2, 1, 3)(5, 3, 9)(3, 2, 5)
+ (0, 0, 1)(1, 0, 1)(3, 2, 5)(2, 1, 3)(1, 0, 1)(7, 1, 3)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 21)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 4, 15)
+ (5, 3, 9)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(7, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 5)(0, 0, 1)(1, 0, 1)(2, 1, 3)(5, 3, 9)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(7, 1, 3)(3, 2, 5)(4, 4, 15)(5, 5, 21);
+ emplacer[in_vals]
+ (1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 5, 21)(1, 0, 1)
+ (3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 3, 9)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1)(4, 4, 15)(1, 0, 1)(3, 2, 5)(0, 0, 1)(7, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 21)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 4, 4, 15)
+ (boost::tree_node::pre_order_traversal, 5, 3, 9)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 5, 3, 9)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 7, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 7, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 4, 15)
+ (boost::tree_node::post_order_traversal, 5, 5, 21);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 21, 43, 4, 83, 6)(3, 2, 5, 7, 1, 11, 2)
+ (4, 4, 15, 31, 3, 51, 5)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(5, 3, 9, 15, 2, 25, 3)
+ (3, 2, 5, 12, 1, 11, 4)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1)
+ (7, 1, 3, 8, 0, 5, 3)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 5, 21, 43, 4, 83, 6)(3, 2, 5, 7, 1, 11, 2)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 4, 15, 31, 3, 51, 5)(5, 3, 9, 15, 2, 25, 3)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 5, 12, 1, 11, 4)(1, 0, 1, 1, 0, 1, 1)
+ (7, 1, 3, 8, 0, 5, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(5, 3, 9, 15, 2, 25, 3)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(7, 1, 3, 8, 0, 5, 3)
+ (3, 2, 5, 12, 1, 11, 4)(4, 4, 15, 31, 3, 51, 5)
+ (5, 5, 21, 43, 4, 83, 6);
+ emplacer[in_vals]
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 5, 21, 43, 4, 83, 6)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 3, 9, 15, 2, 25, 3)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(4, 4, 15, 31, 3, 51, 5)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 12, 1, 11, 4)
+ (0, 0, 1, 0, 0, 1, 0)(7, 1, 3, 8, 0, 5, 3)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 21, 43, 4, 83, 6)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 4, 4, 15, 31, 3, 51, 5)
+ (boost::tree_node::pre_order_traversal, 5, 3, 9, 15, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 5, 3, 9, 15, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 12, 1, 11, 4)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 7, 1, 3, 8, 0, 5, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 7, 1, 3, 8, 0, 5, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 12, 1, 11, 4)
+ (boost::tree_node::post_order_traversal, 4, 4, 15, 31, 3, 51, 5)
+ (boost::tree_node::post_order_traversal, 5, 5, 21, 43, 4, 83, 6);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+ }
+
+ a_root.begin()->clear();
+
+ {
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 17)(3, 0, 1)(4, 4, 15)(5, 3, 9)(3, 2, 5)(3, 2, 5)(2, 1, 3)
+ (1, 0, 1)(7, 1, 3)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 17)(3, 0, 1)(4, 4, 15)(5, 3, 9)(3, 2, 5)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)
+ (7, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (3, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(5, 3, 9)(1, 0, 1)(0, 0, 1)(1, 0, 1)(7, 1, 3)
+ (3, 2, 5)(4, 4, 15)(5, 5, 17);
+ emplacer[in_vals]
+ (3, 0, 1)(5, 5, 17)(1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)
+ (5, 3, 9)(0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 4, 15)(1, 0, 1)(3, 2, 5)
+ (0, 0, 1)(7, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 17)
+ (boost::tree_node::pre_order_traversal, 3, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 0, 1)
+ (boost::tree_node::pre_order_traversal, 4, 4, 15)
+ (boost::tree_node::pre_order_traversal, 5, 3, 9)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 5, 3, 9)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 7, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 7, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 4, 15)
+ (boost::tree_node::post_order_traversal, 5, 5, 17);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 5, 17, 39, 4, 69, 7)(3, 0, 1, 3, 0, 1, 3)
+ (4, 4, 15, 31, 3, 51, 5)(5, 3, 9, 15, 2, 25, 3)
+ (3, 2, 5, 12, 1, 11, 4)(3, 2, 5, 7, 1, 11, 2)
+ (2, 1, 3, 3, 0, 5, 1)(1, 0, 1, 1, 0, 1, 1)
+ (7, 1, 3, 8, 0, 5, 3)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 5, 17, 39, 4, 69, 7)(3, 0, 1, 3, 0, 1, 3)
+ (4, 4, 15, 31, 3, 51, 5)(5, 3, 9, 15, 2, 25, 3)
+ (3, 2, 5, 7, 1, 11, 2)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 5, 12, 1, 11, 4)(1, 0, 1, 1, 0, 1, 1)
+ (7, 1, 3, 8, 0, 5, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (3, 0, 1, 3, 0, 1, 3)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(5, 3, 9, 15, 2, 25, 3)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(7, 1, 3, 8, 0, 5, 3)
+ (3, 2, 5, 12, 1, 11, 4)(4, 4, 15, 31, 3, 51, 5)
+ (5, 5, 17, 39, 4, 69, 7);
+ emplacer[in_vals]
+ (3, 0, 1, 3, 0, 1, 3)(5, 5, 17, 39, 4, 69, 7)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 7, 1, 11, 2)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(5, 3, 9, 15, 2, 25, 3)
+ (0, 0, 1, 0, 0, 1, 0)(2, 1, 3, 3, 0, 5, 1)
+ (1, 0, 1, 1, 0, 1, 1)(4, 4, 15, 31, 3, 51, 5)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 5, 12, 1, 11, 4)
+ (0, 0, 1, 0, 0, 1, 0)(7, 1, 3, 8, 0, 5, 3)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 17, 39, 4, 69, 7)
+ (boost::tree_node::pre_order_traversal, 3, 0, 1, 3, 0, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 0, 1, 3, 0, 1, 3)
+ (boost::tree_node::pre_order_traversal, 4, 4, 15, 31, 3, 51, 5)
+ (boost::tree_node::pre_order_traversal, 5, 3, 9, 15, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 7, 1, 11, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 5, 3, 9, 15, 2, 25, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5, 12, 1, 11, 4)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 7, 1, 3, 8, 0, 5, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 7, 1, 3, 8, 0, 5, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5, 12, 1, 11, 4)
+ (boost::tree_node::post_order_traversal, 4, 4, 15, 31, 3, 51, 5)
+ (boost::tree_node::post_order_traversal, 5, 5, 17, 39, 4, 69, 7);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::binary_node_gen
+ , DataMap
+ , void
+ , AccuYourUintKey
+ >
+ FNode;
+ typedef boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ BOOST_TYPEOF(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ MoreValues;
+ typedef boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , BOOST_TYPEOF(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ DFMoreValues;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ BOOST_AUTO(data, boost::tree_node::get<example_keys::your_uint>(*itr));
+
+ if (1 < data)
+ {
+ --data;
+ itr->emplace_right(
+ boost::fusion::make_pair<example_keys::your_uint>(data)
+ , boost::fusion::make_pair<example_keys::your_char>('0' + data)
+ );
+ --data;
+ itr->emplace_left(
+ boost::fusion::make_pair<example_keys::your_uint>(data)
+ , boost::fusion::make_pair<example_keys::your_char>('0' + data)
+ );
+ }
+ }
+
+ {
+ MoreValues bf_vals, pre_vals, post_vals, in_vals;
+ DFMoreValues df_vals;
+ DFEmplacer emplacer;
+
+ emplacer[bf_vals]
+ (5, '5', 26)(3, '3', 7)(4, '4', 14)(1, '1', 1)(2, '2', 3)
+ (2, '2', 3)(3, '3', 7)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[pre_vals]
+ (5, '5', 26)(3, '3', 7)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(4, '4', 14)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (3, '3', 7)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[post_vals]
+ (1, '1', 1)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 7)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(3, '3', 7)(4, '4', 14)(5, '5', 26);
+ emplacer[in_vals]
+ (1, '1', 1)(3, '3', 7)(0, '0', 0)(2, '2', 3)(1, '1', 1)
+ (5, '5', 26)(0, '0', 0)(2, '2', 3)(1, '1', 1)(4, '4', 14)
+ (1, '1', 1)(3, '3', 7)(0, '0', 0)(2, '2', 3)(1, '1', 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, '5', 26)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 4, '4', 14)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::post_order_traversal, 4, '4', 14)
+ (boost::tree_node::post_order_traversal, 5, '5', 26);
+ test_f_node(f_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+ }
+
+ put(
+ *f_root.get_right_child_ptr()->get_left_child_ptr()
+ , example_keys::your_uint()
+ , 7
+ );
+
+ {
+ MoreValues bf_vals, pre_vals, post_vals, in_vals;
+ DFMoreValues df_vals;
+ DFEmplacer emplacer;
+
+ emplacer[bf_vals]
+ (5, '5', 31)(3, '3', 7)(4, '4', 19)(1, '1', 1)(2, '2', 3)
+ (7, '2', 8)(3, '3', 7)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[pre_vals]
+ (5, '5', 31)(3, '3', 7)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(4, '4', 19)(7, '2', 8)(0, '0', 0)(1, '1', 1)
+ (3, '3', 7)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[post_vals]
+ (1, '1', 1)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 7)
+ (0, '0', 0)(1, '1', 1)(7, '2', 8)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(3, '3', 7)(4, '4', 19)(5, '5', 31);
+ emplacer[in_vals]
+ (1, '1', 1)(3, '3', 7)(0, '0', 0)(2, '2', 3)(1, '1', 1)
+ (5, '5', 31)(0, '0', 0)(7, '2', 8)(1, '1', 1)(4, '4', 19)
+ (1, '1', 1)(3, '3', 7)(0, '0', 0)(2, '2', 3)(1, '1', 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, '5', 31)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 4, '4', 19)
+ (boost::tree_node::pre_order_traversal, 7, '2', 8)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 7, '2', 8)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::post_order_traversal, 4, '4', 19)
+ (boost::tree_node::post_order_traversal, 5, '5', 31);
+ test_f_node(f_root, bf_vals, pre_vals, post_vals, in_vals, df_vals);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ return 0;
+}
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+

Added: sandbox/tree_node/libs/tree_node/test/iterator_functions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/test/iterator_functions.hpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,844 @@
+// 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_TREE_NODE_TEST_ITERATOR_FUNCTIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_TEST_ITERATOR_FUNCTIONS_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/tree_node/breadth_first_iterator.hpp>
+#include <boost/tree_node/breadth_first_desc_iterator.hpp>
+#include <boost/tree_node/pre_order_iterator.hpp>
+#include <boost/tree_node/pre_order_desc_iterator.hpp>
+#include <boost/tree_node/post_order_iterator.hpp>
+#include <boost/tree_node/post_order_desc_iterator.hpp>
+#include <boost/tree_node/in_order_iterator.hpp>
+#include <boost/tree_node/depth_first_iterator.hpp>
+#include <boost/tree_node/depth_first_desc_iterator.hpp>
+#include <boost/tree_node/algorithm/dereference_iterator.hpp>
+#include "../example/type_definitions.hpp"
+#include <boost/test/minimal.hpp>
+
+template <typename Node>
+void test_children(Node const& node)
+{
+ typename Node::const_iterator iend = node.end();
+
+ for (typename Node::const_iterator itr = node.begin(); itr != iend; ++itr)
+ {
+ BOOST_CHECK(
+ boost::tree_node::dereference_iterator(
+ itr
+ ).get_parent_ptr() == &node
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr)
+ , boost::tree_node::position_key()
+ ) == itr
+ );
+ }
+}
+
+template <typename TreeItr, typename Itr>
+bool test_iterators(TreeItr tree_itr, Itr itr, Itr itr_end)
+{
+ while (tree_itr)
+ {
+ if (itr == itr_end)
+ {
+ return false;
+ }
+
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(tree_itr)
+ , boost::tree_node::data_key()
+ ) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(tree_itr)
+ , boost::tree_node::height_key()
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(tree_itr)
+ , boost::tree_node::count_key()
+ ) == boost::get<2>(*itr)
+ );
+#if !defined BOOST_NO_SFINAE
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<3>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<4>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<5>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<6>(*itr)
+ );
+#endif
+ test_children(boost::tree_node::dereference_iterator(tree_itr));
+ ++tree_itr;
+ ++itr;
+ }
+
+ BOOST_CHECK(itr == itr_end);
+ return true;
+}
+
+template <typename DFItr, typename TupleItr>
+bool test_df_iterator(DFItr df_itr, TupleItr t_itr, TupleItr t_end)
+{
+ while (df_itr)
+ {
+ if (t_itr == t_end)
+ {
+ return false;
+ }
+
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(df_itr) == boost::get<0>(*t_itr)
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(df_itr)
+ , boost::tree_node::data_key()
+ ) == boost::get<1>(*t_itr)
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(df_itr)
+ , boost::tree_node::height_key()
+ ) == boost::get<2>(*t_itr)
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(df_itr)
+ , boost::tree_node::count_key()
+ ) == boost::get<3>(*t_itr)
+ );
+#if !defined BOOST_NO_SFINAE
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<4>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<5>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<6>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<7>(*t_itr)
+ );
+#endif
+ test_children(boost::tree_node::dereference_iterator(df_itr));
+ ++df_itr;
+ ++t_itr;
+ }
+
+ BOOST_CHECK(t_itr == t_end);
+ return true;
+}
+
+template <
+ typename Node
+ , typename Values
+ , typename DFValues
+>
+void
+ test_node(
+ Node const& node
+ , Values const& bf_vals
+ , Values const& pre_vals
+ , Values const& post_vals
+ , DFValues const& df_vals
+ )
+{
+ boost::tree_node::breadth_first_iterator<Node const> bf_itr(node);
+ boost::tree_node::breadth_first_descendant_iterator<Node const> bf_d_itr(
+ node
+ );
+ boost::tree_node::pre_order_iterator<Node const> pre_itr(node);
+ boost::tree_node::pre_order_descendant_iterator<Node const> pre_d_itr(
+ node
+ );
+ boost::tree_node::post_order_iterator<Node const> post_itr(node);
+ boost::tree_node::post_order_descendant_iterator<Node const> post_d_itr(
+ node
+ );
+ boost::tree_node::depth_first_iterator<Node const> df_itr(node);
+ boost::tree_node::depth_first_descendant_iterator<Node const> df_d_itr(
+ node
+ );
+ Values p_d_vals(post_vals);
+ DFValues df_d_vals(df_vals);
+
+ BOOST_CHECK(test_iterators(bf_itr, bf_vals.begin(), bf_vals.end()));
+ BOOST_CHECK(test_iterators(bf_d_itr, ++bf_vals.begin(), bf_vals.end()));
+ BOOST_CHECK(test_iterators(pre_itr, pre_vals.begin(), pre_vals.end()));
+ BOOST_CHECK(test_iterators(pre_d_itr, ++pre_vals.begin(), pre_vals.end()));
+ BOOST_CHECK(test_iterators(post_itr, post_vals.begin(), post_vals.end()));
+ p_d_vals.pop_back();
+ BOOST_CHECK(test_iterators(post_d_itr, p_d_vals.begin(), p_d_vals.end()));
+ BOOST_CHECK(test_df_iterator(df_itr, df_vals.begin(), df_vals.end()));
+ df_d_vals.pop_front();
+ df_d_vals.pop_back();
+ BOOST_CHECK(
+ test_df_iterator(df_d_itr, df_d_vals.begin(), df_d_vals.end())
+ );
+}
+
+template <
+ typename Node
+ , typename Values
+ , typename DFValues
+>
+void
+ test_node(
+ Node const& node
+ , Values const& bf_vals
+ , Values const& pre_vals
+ , Values const& post_vals
+ , Values const& in_vals
+ , DFValues const& df_vals
+ )
+{
+ boost::tree_node::in_order_iterator<Node const> in_itr(node);
+
+ test_node(node, bf_vals, pre_vals, post_vals, df_vals);
+ BOOST_CHECK(test_iterators(in_itr, in_vals.begin(), in_vals.end()));
+}
+
+template <typename TreeItr, typename Itr>
+bool test_associative_iterators(TreeItr tree_itr, Itr itr, Itr itr_end)
+{
+ while (tree_itr)
+ {
+ if (itr == itr_end)
+ {
+ return false;
+ }
+
+ BOOST_CHECK(tree_itr->first == boost::get<0>(*itr));
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(tree_itr)
+ , boost::tree_node::data_key()
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(tree_itr)
+ , boost::tree_node::height_key()
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(tree_itr)
+ , boost::tree_node::count_key()
+ ) == boost::get<3>(*itr)
+ );
+#if !defined BOOST_NO_SFINAE
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<4>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<5>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<6>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<7>(*itr)
+ );
+#endif
+ test_children(boost::tree_node::dereference_iterator(tree_itr));
+ ++tree_itr;
+ ++itr;
+ }
+
+ BOOST_CHECK(itr == itr_end);
+ return true;
+}
+
+template <typename DFItr, typename TupleItr>
+bool test_df_assoc_iterator(DFItr df_itr, TupleItr t_itr, TupleItr t_end)
+{
+ while (df_itr)
+ {
+ if (t_itr == t_end)
+ {
+ return false;
+ }
+
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(df_itr) == boost::get<0>(*t_itr)
+ );
+ BOOST_CHECK(df_itr->first == boost::get<1>(*t_itr));
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(df_itr)
+ , boost::tree_node::data_key()
+ ) == boost::get<2>(*t_itr)
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(df_itr)
+ , boost::tree_node::height_key()
+ ) == boost::get<3>(*t_itr)
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(df_itr)
+ , boost::tree_node::count_key()
+ ) == boost::get<4>(*t_itr)
+ );
+#if !defined BOOST_NO_SFINAE
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<5>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<6>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<7>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<8>(*t_itr)
+ );
+#endif
+ test_children(boost::tree_node::dereference_iterator(df_itr));
+ ++df_itr;
+ ++t_itr;
+ }
+
+ BOOST_CHECK(t_itr == t_end);
+ return true;
+}
+
+template <
+ typename Node
+ , typename Values
+ , typename KeyValues
+ , typename DFValues
+ , typename DFKeyValues
+>
+void
+ test_associative_node(
+ Node const& node
+ , Values const& bf_vals
+ , KeyValues const& bf_kvs
+ , Values const& pre_vals
+ , KeyValues const& pre_kvs
+ , Values const& post_vals
+ , KeyValues const& post_kvs
+ , DFValues const& df_vals
+ , DFKeyValues const& df_kvs
+ )
+{
+ boost::tree_node::breadth_first_iterator<Node const> bf_itr(node);
+ boost::tree_node::breadth_first_descendant_iterator<Node const> bf_d_itr(
+ node
+ );
+ boost::tree_node::pre_order_iterator<Node const> pre_itr(node);
+ boost::tree_node::pre_order_descendant_iterator<Node const> pre_d_itr(
+ node
+ );
+ boost::tree_node::post_order_iterator<Node const> post_itr(node);
+ boost::tree_node::post_order_descendant_iterator<Node const> post_d_itr(
+ node
+ );
+ boost::tree_node::depth_first_iterator<Node const> df_itr(node);
+ boost::tree_node::depth_first_descendant_iterator<Node const> df_d_itr(
+ node
+ );
+
+ BOOST_CHECK(test_iterators(bf_itr, bf_vals.begin(), bf_vals.end()));
+ BOOST_CHECK(
+ test_associative_iterators(bf_d_itr, bf_kvs.begin(), bf_kvs.end())
+ );
+ BOOST_CHECK(test_iterators(pre_itr, pre_vals.begin(), pre_vals.end()));
+ BOOST_CHECK(
+ test_associative_iterators(pre_d_itr, pre_kvs.begin(), pre_kvs.end())
+ );
+ BOOST_CHECK(test_iterators(post_itr, post_vals.begin(), post_vals.end()));
+ BOOST_CHECK(
+ test_associative_iterators(
+ post_d_itr
+ , post_kvs.begin()
+ , post_kvs.end()
+ )
+ );
+ BOOST_CHECK(test_df_iterator(df_itr, df_vals.begin(), df_vals.end()));
+ BOOST_CHECK(
+ test_df_assoc_iterator(df_d_itr, df_kvs.begin(), df_kvs.end())
+ );
+}
+
+template <typename Itr1, typename Itr2>
+bool test_node_copies(Itr1 itr1, Itr2 itr2)
+{
+ while (itr1)
+ {
+ if (
+ boost::tree_node::traversal_state(
+ itr2
+ ) == boost::tree_node::no_traversal
+ )
+ {
+ return false;
+ }
+
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::data_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::data_key()
+ )
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::height_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::height_key()
+ )
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::count_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::count_key()
+ )
+ );
+#if !defined BOOST_NO_SFINAE
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+#endif
+ ++itr1;
+ ++itr2;
+ }
+
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(
+ itr2
+ ) == boost::tree_node::no_traversal
+ );
+ return true;
+}
+
+template <typename Itr1, typename Itr2>
+bool test_associative_node_copies(Itr1 itr1, Itr2 itr2)
+{
+ while (itr1)
+ {
+ if (
+ boost::tree_node::traversal_state(
+ itr2
+ ) == boost::tree_node::no_traversal
+ )
+ {
+ return false;
+ }
+
+ BOOST_CHECK(itr1->first == itr2->first);
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::data_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::data_key()
+ )
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::height_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::height_key()
+ )
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::count_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::count_key()
+ )
+ );
+#if !defined BOOST_NO_SFINAE
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+#endif
+ ++itr1;
+ ++itr2;
+ }
+
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(
+ itr2
+ ) == boost::tree_node::no_traversal
+ );
+ return true;
+}
+
+template <typename TreeItr, typename Itr>
+bool test_f_iters(TreeItr tree_itr, Itr itr, Itr itr_end)
+{
+ while (tree_itr)
+ {
+ if (itr == itr_end)
+ {
+ return false;
+ }
+
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_uint>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_char>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<2>(*itr)
+ );
+ ++tree_itr;
+ ++itr;
+ }
+
+ BOOST_CHECK(itr == itr_end);
+ return true;
+}
+
+template <typename DFItr, typename TupleItr>
+bool test_f_df_iter(DFItr df_itr, TupleItr t_itr, TupleItr t_end)
+{
+ while (df_itr)
+ {
+ if (t_itr == t_end)
+ {
+ return false;
+ }
+
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(df_itr) == boost::get<0>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_uint>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<1>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_char>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<2>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<3>(*t_itr)
+ );
+ ++df_itr;
+ ++t_itr;
+ }
+
+ BOOST_CHECK(t_itr == t_end);
+ return true;
+}
+
+template <
+ typename Node
+ , typename Values
+ , typename DFValues
+>
+void
+ test_f_node(
+ Node const& node
+ , Values const& bf_vals
+ , Values const& pre_vals
+ , Values const& post_vals
+ , DFValues const& df_vals
+ )
+{
+ boost::tree_node::breadth_first_iterator<Node const> bf_itr(node);
+ boost::tree_node::breadth_first_descendant_iterator<Node const> bf_d_itr(
+ node
+ );
+ boost::tree_node::pre_order_iterator<Node const> pre_itr(node);
+ boost::tree_node::pre_order_descendant_iterator<Node const> pre_d_itr(
+ node
+ );
+ boost::tree_node::post_order_iterator<Node const> post_itr(node);
+ boost::tree_node::post_order_descendant_iterator<Node const> post_d_itr(
+ node
+ );
+ boost::tree_node::depth_first_iterator<Node const> df_itr(node);
+ boost::tree_node::depth_first_descendant_iterator<Node const> df_d_itr(
+ node
+ );
+ Values p_d_vals(post_vals);
+ DFValues df_d_vals(df_vals);
+
+ BOOST_CHECK(test_f_iters(bf_itr, bf_vals.begin(), bf_vals.end()));
+ BOOST_CHECK(test_f_iters(bf_d_itr, ++bf_vals.begin(), bf_vals.end()));
+ BOOST_CHECK(test_f_iters(pre_itr, pre_vals.begin(), pre_vals.end()));
+ BOOST_CHECK(test_f_iters(pre_d_itr, ++pre_vals.begin(), pre_vals.end()));
+ BOOST_CHECK(test_f_iters(post_itr, post_vals.begin(), post_vals.end()));
+ p_d_vals.pop_back();
+ BOOST_CHECK(test_f_iters(post_d_itr, p_d_vals.begin(), p_d_vals.end()));
+ BOOST_CHECK(test_f_df_iter(df_itr, df_vals.begin(), df_vals.end()));
+ df_d_vals.pop_front();
+ df_d_vals.pop_back();
+ BOOST_CHECK(test_f_df_iter(df_d_itr, df_d_vals.begin(), df_d_vals.end()));
+}
+
+template <
+ typename Node
+ , typename Values
+ , typename DFValues
+>
+void
+ test_f_node(
+ Node const& node
+ , Values const& bf_vals
+ , Values const& pre_vals
+ , Values const& post_vals
+ , Values const& in_vals
+ , DFValues const& df_vals
+ )
+{
+ boost::tree_node::in_order_iterator<Node const> in_itr(node);
+
+ test_f_node(node, bf_vals, pre_vals, post_vals, df_vals);
+ BOOST_CHECK(test_f_iters(in_itr, in_vals.begin(), in_vals.end()));
+}
+
+template <typename TreeItr, typename Itr>
+bool test_f_associative_iters(TreeItr tree_itr, Itr itr, Itr itr_end)
+{
+ while (tree_itr)
+ {
+ if (itr == itr_end)
+ {
+ return false;
+ }
+
+ BOOST_CHECK(tree_itr->first == boost::get<0>(*itr));
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_uint>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_char>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<3>(*itr)
+ );
+ ++tree_itr;
+ ++itr;
+ }
+
+ BOOST_CHECK(itr == itr_end);
+ return true;
+}
+
+template <typename DFItr, typename TupleItr>
+bool test_f_df_assoc_iter(DFItr df_itr, TupleItr t_itr, TupleItr t_end)
+{
+ while (df_itr)
+ {
+ if (t_itr == t_end)
+ {
+ return false;
+ }
+
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(df_itr) == boost::get<0>(*t_itr)
+ );
+ BOOST_CHECK(df_itr->first == boost::get<1>(*t_itr));
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_uint>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<2>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_char>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<3>(*t_itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::tree_node::dereference_iterator(df_itr)
+ ) == boost::get<4>(*t_itr)
+ );
+ ++df_itr;
+ ++t_itr;
+ }
+
+ BOOST_CHECK(t_itr == t_end);
+ return true;
+}
+
+template <
+ typename Node
+ , typename Values
+ , typename KeyValues
+ , typename DFValues
+ , typename DFKeyValues
+>
+void
+ test_f_associative_node(
+ Node const& node
+ , Values const& bf_vals
+ , KeyValues const& bf_kvs
+ , Values const& pre_vals
+ , KeyValues const& pre_kvs
+ , Values const& post_vals
+ , KeyValues const& post_kvs
+ , DFValues const& df_vals
+ , DFKeyValues const& df_kvs
+ )
+{
+ boost::tree_node::breadth_first_iterator<Node const> bf_itr(node);
+ boost::tree_node::breadth_first_descendant_iterator<Node const> bf_d_itr(
+ node
+ );
+ boost::tree_node::pre_order_iterator<Node const> pre_itr(node);
+ boost::tree_node::pre_order_descendant_iterator<Node const> pre_d_itr(
+ node
+ );
+ boost::tree_node::post_order_iterator<Node const> post_itr(node);
+ boost::tree_node::post_order_descendant_iterator<Node const> post_d_itr(
+ node
+ );
+ boost::tree_node::depth_first_iterator<Node const> df_itr(node);
+ boost::tree_node::depth_first_descendant_iterator<Node const> df_d_itr(
+ node
+ );
+
+ BOOST_CHECK(test_f_iters(bf_itr, bf_vals.begin(), bf_vals.end()));
+ BOOST_CHECK(
+ test_f_associative_iters(bf_d_itr, bf_kvs.begin(), bf_kvs.end())
+ );
+ BOOST_CHECK(test_f_iters(pre_itr, pre_vals.begin(), pre_vals.end()));
+ BOOST_CHECK(
+ test_f_associative_iters(pre_d_itr, pre_kvs.begin(), pre_kvs.end())
+ );
+ BOOST_CHECK(test_f_iters(post_itr, post_vals.begin(), post_vals.end()));
+ BOOST_CHECK(
+ test_f_associative_iters(post_d_itr, post_kvs.begin(), post_kvs.end())
+ );
+ BOOST_CHECK(test_f_df_iter(df_itr, df_vals.begin(), df_vals.end()));
+ BOOST_CHECK(test_f_df_assoc_iter(df_d_itr, df_kvs.begin(), df_kvs.end()));
+}
+
+#endif // LIBS_TREE_NODE_TEST_ITERATOR_FUNCTIONS_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/test/nary_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/test/nary_node.cpp 2012-12-20 22:42:25 EST (Thu, 20 Dec 2012)
@@ -0,0 +1,1753 @@
+// 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)
+
+//#define BOOST_TYPEOF_COMPLIANT
+
+#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 <iterator>
+#include <boost/typeof/typeof.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <boost/utility/get_reference.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/typeof/with_count.hpp>
+#include <boost/tree_node/typeof/with_height.hpp>
+#include <boost/tree_node/typeof/with_position.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/tree_node/typeof/with_accumulation.hpp>
+#endif
+
+#include "../example/type_definitions.hpp"
+#include "iterator_functions.hpp"
+
+typedef boost::emplace_function_gen<boost::dequeS>::type
+ DFEmplacer;
+
+#include <boost/tree_node/typeof/nary_node.hpp>
+
+template <typename Selector>
+void test()
+{
+#if defined BOOST_NO_SFINAE
+ typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::nary_node_gen<Selector>
+ >
+ >
+ , double
+ >
+ ANode;
+#else
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_position_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::with_count_gen<
+ boost::tree_node::with_accumulation_gen<
+ boost::tree_node::nary_node_gen<
+ Selector
+ >
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , double
+ , void
+ , AccuHeightKey
+ >
+ ANode;
+#endif
+
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ Values;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::data_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::height_key()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ get(
+ boost::get_reference<ANode const>()
+ , boost::tree_node::count_key()
+ )
+ )
+#if !defined BOOST_NO_SFINAE
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ boost::tree_node::accumulation_key<>
+ >(boost::get_reference<ANode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuCountKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::get_reference<ANode const>()
+ )
+ )
+#endif // BOOST_NO_SFINAE
+ >
+ >::type
+ DFValues;
+
+ ANode a_root(5.0);
+
+ BOOST_CHECK(
+ !a_root.get_parent_ptr()
+// , "Parent member uninitialized."
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<ANode> itr(a_root);
+ itr;
+ ++itr
+ )
+ {
+ BOOST_AUTO(data, get(*itr, boost::tree_node::data_key()));
+
+ if (1 < data)
+ {
+ for (std::size_t i = 0; i < data; ++i)
+ {
+ typename ANode::iterator child_itr(
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ (std::tr1::is_same<Selector,boost::slistS>::value) ? (
+ (*itr).emplace(data - 1 - i)
+ ) :
+#endif
+ (*itr).emplace(i)
+ );
+ typename ANode::const_pointer const_child(&*child_itr);
+ BOOST_CHECK(
+ (*child_itr).get_parent_ptr() == &*itr
+// , "Ctor not linking child to parent."
+ );
+ BOOST_CHECK(
+ (
+ (*child_itr).get_parent_ptr()
+ ) == (*const_child).get_parent_ptr()
+// , "Why are these pointers different?"
+ );
+
+ {
+ typename ANode::iterator c_itr = (*itr).begin();
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ if (!std::tr1::is_same<Selector,boost::slistS>::value)
+#endif
+ std::advance(c_itr, i);
+ BOOST_CHECK(
+ &*child_itr == &*c_itr
+// , "Ctor not linking parent to child."
+ );
+ }
+ }
+ }
+ }
+
+ {
+ Values bf_vals, pre_vals, post_vals;
+ DFValues df_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 3, 12)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 12)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(4, 3, 12)(5, 4, 24);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 4, 24);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 24, 31, 3, 76, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(4, 3, 12, 15, 2, 32, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 4, 24, 31, 3, 76, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 3, 12, 15, 2, 32, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (4, 3, 12, 15, 2, 32, 2)(5, 4, 24, 31, 3, 76, 3);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 24, 31, 3, 76, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::post_order_traversal, 5, 4, 24, 31, 3, 76, 3);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, df_vals);
+ }
+
+ {
+ ANode a_copy(a_root);
+ boost::tree_node::breadth_first_iterator<ANode const>
+ bf_root_itr(a_root), bf_copy_itr(a_copy);
+ boost::tree_node::breadth_first_descendant_iterator<ANode const>
+ bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);
+ boost::tree_node::pre_order_iterator<ANode const>
+ pre_root_itr(a_root), pre_copy_itr(a_copy);
+ boost::tree_node::pre_order_descendant_iterator<ANode const>
+ pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);
+ boost::tree_node::post_order_iterator<ANode const>
+ post_root_itr(a_root), post_copy_itr(a_copy);
+ boost::tree_node::post_order_descendant_iterator<ANode const>
+ post_d_root_itr(a_root), post_d_copy_itr(a_copy);
+ boost::tree_node::depth_first_iterator<ANode const>
+ df_root_itr(a_root), df_copy_itr(a_copy);
+ boost::tree_node::depth_first_descendant_iterator<ANode const>
+ df_d_root_itr(a_root), df_d_copy_itr(a_copy);
+
+ BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));
+ BOOST_CHECK(test_node_copies(bf_d_root_itr, bf_d_copy_itr));
+ BOOST_CHECK(test_node_copies(pre_root_itr, pre_copy_itr));
+ BOOST_CHECK(test_node_copies(pre_d_root_itr, pre_d_copy_itr));
+ BOOST_CHECK(test_node_copies(post_root_itr, post_copy_itr));
+ BOOST_CHECK(test_node_copies(post_d_root_itr, post_d_copy_itr));
+ BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));
+ BOOST_CHECK(test_node_copies(df_d_root_itr, df_d_copy_itr));
+ }
+
+ {
+ typename ANode::iterator a_child_itr(
+ (*(++a_root.begin())).insert(a_root)
+ );
+ Values bf_vals, pre_vals, post_vals;
+ DFValues df_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 48)(0, 0, 1)(1, 5, 25)(2, 1, 3)(3, 2, 6)(4, 3, 12)(5, 4, 24)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 3, 12)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 48)(0, 0, 1)(1, 5, 25)(5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(4, 3, 12)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(4, 3, 12)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(3, 2, 6)(4, 3, 12)(5, 4, 24)(1, 5, 25)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 3, 12)(5, 6, 48);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 48)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 5, 25)
+ (boost::tree_node::pre_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 4, 24)
+ (boost::tree_node::post_order_traversal, 1, 5, 25)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 6, 48);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 48, 62, 5, 200, 4)(0, 0, 1, 0, 0, 1, 0)
+ (1, 5, 25, 32, 4, 101, 4)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(4, 3, 12, 15, 2, 32, 2)
+ (5, 4, 24, 31, 3, 76, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (4, 3, 12, 15, 2, 32, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 6, 48, 62, 5, 200, 4)(0, 0, 1, 0, 0, 1, 0)
+ (1, 5, 25, 32, 4, 101, 4)(5, 4, 24, 31, 3, 76, 3)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 6, 7, 1, 13, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(4, 3, 12, 15, 2, 32, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 6, 7, 1, 13, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 3, 12, 15, 2, 32, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(4, 3, 12, 15, 2, 32, 2)
+ (5, 4, 24, 31, 3, 76, 3)(1, 5, 25, 32, 4, 101, 4)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (4, 3, 12, 15, 2, 32, 2)(5, 6, 48, 62, 5, 200, 4);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 48, 62, 5, 200, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 5, 25, 32, 4, 101, 4)
+ (boost::tree_node::pre_order_traversal, 5, 4, 24, 31, 3, 76, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::post_order_traversal, 5, 4, 24, 31, 3, 76, 3)
+ (boost::tree_node::post_order_traversal, 1, 5, 25, 32, 4, 101, 4)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::post_order_traversal, 5, 6, 48, 62, 5, 200, 4);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, df_vals);
+
+ a_root = *a_child_itr;
+ bf_vals.clear();
+ pre_vals.clear();
+ post_vals.clear();
+ df_vals.clear();
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 3, 12)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 12)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(4, 3, 12)(5, 4, 24);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 4, 24);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 4, 24, 31, 3, 76, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(4, 3, 12, 15, 2, 32, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 4, 24, 31, 3, 76, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 3, 12, 15, 2, 32, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (4, 3, 12, 15, 2, 32, 2)(5, 4, 24, 31, 3, 76, 3);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 24, 31, 3, 76, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::post_order_traversal, 5, 4, 24, 31, 3, 76, 3);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, df_vals);
+
+ a_child_itr = a_root.begin();
+ std::advance(a_child_itr, 4);
+ a_child_itr = (*a_child_itr).begin();
+ *a_child_itr = a_root;
+ test_node(*a_child_itr, bf_vals, pre_vals, post_vals, df_vals);
+
+ bf_vals.clear();
+ pre_vals.clear();
+ post_vals.clear();
+ df_vals.clear();
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 47)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 5, 35)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(5, 4, 24)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)
+ (4, 3, 12)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 47)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 5, 35)(5, 4, 24)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 12)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 3, 12)(5, 4, 24)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 5, 35)(5, 6, 47);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 47)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 5, 35)
+ (boost::tree_node::pre_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 5, 35)
+ (boost::tree_node::post_order_traversal, 5, 6, 47);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 47, 62, 5, 197, 4)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(4, 5, 35, 46, 4, 130, 4)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(5, 4, 24, 31, 3, 76, 3)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(4, 3, 12, 15, 2, 32, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 6, 47, 62, 5, 197, 4)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 5, 35, 46, 4, 130, 4)(5, 4, 24, 31, 3, 76, 3)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 6, 7, 1, 13, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(4, 3, 12, 15, 2, 32, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 6, 7, 1, 13, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(3, 2, 6, 7, 1, 13, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(4, 3, 12, 15, 2, 32, 2)
+ (5, 4, 24, 31, 3, 76, 3)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(4, 5, 35, 46, 4, 130, 4)
+ (5, 6, 47, 62, 5, 197, 4);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 47, 62, 5, 197, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 4, 5, 35, 46, 4, 130, 4)
+ (boost::tree_node::pre_order_traversal, 5, 4, 24, 31, 3, 76, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::post_order_traversal, 5, 4, 24, 31, 3, 76, 3)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::post_order_traversal, 4, 5, 35, 46, 4, 130, 4)
+ (boost::tree_node::post_order_traversal, 5, 6, 47, 62, 5, 197, 4);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, df_vals);
+ }
+
+ {
+ typename ANode::iterator a_child_itr(a_root.begin());
+
+ std::advance(a_child_itr, 3);
+ (*a_child_itr).clear();
+
+ Values bf_vals, pre_vals, post_vals;
+ DFValues df_vals;
+ DFEmplacer emplacer;
+
+#if defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 42)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 0, 1)(4, 5, 35)(0, 0, 1)
+ (1, 0, 1)(5, 4, 24)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(3, 2, 6)(4, 3, 12)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 42)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 0, 1)
+ (4, 5, 35)(5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 12)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)
+ (4, 3, 12)(5, 4, 24)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 5, 35)(5, 6, 42);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 42)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 0, 1)
+ (boost::tree_node::pre_order_traversal, 4, 5, 35)
+ (boost::tree_node::pre_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 5, 35)
+ (boost::tree_node::post_order_traversal, 5, 6, 42);
+#else // !defined BOOST_NO_SFINAE
+ emplacer[bf_vals]
+ (5, 6, 42, 58, 5, 180, 4)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 0, 1, 3, 0, 1, 3)(4, 5, 35, 46, 4, 130, 4)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (5, 4, 24, 31, 3, 76, 3)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (4, 3, 12, 15, 2, 32, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[pre_vals]
+ (5, 6, 42, 58, 5, 180, 4)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 0, 1, 3, 0, 1, 3)(4, 5, 35, 46, 4, 130, 4)
+ (5, 4, 24, 31, 3, 76, 3)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (4, 3, 12, 15, 2, 32, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1);
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 0, 1, 3, 0, 1, 3)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (3, 2, 6, 7, 1, 13, 2)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (4, 3, 12, 15, 2, 32, 2)(5, 4, 24, 31, 3, 76, 3)
+ (1, 0, 1, 1, 0, 1, 1)(0, 0, 1, 0, 0, 1, 0)
+ (1, 0, 1, 1, 0, 1, 1)(2, 1, 3, 3, 0, 5, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (0, 0, 1, 0, 0, 1, 0)(1, 0, 1, 1, 0, 1, 1)
+ (2, 1, 3, 3, 0, 5, 1)(3, 2, 6, 7, 1, 13, 2)
+ (4, 5, 35, 46, 4, 130, 4)(5, 6, 42, 58, 5, 180, 4);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 42, 58, 5, 180, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 0, 1, 3, 0, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 0, 1, 3, 0, 1, 3)
+ (boost::tree_node::pre_order_traversal, 4, 5, 35, 46, 4, 130, 4)
+ (boost::tree_node::pre_order_traversal, 5, 4, 24, 31, 3, 76, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::post_order_traversal, 4, 3, 12, 15, 2, 32, 2)
+ (boost::tree_node::post_order_traversal, 5, 4, 24, 31, 3, 76, 3)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::post_order_traversal, 0, 0, 1, 0, 0, 1, 0)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1, 1, 0, 1, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3, 3, 0, 5, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 6, 7, 1, 13, 2)
+ (boost::tree_node::post_order_traversal, 4, 5, 35, 46, 4, 130, 4)
+ (boost::tree_node::post_order_traversal, 5, 6, 42, 58, 5, 180, 4);
+#endif // BOOST_NO_SFINAE
+ test_node(a_root, bf_vals, pre_vals, post_vals, df_vals);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::nary_node_gen<Selector>
+ , DataMap
+ , void
+ , AccuYourUintKey
+ >
+ FNode;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ MoreValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<
+ example_keys::your_char
+ >(boost::get_reference<FNode const>())
+ )
+ , BOOST_TYPEOF_TPL(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::get_reference<FNode const>()
+ )
+ )
+ >
+ >::type
+ DFMoreValues;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ BOOST_AUTO_TPL(
+ data
+ , boost::tree_node::get<example_keys::your_uint>(*itr)
+ );
+
+ if (1 < data)
+ {
+ for (unsigned int i = 0; i < data; ++i)
+ {
+ if (std::tr1::is_same<Selector,boost::slistS>::value)
+ {
+ (*itr).emplace(
+ boost::fusion::make_pair<example_keys::your_uint>(
+ data - 1 - i
+ )
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + data - 1 - i
+ )
+ );
+ }
+ else
+ {
+ (*itr).emplace(
+ boost::fusion::make_pair<example_keys::your_uint>(i)
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + i
+ )
+ );
+ }
+ }
+
+ }
+ }
+
+ {
+ MoreValues bf_vals, pre_vals, post_vals;
+ DFMoreValues df_vals;
+ DFEmplacer emplacer;
+
+ emplacer[bf_vals]
+ (5, '5', 31)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 7)
+ (4, '4', 15)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 7)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[pre_vals]
+ (5, '5', 31)(0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(3, '3', 7)(0, '0', 0)(1, '1', 1)(2, '2', 3)
+ (0, '0', 0)(1, '1', 1)(4, '4', 15)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(3, '3', 7)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[post_vals]
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(2, '2', 3)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(2, '2', 3)
+ (3, '3', 7)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(3, '3', 7)(4, '4', 15)(5, '5', 31);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, '5', 31)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 4, '4', 15)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::post_order_traversal, 4, '4', 15)
+ (boost::tree_node::post_order_traversal, 5, '5', 31);
+ test_f_node(f_root, bf_vals, pre_vals, post_vals, df_vals);
+
+ typename FNode::iterator f_child_itr(f_root.begin());
+
+ std::advance(f_child_itr, 3);
+ f_child_itr = (*f_child_itr).begin();
+ std::advance(f_child_itr, 2);
+ boost::tree_node::put(*f_child_itr, example_keys::your_uint(), 7);
+ bf_vals.clear();
+ pre_vals.clear();
+ post_vals.clear();
+ df_vals.clear();
+
+ emplacer[bf_vals]
+ (5, '5', 36)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 12)
+ (4, '4', 15)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (7, '2', 8)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 7)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[pre_vals]
+ (5, '5', 36)(0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(3, '3', 12)(0, '0', 0)(1, '1', 1)(7, '2', 8)
+ (0, '0', 0)(1, '1', 1)(4, '4', 15)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(3, '3', 7)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[post_vals]
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(2, '2', 3)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(7, '2', 8)
+ (3, '3', 12)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(3, '3', 7)(4, '4', 15)(5, '5', 36);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, '5', 36)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 3, '3', 12)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 7, '2', 8)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 7, '2', 8)
+ (boost::tree_node::post_order_traversal, 3, '3', 12)
+ (boost::tree_node::pre_order_traversal, 4, '4', 15)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::post_order_traversal, 4, '4', 15)
+ (boost::tree_node::post_order_traversal, 5, '5', 36);
+ test_f_node(f_root, bf_vals, pre_vals, post_vals, df_vals);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+}
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
+#if defined BOOST_TYPEOF_EMULATION
+#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>
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#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>
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // BOOST_TYPEOF_EMULATION
+
+int test_main(int argc, char** argv)
+{
+ test<boost::ptr_vecS>();
+ test<boost::ptr_dequeS>();
+ test<boost::ptr_listS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test<boost::vector_selector<boost::mpl::true_> >();
+ test<boost::stable_vecS>();
+ test<boost::deque_selector<boost::mpl::true_> >();
+ test<boost::list_selector<boost::mpl::true_> >();
+ test<boost::slistS>();
+#endif
+
+ return 0;
+}
+


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