diff --git a/include/boost/functional/hash/hash.hpp b/include/boost/functional/hash/hash.hpp index c7189c5..c1d463e 100644 --- a/include/boost/functional/hash/hash.hpp +++ b/include/boost/functional/hash/hash.hpp @@ -388,7 +388,7 @@ namespace boost } template struct hash - : public hash_detail::hash_impl::value> + : public boost::hash_detail::hash_impl::value> ::BOOST_NESTED_TEMPLATE inner { }; @@ -479,7 +479,7 @@ namespace boost }; #endif -#elif !BOOST_WORKAROUND(BOOST_MSVC, < 1300) +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION // On compilers without partial specialization, boost::hash // has already been declared to deal with pointers, so just @@ -487,6 +487,11 @@ namespace boost namespace hash_detail { + template + struct hash_impl; + +#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) + template <> struct hash_impl { @@ -507,15 +512,12 @@ namespace boost #endif }; }; - } #else // Visual C++ 6.5 // There's probably a more elegant way to Visual C++ 6.5 to work // but I don't know what it is. - namespace hash_detail - { template struct hash_impl_msvc { @@ -560,8 +562,10 @@ namespace boost template struct inner : public hash_impl_msvc2 {}; }; + +#endif // Visual C++ 6.5 } -#endif +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } #endif