764 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			764 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | ///////////////////////////////////////////////////////////////////////////// | ||
|  | // | ||
|  | // (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 | ||
|  | //          http://www.boost.org/LICENSE_1_0.txt) | ||
|  | // | ||
|  | // See http://www.boost.org/libs/intrusive for documentation. | ||
|  | // | ||
|  | ///////////////////////////////////////////////////////////////////////////// | ||
|  | 
 | ||
|  | #ifndef BOOST_INTRUSIVE_FWD_HPP | ||
|  | #define BOOST_INTRUSIVE_FWD_HPP | ||
|  | 
 | ||
|  | #ifndef BOOST_CONFIG_HPP | ||
|  | #  include <boost/config.hpp> | ||
|  | #endif | ||
|  | # | ||
|  | #ifndef BOOST_CSTDINT_HPP | ||
|  | #  include <boost/cstdint.hpp> | ||
|  | #endif | ||
|  | # | ||
|  | #if defined(BOOST_HAS_PRAGMA_ONCE) | ||
|  | #  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> | ||
|  | 
 | ||
|  | namespace boost { | ||
|  | namespace intrusive { | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTERPROCESS_DOXYGEN_INVOKED) | ||
|  | #  ifdef BOOST_HAS_INTPTR_T | ||
|  |       using ::boost::uintptr_t; | ||
|  | #  else | ||
|  |       typedef std::size_t uintptr_t; | ||
|  | #  endif | ||
|  | #endif | ||
|  | 
 | ||
|  | //////////////////////////// | ||
|  | //     Node algorithms | ||
|  | //////////////////////////// | ||
|  | 
 | ||
|  | //Algorithms predeclarations | ||
|  | template<class NodeTraits> | ||
|  | class circular_list_algorithms; | ||
|  | 
 | ||
|  | 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class O1  = void | ||
|  |    , class O2  = void | ||
|  |    , class O3  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class ...Options> | ||
|  | #endif | ||
|  | class slist_base_hook; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class O1  = void | ||
|  |    , class O2  = void | ||
|  |    , class O3  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class ...Options> | ||
|  | #endif | ||
|  | class slist_member_hook; | ||
|  | 
 | ||
|  | //list | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class O1  = void | ||
|  |    , class O2  = void | ||
|  |    , class O3  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class ...Options> | ||
|  | #endif | ||
|  | class list_base_hook; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class O1  = void | ||
|  |    , class O2  = void | ||
|  |    , class O3  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class ...Options> | ||
|  | #endif | ||
|  | class list_member_hook; | ||
|  | 
 | ||
|  | //rbtree/set/multiset | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 rbtree; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 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 | ||
|  |    , class O6  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class T, class ...Options> | ||
|  | #endif | ||
|  | class multiset; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class O1  = void | ||
|  |    , class O2  = void | ||
|  |    , class O3  = void | ||
|  |    , class O4  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class ...Options> | ||
|  | #endif | ||
|  | class set_member_hook; | ||
|  | 
 | ||
|  | //splaytree/splay_set/splay_multiset | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 splaytree; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 splay_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 | ||
|  |    , class O6  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class T, class ...Options> | ||
|  | #endif | ||
|  | class splay_multiset; | ||
|  | 
 | ||
|  | //avltree/avl_set/avl_multiset | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 avltree; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 avl_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 | ||
|  |    , class O6  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class T, class ...Options> | ||
|  | #endif | ||
|  | class avl_multiset; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class O1  = void | ||
|  |    , class O2  = void | ||
|  |    , class O3  = void | ||
|  |    , class O4  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class ...Options> | ||
|  | #endif | ||
|  | class avl_set_member_hook; | ||
|  | 
 | ||
|  | 
 | ||
|  | //treap/treap_set/treap_multiset | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 treap; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 treap_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 | ||
|  |    , class O6  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class T, class ...Options> | ||
|  | #endif | ||
|  | class treap_multiset; | ||
|  | 
 | ||
|  | //sgtree/sg_set/sg_multiset | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 sgtree; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 sg_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 | ||
|  |    , class O6  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class T, class ...Options> | ||
|  | #endif | ||
|  | class sg_multiset; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 bstree; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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 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 | ||
|  |    , class O6  = 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class O1  = void | ||
|  |    , class O2  = void | ||
|  |    , class O3  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class ...Options> | ||
|  | #endif | ||
|  | class bs_set_member_hook; | ||
|  | 
 | ||
|  | //hashtable/unordered_set/unordered_multiset | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class T | ||
|  |    , 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < 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_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < class O1  = void | ||
|  |    , class O2  = void | ||
|  |    , class O3  = void | ||
|  |    > | ||
|  | #else | ||
|  | template<class ...Options> | ||
|  | #endif | ||
|  | class any_base_hook; | ||
|  | 
 | ||
|  | #if !defined(BOOST_INTRUSIVE_VARIADIC_TEMPLATES) | ||
|  | template | ||
|  |    < 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 { | ||
|  | 
 | ||
|  | #endif   //#if !defined(BOOST_INTRUSIVE_DOXYGEN_INVOKED) | ||
|  | 
 | ||
|  | #endif   //#ifndef BOOST_INTRUSIVE_FWD_HPP |