diff --git a/include/boost/smart_ptr/intrusive_ptr.hpp b/include/boost/smart_ptr/intrusive_ptr.hpp index 22f7e34..ef682df 100644 --- a/include/boost/smart_ptr/intrusive_ptr.hpp +++ b/include/boost/smart_ptr/intrusive_ptr.hpp @@ -394,9 +394,9 @@ namespace std template struct hash< ::boost::intrusive_ptr > { - std::size_t operator()( ::boost::intrusive_ptr const & v ) const BOOST_SP_NOEXCEPT + std::size_t operator()( ::boost::intrusive_ptr const & p ) const BOOST_SP_NOEXCEPT { - return hash_value( v ); + return std::hash< T* >()( p.get() ); } }; diff --git a/include/boost/smart_ptr/local_shared_ptr.hpp b/include/boost/smart_ptr/local_shared_ptr.hpp index c1fc459..86c94d5 100644 --- a/include/boost/smart_ptr/local_shared_ptr.hpp +++ b/include/boost/smart_ptr/local_shared_ptr.hpp @@ -697,9 +697,9 @@ namespace std template struct hash< ::boost::local_shared_ptr > { - std::size_t operator()( ::boost::local_shared_ptr const & v ) const BOOST_SP_NOEXCEPT + std::size_t operator()( ::boost::local_shared_ptr const & p ) const BOOST_SP_NOEXCEPT { - return hash_value( v ); + return std::hash< typename ::boost::local_shared_ptr::element_type* >()( p.get() ); } }; diff --git a/include/boost/smart_ptr/shared_ptr.hpp b/include/boost/smart_ptr/shared_ptr.hpp index ff6c290..c8b2885 100644 --- a/include/boost/smart_ptr/shared_ptr.hpp +++ b/include/boost/smart_ptr/shared_ptr.hpp @@ -1174,9 +1174,9 @@ namespace std template struct hash< ::boost::shared_ptr > { - std::size_t operator()( ::boost::shared_ptr const & v ) const BOOST_SP_NOEXCEPT + std::size_t operator()( ::boost::shared_ptr const & p ) const BOOST_SP_NOEXCEPT { - return hash_value( v ); + return std::hash< typename ::boost::shared_ptr::element_type* >()( p.get() ); } }; diff --git a/test/ip_hash_test2.cpp b/test/ip_hash_test2.cpp index e4a1cad..a9bf90f 100644 --- a/test/ip_hash_test2.cpp +++ b/test/ip_hash_test2.cpp @@ -3,7 +3,6 @@ // https://www.boost.org/LICENSE_1_0.txt #include -#include #include #include #include @@ -57,13 +56,10 @@ struct X: public base int main() { - boost::hash< boost::intrusive_ptr > hasher; - std::hash< boost::intrusive_ptr > hasher2; - boost::intrusive_ptr p1, p2( new X ); - BOOST_TEST_EQ( hasher( p1 ), hasher2( p1 ) ); - BOOST_TEST_EQ( hasher( p2 ), hasher2( p2 ) ); + BOOST_TEST_EQ( std::hash< boost::intrusive_ptr >()( p1 ), std::hash< X* >()( p1.get() ) ); + BOOST_TEST_EQ( std::hash< boost::intrusive_ptr >()( p2 ), std::hash< X* >()( p2.get() ) ); return boost::report_errors(); } diff --git a/test/lsp_hash_test2.cpp b/test/lsp_hash_test2.cpp index ce4b9f4..b42584d 100644 --- a/test/lsp_hash_test2.cpp +++ b/test/lsp_hash_test2.cpp @@ -3,7 +3,6 @@ // https://www.boost.org/LICENSE_1_0.txt #include -#include #include #include #include @@ -17,33 +16,24 @@ int main() {} int main() { { - boost::hash< boost::local_shared_ptr > hasher; - std::hash< boost::local_shared_ptr > hasher2; - boost::local_shared_ptr p1, p2( new int ); - BOOST_TEST_EQ( hasher( p1 ), hasher2( p1 ) ); - BOOST_TEST_EQ( hasher( p2 ), hasher2( p2 ) ); + BOOST_TEST_EQ( std::hash< boost::local_shared_ptr >()( p1 ), std::hash< int* >()( p1.get() ) ); + BOOST_TEST_EQ( std::hash< boost::local_shared_ptr >()( p2 ), std::hash< int* >()( p2.get() ) ); } { - boost::hash< boost::local_shared_ptr > hasher; - std::hash< boost::local_shared_ptr > hasher2; - boost::local_shared_ptr p1, p2( new int[1] ); - BOOST_TEST_EQ( hasher( p1 ), hasher2( p1 ) ); - BOOST_TEST_EQ( hasher( p2 ), hasher2( p2 ) ); + BOOST_TEST_EQ( std::hash< boost::local_shared_ptr >()( p1 ), std::hash< int* >()( p1.get() ) ); + BOOST_TEST_EQ( std::hash< boost::local_shared_ptr >()( p2 ), std::hash< int* >()( p2.get() ) ); } { - boost::hash< boost::local_shared_ptr > hasher; - std::hash< boost::local_shared_ptr > hasher2; - boost::local_shared_ptr p1, p2( new int[1] ); - BOOST_TEST_EQ( hasher( p1 ), hasher2( p1 ) ); - BOOST_TEST_EQ( hasher( p2 ), hasher2( p2 ) ); + BOOST_TEST_EQ( std::hash< boost::local_shared_ptr >()( p1 ), std::hash< int* >()( p1.get() ) ); + BOOST_TEST_EQ( std::hash< boost::local_shared_ptr >()( p2 ), std::hash< int* >()( p2.get() ) ); } return boost::report_errors(); diff --git a/test/sp_hash_test4.cpp b/test/sp_hash_test4.cpp index 68f0a06..0dd063b 100644 --- a/test/sp_hash_test4.cpp +++ b/test/sp_hash_test4.cpp @@ -3,7 +3,6 @@ // https://www.boost.org/LICENSE_1_0.txt #include -#include #include #include #include @@ -17,33 +16,24 @@ int main() {} int main() { { - boost::hash< boost::shared_ptr > hasher; - std::hash< boost::shared_ptr > hasher2; - boost::shared_ptr p1, p2( new int ); - BOOST_TEST_EQ( hasher( p1 ), hasher2( p1 ) ); - BOOST_TEST_EQ( hasher( p2 ), hasher2( p2 ) ); + BOOST_TEST_EQ( std::hash< boost::shared_ptr >()( p1 ), std::hash< int* >()( p1.get() ) ); + BOOST_TEST_EQ( std::hash< boost::shared_ptr >()( p2 ), std::hash< int* >()( p2.get() ) ); } { - boost::hash< boost::shared_ptr > hasher; - std::hash< boost::shared_ptr > hasher2; - boost::shared_ptr p1, p2( new int[1] ); - BOOST_TEST_EQ( hasher( p1 ), hasher2( p1 ) ); - BOOST_TEST_EQ( hasher( p2 ), hasher2( p2 ) ); + BOOST_TEST_EQ( std::hash< boost::shared_ptr >()( p1 ), std::hash< int* >()( p1.get() ) ); + BOOST_TEST_EQ( std::hash< boost::shared_ptr >()( p2 ), std::hash< int* >()( p2.get() ) ); } { - boost::hash< boost::shared_ptr > hasher; - std::hash< boost::shared_ptr > hasher2; - boost::shared_ptr p1, p2( new int[1] ); - BOOST_TEST_EQ( hasher( p1 ), hasher2( p1 ) ); - BOOST_TEST_EQ( hasher( p2 ), hasher2( p2 ) ); + BOOST_TEST_EQ( std::hash< boost::shared_ptr >()( p1 ), std::hash< int* >()( p1.get() ) ); + BOOST_TEST_EQ( std::hash< boost::shared_ptr >()( p2 ), std::hash< int* >()( p2.get() ) ); } return boost::report_errors();