diff --git a/include/boost/container_hash/extensions.hpp b/include/boost/container_hash/extensions.hpp index aa4f9cf..0e6d99e 100644 --- a/include/boost/container_hash/extensions.hpp +++ b/include/boost/container_hash/extensions.hpp @@ -294,8 +294,6 @@ namespace boost // -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - template struct hash : boost::hash_detail::hash_base { @@ -322,40 +320,6 @@ namespace boost } }; #endif - -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - // On compilers without partial specialization, boost::hash - // has already been declared to deal with pointers, so just - // need to supply the non-pointer version of hash_impl. - - namespace hash_detail - { - template - struct hash_impl; - - template <> - struct hash_impl - { - template - struct inner - : boost::hash_detail::hash_base - { -#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) - std::size_t operator()(T const& val) const - { - return hash_value(val); - } -#else - std::size_t operator()(T const& val) const - { - return hash_detail::call_hash::call(val); - } -#endif - }; - }; - } -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } #endif diff --git a/include/boost/container_hash/hash.hpp b/include/boost/container_hash/hash.hpp index 06fa8a3..3f62f51 100644 --- a/include/boost/container_hash/hash.hpp +++ b/include/boost/container_hash/hash.hpp @@ -17,21 +17,17 @@ #define BOOST_FUNCTIONAL_HASH_HASH_HPP #include -#include -#include #include -#include -#include #include #include #include +#include #include +#include +#include +#include #include -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) -#include -#endif - #if !defined(BOOST_NO_CXX11_HDR_TYPEINDEX) #include #endif @@ -685,8 +681,6 @@ namespace boost // Specializing boost::hash for pointers. -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) - template struct hash : public boost::hash_detail::hash_base @@ -703,49 +697,6 @@ namespace boost #endif } }; - -#else - - // For compilers without partial specialization, we define a - // boost::hash for all remaining types. But hash_impl is only defined - // for pointers in 'extensions.hpp' - so when BOOST_HASH_NO_EXTENSIONS - // is defined there will still be a compile error for types not supported - // in the standard. - - namespace hash_detail - { - template - struct hash_impl; - - template <> - struct hash_impl - { - template - struct inner - : public boost::hash_detail::hash_base - { - std::size_t operator()(T val) const - { -#if !BOOST_WORKAROUND(__SUNPRO_CC, <= 590) - return boost::hash_value(val); -#else - std::size_t x = static_cast( - reinterpret_cast(val)); - - return x + (x >> 3); -#endif - } - }; - }; - } - - template struct hash - : public boost::hash_detail::hash_impl::value> - ::BOOST_NESTED_TEMPLATE inner - { - }; - -#endif } #undef BOOST_HASH_CHAR_TRAITS