diff options
Diffstat (limited to 'boost/intrusive/intrusive_fwd.hpp')
-rw-r--r-- | boost/intrusive/intrusive_fwd.hpp | 647 |
1 files changed, 417 insertions, 230 deletions
diff --git a/boost/intrusive/intrusive_fwd.hpp b/boost/intrusive/intrusive_fwd.hpp index c95767ef35..a4498161a1 100644 --- a/boost/intrusive/intrusive_fwd.hpp +++ b/boost/intrusive/intrusive_fwd.hpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // -// (C) Copyright Ion Gaztanaga 2007-2012 +// (C) Copyright Ion Gaztanaga 2007-2013 // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at @@ -13,21 +13,51 @@ #ifndef BOOST_INTRUSIVE_FWD_HPP #define BOOST_INTRUSIVE_FWD_HPP +#if defined(_MSC_VER) +# pragma once +#endif + +//! \file +//! This header file forward declares most Intrusive classes. +//! +//! It forward declares the following containers and hooks: +//! - boost::intrusive::slist / boost::intrusive::slist_base_hook / boost::intrusive::slist_member_hook +//! - boost::intrusive::list / boost::intrusive::list_base_hook / boost::intrusive::list_member_hook +//! - boost::intrusive::bstree / boost::intrusive::bs_set / boost::intrusive::bs_multiset / +//! boost::intrusive::bs_set_base_hook / boost::intrusive::bs_set_member_hook +//! - boost::intrusive::rbtree / boost::intrusive::set / boost::intrusive::multiset / +//! boost::intrusive::set_base_hook / boost::intrusive::set_member_hook +//! - boost::intrusive::avltree / boost::intrusive::avl_set / boost::intrusive::avl_multiset / +//! boost::intrusive::avl_set_base_hook / boost::intrusive::avl_set_member_hook +//! - boost::intrusive::splaytree / boost::intrusive::splay_set / boost::intrusive::splay_multiset +//! - boost::intrusive::sgtree / boost::intrusive::sg_set / boost::intrusive::sg_multiset +//! - boost::intrusive::treap / boost::intrusive::treap_set / boost::intrusive::treap_multiset +//! - boost::intrusive::hashtable / boost::intrusive::unordered_set / boost::intrusive::unordered_multiset / +//! boost::intrusive::unordered_set_base_hook / boost::intrusive::unordered_set_member_hook / +//! - boost::intrusive::any_base_hook / boost::intrusive::any_member_hook +//! +//! It forward declares the following container or hook options: +//! - boost::intrusive::constant_time_size / boost::intrusive::size_type / boost::intrusive::compare / boost::intrusive::equal +//! - boost::intrusive::floating_point / boost::intrusive::priority / boost::intrusive::hash +//! - boost::intrusive::value_traits / boost::intrusive::member_hook / boost::intrusive::function_hook / boost::intrusive::base_hook +//! - boost::intrusive::void_pointer / boost::intrusive::tag / boost::intrusive::link_mode +//! - boost::intrusive::optimize_size / boost::intrusive::linear / boost::intrusive::cache_last +//! - boost::intrusive::bucket_traits / boost::intrusive::store_hash / boost::intrusive::optimize_multikey +//! - boost::intrusive::power_2_buckets / boost::intrusive::cache_begin / boost::intrusive::compare_hash / boost::intrusive::incremental +//! +//! It forward declares the following value traits utilities: +//! - boost::intrusive::value_traits / boost::intrusive::derivation_value_traits / +//! boost::intrusive::trivial_value_traits +//! +//! Finally it forward declares the following general purpose utilities: +//! - boost::intrusive::pointer_plus_bits / boost::intrusive::priority_compare. + +#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) + #include <cstddef> #include <boost/intrusive/link_mode.hpp> #include <boost/intrusive/detail/workaround.hpp> -/// @cond - -namespace boost { - -namespace intrusive { - -struct none; - -} //namespace intrusive{ -} //namespace boost{ - namespace boost { namespace intrusive { @@ -43,43 +73,62 @@ template<class NodeTraits> class circular_slist_algorithms; template<class NodeTraits> +class linear_slist_algorithms; + +template<class NodeTraits> +class bstree_algorithms; + +template<class NodeTraits> class rbtree_algorithms; +template<class NodeTraits> +class avltree_algorithms; + +template<class NodeTraits> +class sgtree_algorithms; + +template<class NodeTraits> +class splaytree_algorithms; + +template<class NodeTraits> +class treap_algorithms; + //////////////////////////// // Containers //////////////////////////// //slist -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none - , class O5 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void + , class O6 = void > #else template<class T, class ...Options> #endif class slist; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none + < class O1 = void + , class O2 = void + , class O3 = void > #else template<class ...Options> #endif class slist_base_hook; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none + < class O1 = void + , class O2 = void + , class O3 = void > #else template<class ...Options> @@ -87,109 +136,102 @@ template<class ...Options> class slist_member_hook; //list -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void > #else template<class T, class ...Options> #endif class list; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none + < class O1 = void + , class O2 = void + , class O3 = void > #else template<class ...Options> #endif class list_base_hook; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none + < class O1 = void + , class O2 = void + , class O3 = void > #else template<class ...Options> #endif class list_member_hook; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) -template - < class O1 = none - , class O2 = none - , class O3 = none - > -#else -template<class ...Options> -#endif -class list_hook; - //rbtree/set/multiset -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class rbtree; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class set; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class multiset; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + < class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void > #else template<class ...Options> #endif class set_base_hook; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + < class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void > #else template<class ...Options> @@ -197,125 +239,109 @@ template<class ...Options> class set_member_hook; //splaytree/splay_set/splay_multiset -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class splaytree; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class splay_set; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class splay_multiset; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) -template - < class O1 = none - , class O2 = none - , class O3 = none - > -#else -template<class ...Options> -#endif -class splay_set_base_hook; - -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) -template - < class O1 = none - , class O2 = none - , class O3 = none - > -#else -template<class ...Options> -#endif -class splay_set_member_hook; - //avltree/avl_set/avl_multiset -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class avltree; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class avl_set; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class avl_multiset; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + < class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void > #else template<class ...Options> #endif class avl_set_base_hook; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + < class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void > #else template<class ...Options> @@ -324,105 +350,149 @@ class avl_set_member_hook; //treap/treap_set/treap_multiset -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class treap; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class treap_set; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class treap_multiset; -//Default priority comparison functor -template <class T> -struct priority_compare; - //sgtree/sg_set/sg_multiset -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class sgtree; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class sg_set; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void > #else template<class T, class ...Options> #endif class sg_multiset; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +template + < class T + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void + > +#else +template<class T, class ...Options> +#endif +class bstree; + +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none + < class T + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void + > +#else +template<class T, class ...Options> +#endif +class bs_set; + +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +template + < class T + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void + > +#else +template<class T, class ...Options> +#endif +class bs_multiset; + +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +template + < class O1 = void + , class O2 = void + , class O3 = void > #else template<class ...Options> #endif class bs_set_base_hook; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none + < class O1 = void + , class O2 = void + , class O3 = void > #else template<class ...Options> @@ -431,112 +501,229 @@ class bs_set_member_hook; //hashtable/unordered_set/unordered_multiset -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none - , class O5 = none - , class O6 = none - , class O7 = none - , class O8 = none - , class O9 = none - , class O10 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void + , class O6 = void + , class O7 = void + , class O8 = void + , class O9 = void + , class O10 = void > #else template<class T, class ...Options> #endif class hashtable; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none - , class O5 = none - , class O6 = none - , class O7 = none - , class O8 = none - , class O9 = none - , class O10 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void + , class O6 = void + , class O7 = void + , class O8 = void + , class O9 = void + , class O10 = void > #else template<class T, class ...Options> #endif class unordered_set; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template < class T - , class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none - , class O5 = none - , class O6 = none - , class O7 = none - , class O8 = none - , class O9 = none - , class O10 = none + , class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void + , class O5 = void + , class O6 = void + , class O7 = void + , class O8 = void + , class O9 = void + , class O10 = void > #else template<class T, class ...Options> #endif class unordered_multiset; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + < class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void > #else template<class ...Options> #endif class unordered_set_base_hook; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none - , class O4 = none + < class O1 = void + , class O2 = void + , class O3 = void + , class O4 = void > #else template<class ...Options> #endif class unordered_set_member_hook; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none + < class O1 = void + , class O2 = void + , class O3 = void > #else template<class ...Options> #endif class any_base_hook; -#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) && !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) +#if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) template - < class O1 = none - , class O2 = none - , class O3 = none + < class O1 = void + , class O2 = void + , class O3 = void > #else template<class ...Options> #endif class any_member_hook; +//Options + +template<bool Enabled> +struct constant_time_size; + +template<typename SizeType> +struct size_type; + +template<typename Compare> +struct compare; + +template<bool Enabled> +struct floating_point; + +template<typename Equal> +struct equal; + +template<typename Priority> +struct priority; + +template<typename Hash> +struct hash; + +template<typename ValueTraits> struct value_traits; + +template< typename Parent + , typename MemberHook + , MemberHook Parent::* PtrToMember> +struct member_hook; + +template<typename Functor> +struct function_hook; + +template<typename BaseHook> +struct base_hook; + +template<typename VoidPointer> +struct void_pointer; + +template<typename Tag> +struct tag; + +template<link_mode_type LinkType> +struct link_mode; + +template<bool Enabled> struct +optimize_size; + +template<bool Enabled> +struct linear; + +template<bool Enabled> +struct cache_last; + +template<typename BucketTraits> +struct bucket_traits; + +template<bool Enabled> +struct store_hash; + +template<bool Enabled> +struct optimize_multikey; + +template<bool Enabled> +struct power_2_buckets; + +template<bool Enabled> +struct cache_begin; + +template<bool Enabled> +struct compare_hash; + +template<bool Enabled> +struct incremental; + +//Value traits + +template<typename ValueTraits> +struct value_traits; + +template< typename Parent + , typename MemberHook + , MemberHook Parent::* PtrToMember> +struct member_hook; + +template< typename Functor> +struct function_hook; + +template<typename BaseHook> +struct base_hook; + +template<class T, class NodeTraits, link_mode_type LinkMode = safe_link> +struct derivation_value_traits; + +template<class NodeTraits, link_mode_type LinkMode = normal_link> +struct trivial_value_traits; + +//Additional utilities + +template<typename VoidPointer, std::size_t Alignment> +struct max_pointer_plus_bits; + +template<std::size_t Alignment> +struct max_pointer_plus_bits<void *, Alignment>; + +template<typename Pointer, std::size_t NumBits> +struct pointer_plus_bits; + +template<typename T, std::size_t NumBits> +struct pointer_plus_bits<T *, NumBits>; + +template<typename Ptr> +struct pointer_traits; + +template<typename T> +struct pointer_traits<T *>; + } //namespace intrusive { } //namespace boost { -/// @endcond +#endif //#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) #endif //#ifndef BOOST_INTRUSIVE_FWD_HPP |