1 $NetBSD: patch-boost_functional_hash_hash.hpp,v 1.1 2012/08/31 12:20:56 adam Exp $
5 --- boost/functional/hash/hash.hpp.orig 2012-07-15 23:28:30.000000000 +0000
6 +++ boost/functional/hash/hash.hpp
8 #include <boost/functional/hash/detail/hash_float.hpp>
10 #include <boost/limits.hpp>
11 +#include <boost/type_traits/is_enum.hpp>
12 +#include <boost/utility/enable_if.hpp>
14 #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
15 #include <boost/type_traits/is_pointer.hpp>
16 @@ -90,6 +92,10 @@ namespace boost
18 typename boost::hash_detail::ulong_numbers<T>::type hash_value(T);
20 + template <typename T>
21 + typename boost::enable_if<boost::is_enum<T>, std::size_t>::type
24 #if !BOOST_WORKAROUND(__DMC__, <= 0x848)
25 template <class T> std::size_t hash_value(T* const&);
27 @@ -179,6 +185,13 @@ namespace boost
28 return hash_detail::hash_value_unsigned(v);
31 + template <typename T>
32 + typename boost::enable_if<boost::is_enum<T>, std::size_t>::type
35 + return static_cast<std::size_t>(v);
38 // Implementation by Alberto Barbati and Dave Harris.
39 #if !BOOST_WORKAROUND(__DMC__, <= 0x848)
40 template <class T> std::size_t hash_value(T* const& v)