diff --git a/include/boost/intrusive/detail/tree_value_compare.hpp b/include/boost/intrusive/detail/tree_value_compare.hpp index 6b05f22..c78da0a 100644 --- a/include/boost/intrusive/detail/tree_value_compare.hpp +++ b/include/boost/intrusive/detail/tree_value_compare.hpp @@ -27,7 +27,7 @@ namespace boost{ namespace intrusive{ //Needed to support smart references to value types -template +template struct disable_if_smartref_to : detail::disable_if_c < detail::is_same @@ -39,8 +39,7 @@ struct disable_if_smartref_to < typename pointer_rebind < ValuePtr , const typename boost::movelib::pointer_element::type>::type> - ::reference>::value, - R + ::reference>::value > {}; @@ -52,10 +51,6 @@ template< class ValuePtr, class KeyCompare, class KeyOfValue, class Ret = bool struct tree_value_compare : public boost::intrusive::detail::ebo_functor_holder { -private: - struct sfinae_type; - -public: typedef typename boost::movelib::pointer_element::type value_type; typedef KeyCompare key_compare; @@ -93,7 +88,7 @@ public: template BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const U &nonkey - , typename disable_if_smartref_to::type = 0) const + , typename disable_if_smartref_to::type* = 0) const { return this->key_comp()(nonkey); } BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const key_type &key1, const key_type &key2) const @@ -110,22 +105,22 @@ public: template BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const key_type &key1, const U &nonkey2 - , typename disable_if_smartref_to::type = 0) const + , typename disable_if_smartref_to::type* = 0) const { return this->key_comp()(key1, nonkey2); } template BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const U &nonkey1, const key_type &key2 - , typename disable_if_smartref_to::type = 0) const + , typename disable_if_smartref_to::type* = 0) const { return this->key_comp()(nonkey1, key2); } template BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const value_type &value1, const U &nonvalue2 - , typename disable_if_smartref_to::type = 0) const + , typename disable_if_smartref_to::type* = 0) const { return this->key_comp()(KeyOfValue()(value1), nonvalue2); } template BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const U &nonvalue1, const value_type &value2 - , typename disable_if_smartref_to::type = 0) const + , typename disable_if_smartref_to::type* = 0) const { return this->key_comp()(nonvalue1, KeyOfValue()(value2)); } }; @@ -133,10 +128,6 @@ template struct tree_value_compare : public boost::intrusive::detail::ebo_functor_holder { -private: - struct sfinae_type; - -public: typedef typename boost::movelib::pointer_element::type value_type; typedef KeyCompare key_compare; @@ -172,7 +163,7 @@ public: template BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const U &nonkey - , typename disable_if_smartref_to::type = 0) const + , typename disable_if_smartref_to::type* = 0) const { return this->key_comp()(nonkey); } BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const key_type &key1, const key_type &key2) const @@ -180,12 +171,12 @@ public: template BOOST_INTRUSIVE_FORCEINLINE Ret operator()( const key_type &key1, const U &nonkey2 - , typename disable_if_smartref_to::type = 0) const + , typename disable_if_smartref_to::type* = 0) const { return this->key_comp()(key1, nonkey2); } template BOOST_INTRUSIVE_FORCEINLINE Ret operator()(const U &nonkey1, const key_type &key2 - , typename disable_if_smartref_to::type = 0) const + , typename disable_if_smartref_to::type* = 0) const { return this->key_comp()(nonkey1, key2); } };