summaryrefslogtreecommitdiff
path: root/boost/intrusive/detail/generic_hook.hpp
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2016-10-06 10:41:18 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2016-10-06 10:43:11 +0900
commitf763a99a501650eff2c60288aa6f10ef916d769e (patch)
tree02af7e13f9a38c888ebf340fe764cbe7dae99da9 /boost/intrusive/detail/generic_hook.hpp
parent5cde13f21d36c7224b0e13d11c4b49379ae5210d (diff)
downloadboost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.gz
boost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.bz2
boost-f763a99a501650eff2c60288aa6f10ef916d769e.zip
Imported Upstream version 1.62.0upstream/1.62.0
Change-Id: I9d4c1ddb7b7d8f0069217ecc582700f9fda6dd4c Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/intrusive/detail/generic_hook.hpp')
-rw-r--r--boost/intrusive/detail/generic_hook.hpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/boost/intrusive/detail/generic_hook.hpp b/boost/intrusive/detail/generic_hook.hpp
index b57a12b458..13421b8805 100644
--- a/boost/intrusive/detail/generic_hook.hpp
+++ b/boost/intrusive/detail/generic_hook.hpp
@@ -26,6 +26,7 @@
#include <boost/intrusive/detail/mpl.hpp>
#include <boost/intrusive/detail/assert.hpp>
#include <boost/intrusive/detail/node_holder.hpp>
+#include <boost/intrusive/detail/algo_type.hpp>
#include <boost/static_assert.hpp>
namespace boost {
@@ -120,7 +121,8 @@ struct hooktags_impl
/// @endcond
template
- < class NodeAlgorithms
+ < boost::intrusive::algo_types Algo
+ , class NodeTraits
, class Tag
, link_mode_type LinkMode
, base_hook_type BaseHookType
@@ -135,20 +137,20 @@ class generic_hook
//from the hook.
: public detail::if_c
< detail::is_same<Tag, member_tag>::value
- , typename NodeAlgorithms::node
- , node_holder<typename NodeAlgorithms::node, Tag, BaseHookType>
+ , typename NodeTraits::node
+ , node_holder<typename NodeTraits::node, Tag, BaseHookType>
>::type
//If this is the a default-tagged base hook derive from a class that
//will define an special internal typedef. Containers will be able to detect this
//special typedef and obtain generic_hook's internal types in order to deduce
//value_traits for this hook.
, public hook_tags_definer
- < generic_hook<NodeAlgorithms, Tag, LinkMode, BaseHookType>
- , detail::is_same<Tag, dft_tag>::value*BaseHookType>
+ < generic_hook<Algo, NodeTraits, Tag, LinkMode, BaseHookType>
+ , detail::is_same<Tag, dft_tag>::value ? BaseHookType : NoBaseHookId>
/// @endcond
{
/// @cond
- typedef NodeAlgorithms node_algorithms;
+ typedef typename get_algo<Algo, NodeTraits>::type node_algorithms;
typedef typename node_algorithms::node node;
typedef typename node_algorithms::node_ptr node_ptr;
typedef typename node_algorithms::const_node_ptr const_node_ptr;
@@ -156,7 +158,7 @@ class generic_hook
public:
typedef hooktags_impl
- < typename NodeAlgorithms::node_traits
+ < NodeTraits
, Tag, LinkMode, BaseHookType> hooktags;
node_ptr this_ptr()