diff --git a/include/boost/intrusive/avl_set.hpp b/include/boost/intrusive/avl_set.hpp index f125785..d968a14 100644 --- a/include/boost/intrusive/avl_set.hpp +++ b/include/boost/intrusive/avl_set.hpp @@ -36,15 +36,15 @@ namespace intrusive { #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class avl_set_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public bstree_impl + : public bstree_impl #endif { /// @cond - typedef bstree_impl tree_type; + typedef bstree_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(avl_set_impl) typedef tree_type implementation_defined; @@ -414,12 +414,15 @@ struct make_avl_set typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef avl_set_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; @@ -507,15 +510,15 @@ class avl_set #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class avl_multiset_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public bstree_impl + : public bstree_impl #endif { /// @cond - typedef bstree_impl tree_type; + typedef bstree_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(avl_multiset_impl) typedef tree_type implementation_defined; @@ -852,12 +855,15 @@ struct make_avl_multiset typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef avl_multiset_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/avltree.hpp b/include/boost/intrusive/avltree.hpp index df63ed0..787fa76 100644 --- a/include/boost/intrusive/avltree.hpp +++ b/include/boost/intrusive/avltree.hpp @@ -68,18 +68,19 @@ struct avltree_defaults #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class avltree_impl /// @cond - : public bstree_impl + : public bstree_impl /// @endcond { public: typedef ValueTraits value_traits; /// @cond typedef bstree_impl< ValueTraits, VoidOrKeyComp, SizeType - , ConstantTimeSize, AvlTreeAlgorithms> tree_type; + , ConstantTimeSize, AvlTreeAlgorithms + , Header_Holder> tree_type; typedef tree_type implementation_defined; /// @endcond @@ -448,12 +449,15 @@ struct make_avltree typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef avltree_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/bs_set.hpp b/include/boost/intrusive/bs_set.hpp index 577b881..7ee125d 100644 --- a/include/boost/intrusive/bs_set.hpp +++ b/include/boost/intrusive/bs_set.hpp @@ -36,15 +36,15 @@ namespace intrusive { #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class bs_set_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public bstree_impl + : public bstree_impl #endif { /// @cond - typedef bstree_impl tree_type; + typedef bstree_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(bs_set_impl) typedef tree_type implementation_defined; @@ -412,12 +412,15 @@ struct make_bs_set typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef bs_set_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; @@ -505,15 +508,15 @@ class bs_set #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class bs_multiset_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public bstree_impl + : public bstree_impl #endif { /// @cond - typedef bstree_impl tree_type; + typedef bstree_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(bs_multiset_impl) typedef tree_type implementation_defined; @@ -850,12 +853,15 @@ struct make_bs_multiset typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef bs_multiset_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/bstree.hpp b/include/boost/intrusive/bstree.hpp index 0700203..1e1fe86 100644 --- a/include/boost/intrusive/bstree.hpp +++ b/include/boost/intrusive/bstree.hpp @@ -52,7 +52,7 @@ struct bstree_defaults typedef void header_holder_type; }; -template +template struct bstbase3 { typedef ValueTraits value_traits; @@ -198,15 +198,15 @@ struct bstbase3 }; -template +template struct bstbase2 //Put the (possibly empty) functor in the first position to get EBO in MSVC : public detail::ebo_functor_holder::type> - , public bstbase3 + , public bstbase3 { - typedef bstbase3 treeheader_t; + typedef bstbase3 treeheader_t; typedef typename treeheader_t::value_traits value_traits; typedef typename treeheader_t::node_algorithms node_algorithms; typedef typename get_less @@ -444,12 +444,12 @@ struct bstbase2 //Due to MSVC's EBO implementation, to save space and maintain the ABI, we must put the non-empty size member //in the first position, but if size is not going to be stored then we'll use an specialization //that doesn't inherit from size_holder -template +template struct bstbase_hack : public detail::size_holder - , public bstbase2 < ValueTraits, VoidOrKeyComp, AlgoType> + , public bstbase2 < ValueTraits, VoidOrKeyComp, AlgoType, Header_Holder> { - typedef bstbase2< ValueTraits, VoidOrKeyComp, AlgoType> base_type; + typedef bstbase2< ValueTraits, VoidOrKeyComp, AlgoType, Header_Holder> base_type; typedef typename base_type::value_compare value_compare; typedef SizeType size_type; typedef typename base_type::node_traits node_traits; @@ -472,11 +472,11 @@ struct bstbase_hack }; //Specialization for ConstantTimeSize == false -template -struct bstbase_hack - : public bstbase2 < ValueTraits, VoidOrKeyComp, AlgoType> +template +struct bstbase_hack + : public bstbase2 < ValueTraits, VoidOrKeyComp, AlgoType, Header_Holder> { - typedef bstbase2< ValueTraits, VoidOrKeyComp, AlgoType> base_type; + typedef bstbase2< ValueTraits, VoidOrKeyComp, AlgoType, Header_Holder> base_type; typedef typename base_type::value_compare value_compare; bstbase_hack(const value_compare & comp, const ValueTraits &vtraits) : base_type(comp, vtraits) @@ -493,15 +493,15 @@ struct bstbase_hack static size_traits s_size_traits; }; -template -detail::size_holder bstbase_hack::s_size_traits; +template +detail::size_holder bstbase_hack::s_size_traits; //This class will -template +template struct bstbase - : public bstbase_hack< ValueTraits, VoidOrKeyComp, ConstantTimeSize, SizeType, AlgoType> + : public bstbase_hack< ValueTraits, VoidOrKeyComp, ConstantTimeSize, SizeType, AlgoType, Header_Holder> { - typedef bstbase_hack< ValueTraits, VoidOrKeyComp, ConstantTimeSize, SizeType, AlgoType> base_type; + typedef bstbase_hack< ValueTraits, VoidOrKeyComp, ConstantTimeSize, SizeType, AlgoType, Header_Holder> base_type; typedef ValueTraits value_traits; typedef typename base_type::value_compare value_compare; typedef value_compare key_compare; @@ -553,14 +553,14 @@ struct bstbase #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class bstree_impl - : public bstbase + : public bstbase { public: /// @cond - typedef bstbase data_type; + typedef bstbase data_type; typedef tree_iterator iterator_type; typedef tree_iterator const_iterator_type; /// @endcond @@ -1876,31 +1876,31 @@ class bstree_impl #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator< #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const bstree_impl &x, const bstree_impl &y) #else -( const bstree_impl &x -, const bstree_impl &y) +( const bstree_impl &x +, const bstree_impl &y) #endif { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif bool operator== #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const bstree_impl &x, const bstree_impl &y) #else -( const bstree_impl &x -, const bstree_impl &y) +( const bstree_impl &x +, const bstree_impl &y) #endif { - typedef bstree_impl tree_type; + typedef bstree_impl tree_type; typedef typename tree_type::const_iterator const_iterator; if(tree_type::constant_time_size && x.size() != y.size()){ @@ -1929,70 +1929,70 @@ bool operator== #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator!= #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const bstree_impl &x, const bstree_impl &y) #else -( const bstree_impl &x -, const bstree_impl &y) +( const bstree_impl &x +, const bstree_impl &y) #endif { return !(x == y); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator> #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const bstree_impl &x, const bstree_impl &y) #else -( const bstree_impl &x -, const bstree_impl &y) +( const bstree_impl &x +, const bstree_impl &y) #endif { return y < x; } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator<= #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const bstree_impl &x, const bstree_impl &y) #else -( const bstree_impl &x -, const bstree_impl &y) +( const bstree_impl &x +, const bstree_impl &y) #endif { return !(y < x); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator>= #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const bstree_impl &x, const bstree_impl &y) #else -( const bstree_impl &x -, const bstree_impl &y) +( const bstree_impl &x +, const bstree_impl &y) #endif { return !(x < y); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline void swap #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (bstree_impl &x, bstree_impl &y) #else -( bstree_impl &x -, bstree_impl &y) +( bstree_impl &x +, bstree_impl &y) #endif { x.swap(y); } @@ -2019,6 +2019,8 @@ struct make_bstree typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef bstree_impl < value_traits @@ -2026,6 +2028,7 @@ struct make_bstree , typename packed_options::size_type , packed_options::constant_time_size , BsTreeAlgorithms + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/list.hpp b/include/boost/intrusive/list.hpp index 16bff16..b2dfa4e 100644 --- a/include/boost/intrusive/list.hpp +++ b/include/boost/intrusive/list.hpp @@ -60,7 +60,7 @@ struct list_defaults #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class list_impl { @@ -1268,29 +1268,29 @@ class list_impl #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator< #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const list_impl &x, const list_impl &y) #else -(const list_impl &x, const list_impl &y) +(const list_impl &x, const list_impl &y) #endif { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif bool operator== #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const list_impl &x, const list_impl &y) #else -(const list_impl &x, const list_impl &y) +(const list_impl &x, const list_impl &y) #endif { - typedef list_impl list_type; + typedef list_impl list_type; typedef typename list_type::const_iterator const_iterator; const bool C = list_type::constant_time_size; if(C && x.size() != y.size()){ @@ -1320,65 +1320,65 @@ bool operator== #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator!= #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const list_impl &x, const list_impl &y) #else -(const list_impl &x, const list_impl &y) +(const list_impl &x, const list_impl &y) #endif { return !(x == y); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator> #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const list_impl &x, const list_impl &y) #else -(const list_impl &x, const list_impl &y) +(const list_impl &x, const list_impl &y) #endif { return y < x; } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator<= #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const list_impl &x, const list_impl &y) #else -(const list_impl &x, const list_impl &y) +(const list_impl &x, const list_impl &y) #endif { return !(y < x); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator>= #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const list_impl &x, const list_impl &y) #else -(const list_impl &x, const list_impl &y) +(const list_impl &x, const list_impl &y) #endif { return !(x < y); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline void swap #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (list_impl &x, list_impl &y) #else -(list_impl &x, list_impl &y) +(list_impl &x, list_impl &y) #endif { x.swap(y); } @@ -1403,12 +1403,15 @@ struct make_list typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef list_impl < value_traits, typename packed_options::size_type, - packed_options::constant_time_size + packed_options::constant_time_size, + header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/rbtree.hpp b/include/boost/intrusive/rbtree.hpp index 187d4f9..d15ea45 100644 --- a/include/boost/intrusive/rbtree.hpp +++ b/include/boost/intrusive/rbtree.hpp @@ -66,18 +66,19 @@ struct rbtree_defaults #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class rbtree_impl /// @cond - : public bstree_impl + : public bstree_impl /// @endcond { public: typedef ValueTraits value_traits; /// @cond typedef bstree_impl< ValueTraits, VoidOrKeyComp, SizeType - , ConstantTimeSize, RbTreeAlgorithms> tree_type; + , ConstantTimeSize, RbTreeAlgorithms + , Header_Holder> tree_type; typedef tree_type implementation_defined; /// @endcond @@ -444,12 +445,15 @@ struct make_rbtree typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef rbtree_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/set.hpp b/include/boost/intrusive/set.hpp index b7ca954..5ab0834 100644 --- a/include/boost/intrusive/set.hpp +++ b/include/boost/intrusive/set.hpp @@ -38,15 +38,15 @@ namespace intrusive { #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class set_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public bstree_impl + : public bstree_impl #endif { /// @cond - typedef bstree_impl tree_type; + typedef bstree_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(set_impl) typedef tree_type implementation_defined; @@ -414,12 +414,15 @@ struct make_set typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef set_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; @@ -507,15 +510,15 @@ class set #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class multiset_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public bstree_impl + : public bstree_impl #endif { /// @cond - typedef bstree_impl tree_type; + typedef bstree_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(multiset_impl) typedef tree_type implementation_defined; @@ -852,12 +855,15 @@ struct make_multiset typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef multiset_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/sg_set.hpp b/include/boost/intrusive/sg_set.hpp index 2c62b5c..3e8fa5e 100644 --- a/include/boost/intrusive/sg_set.hpp +++ b/include/boost/intrusive/sg_set.hpp @@ -36,15 +36,15 @@ namespace intrusive { #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class sg_set_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public sgtree_impl + : public sgtree_impl #endif { /// @cond - typedef sgtree_impl tree_type; + typedef sgtree_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(sg_set_impl) typedef tree_type implementation_defined; @@ -425,12 +425,15 @@ struct make_sg_set typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef sg_set_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::floating_point + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; @@ -518,15 +521,15 @@ class sg_set #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class sg_multiset_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public sgtree_impl + : public sgtree_impl #endif { /// @cond - typedef sgtree_impl tree_type; + typedef sgtree_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(sg_multiset_impl) typedef tree_type implementation_defined; @@ -876,12 +879,15 @@ struct make_sg_multiset typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef sg_multiset_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::floating_point + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/sgtree.hpp b/include/boost/intrusive/sgtree.hpp index c7f6d8b..400c2bb 100644 --- a/include/boost/intrusive/sgtree.hpp +++ b/include/boost/intrusive/sgtree.hpp @@ -213,11 +213,11 @@ struct sgtree_defaults #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class sgtree_impl /// @cond - : public bstree_impl + : public bstree_impl , public detail::alpha_holder /// @endcond { @@ -225,7 +225,7 @@ class sgtree_impl typedef ValueTraits value_traits; /// @cond typedef bstree_impl< ValueTraits, VoidOrKeyComp, SizeType - , true, SgTreeAlgorithms> tree_type; + , true, SgTreeAlgorithms, Header_Holder> tree_type; typedef tree_type implementation_defined; /// @endcond @@ -890,12 +890,15 @@ struct make_sgtree typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef sgtree_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::floating_point + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/slist.hpp b/include/boost/intrusive/slist.hpp index af8e4ce..8970340 100644 --- a/include/boost/intrusive/slist.hpp +++ b/include/boost/intrusive/slist.hpp @@ -96,7 +96,7 @@ struct slist_bool_flags #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class slist_impl { @@ -1972,31 +1972,31 @@ class slist_impl #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator< #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const slist_impl &x, const slist_impl &y) #else -( const slist_impl &x -, const slist_impl &y) +( const slist_impl &x +, const slist_impl &y) #endif { return std::lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif bool operator== #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const slist_impl &x, const slist_impl &y) #else -( const slist_impl &x -, const slist_impl &y) +( const slist_impl &x +, const slist_impl &y) #endif { - typedef slist_impl slist_type; + typedef slist_impl slist_type; typedef typename slist_type::const_iterator const_iterator; const bool C = slist_type::constant_time_size; if(C && x.size() != y.size()){ @@ -2026,70 +2026,70 @@ bool operator== #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator!= #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const slist_impl &x, const slist_impl &y) #else -( const slist_impl &x -, const slist_impl &y) +( const slist_impl &x +, const slist_impl &y) #endif { return !(x == y); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator> #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const slist_impl &x, const slist_impl &y) #else -( const slist_impl &x -, const slist_impl &y) +( const slist_impl &x +, const slist_impl &y) #endif { return y < x; } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator<= #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const slist_impl &x, const slist_impl &y) #else -( const slist_impl &x -, const slist_impl &y) +( const slist_impl &x +, const slist_impl &y) #endif { return !(y < x); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline bool operator>= #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (const slist_impl &x, const slist_impl &y) #else -( const slist_impl &x -, const slist_impl &y) +( const slist_impl &x +, const slist_impl &y) #endif { return !(x < y); } #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif inline void swap #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) (slist_impl &x, slist_impl &y) #else -( slist_impl &x -, slist_impl &y) +( slist_impl &x +, slist_impl &y) #endif { x.swap(y); } @@ -2113,12 +2113,15 @@ struct make_slist >::type packed_options; typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef slist_impl < value_traits , typename packed_options::size_type , (std::size_t(packed_options::linear)*slist_bool_flags::linear_pos) |(std::size_t(packed_options::constant_time_size)*slist_bool_flags::constant_time_size_pos) |(std::size_t(packed_options::cache_last)*slist_bool_flags::cache_last_pos) + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/splay_set.hpp b/include/boost/intrusive/splay_set.hpp index f90050c..c53ac7e 100644 --- a/include/boost/intrusive/splay_set.hpp +++ b/include/boost/intrusive/splay_set.hpp @@ -36,15 +36,15 @@ namespace intrusive { #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class splay_set_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public splaytree_impl + : public splaytree_impl #endif { /// @cond - typedef splaytree_impl tree_type; + typedef splaytree_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(splay_set_impl) typedef tree_type implementation_defined; @@ -435,12 +435,15 @@ struct make_splay_set typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef splay_set_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; @@ -528,15 +531,15 @@ class splay_set #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class splay_multiset_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public splaytree_impl + : public splaytree_impl #endif { /// @cond - typedef splaytree_impl tree_type; + typedef splaytree_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(splay_multiset_impl) typedef tree_type implementation_defined; @@ -889,12 +892,15 @@ struct make_splay_multiset typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef splay_multiset_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/splaytree.hpp b/include/boost/intrusive/splaytree.hpp index 1790264..d20fbf8 100644 --- a/include/boost/intrusive/splaytree.hpp +++ b/include/boost/intrusive/splaytree.hpp @@ -65,18 +65,19 @@ struct splaytree_defaults #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class splaytree_impl /// @cond - : public bstree_impl + : public bstree_impl /// @endcond { public: typedef ValueTraits value_traits; /// @cond typedef bstree_impl< ValueTraits, VoidOrKeyComp, SizeType - , ConstantTimeSize, SplayTreeAlgorithms> tree_type; + , ConstantTimeSize, SplayTreeAlgorithms + , Header_Holder> tree_type; typedef tree_type implementation_defined; /// @endcond @@ -531,12 +532,15 @@ struct make_splaytree typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef splaytree_impl < value_traits , typename packed_options::compare , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/treap.hpp b/include/boost/intrusive/treap.hpp index e7d8ada..3d656c6 100644 --- a/include/boost/intrusive/treap.hpp +++ b/include/boost/intrusive/treap.hpp @@ -69,16 +69,16 @@ struct treap_defaults #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class treap_impl /// @cond - : public bstree_impl + : public bstree_impl , public detail::ebo_functor_holder < typename get_prio < VoidOrPrioComp , typename bstree_impl - ::value_type>::type + ::value_type>::type > /// @endcond { @@ -86,7 +86,8 @@ class treap_impl typedef ValueTraits value_traits; /// @cond typedef bstree_impl< ValueTraits, VoidOrKeyComp, SizeType - , ConstantTimeSize, BsTreeAlgorithms> tree_type; + , ConstantTimeSize, BsTreeAlgorithms + , Header_Holder> tree_type; typedef tree_type implementation_defined; typedef get_prio < VoidOrPrioComp @@ -1079,6 +1080,8 @@ struct make_treap typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef treap_impl < value_traits @@ -1086,6 +1089,7 @@ struct make_treap , typename packed_options::priority , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; diff --git a/include/boost/intrusive/treap_set.hpp b/include/boost/intrusive/treap_set.hpp index 10fe46d..7869463 100644 --- a/include/boost/intrusive/treap_set.hpp +++ b/include/boost/intrusive/treap_set.hpp @@ -36,16 +36,16 @@ namespace intrusive { #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class treap_set_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public treap_impl + : public treap_impl #endif { /// @cond public: - typedef treap_impl tree_type; + typedef treap_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(treap_set_impl) typedef tree_type implementation_defined; @@ -439,6 +439,8 @@ struct make_treap_set typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef treap_set_impl < value_traits @@ -446,6 +448,7 @@ struct make_treap_set , typename packed_options::priority , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type; @@ -537,15 +540,15 @@ class treap_set #if defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) template #else -template +template #endif class treap_multiset_impl #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED - : public treap_impl + : public treap_impl #endif { /// @cond - typedef treap_impl tree_type; + typedef treap_impl tree_type; BOOST_MOVABLE_BUT_NOT_COPYABLE(treap_multiset_impl) typedef tree_type implementation_defined; @@ -906,6 +909,8 @@ struct make_treap_multiset typedef typename detail::get_value_traits ::type value_traits; + typedef typename detail::get_header_holder_type + < value_traits, typename packed_options::header_holder_type >::type header_holder_type; typedef treap_multiset_impl < value_traits @@ -913,6 +918,7 @@ struct make_treap_multiset , typename packed_options::priority , typename packed_options::size_type , packed_options::constant_time_size + , header_holder_type > implementation_defined; /// @endcond typedef implementation_defined type;