Index: hash.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/functional/hash/hash.hpp,v retrieving revision 1.27.2.7 diff -u -r1.27.2.7 hash.hpp --- hash.hpp 15 May 2007 22:05:41 -0000 1.27.2.7 +++ hash.hpp 17 May 2007 20:55:14 -0000 @@ -1,5 +1,5 @@ -// Copyright Daniel James 2005-2006. Use, modification, and distribution are +// Copyright Daniel James 2005-2007. Use, modification, and distribution are // subject to the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -28,6 +28,11 @@ #include #endif +#if defined(BOOST_MSVC) +# pragma warning(push) +# pragma warning(disable:4267) +#endif + namespace boost { #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551)) @@ -41,12 +46,13 @@ std::size_t hash_value(long); std::size_t hash_value(unsigned long); -#if defined(BOOST_MSVC) && defined(_WIN64) +#if BOOST_HAS_LONG_LONG && defined(_M_X64) && defined(_WIN64) // On 64-bit windows std::size_t is a typedef for unsigned long long, which // isn't due to be supported until Boost 1.35. So add support here. // (Technically, Boost.Hash isn't actually documented as supporting // std::size_t. But it would be pretty silly not to). - std::size_t hash_value(std::size_t); + std::size_t hash_value(long long); + std::size_t hash_value(unsigned long long); #endif #if !BOOST_WORKAROUND(__DMC__, <= 0x848) @@ -116,7 +122,7 @@ return static_cast(v); } -#if defined(_M_X64) && defined(_WIN64) +#if BOOST_HAS_LONG_LONG && defined(_M_X64) && defined(_WIN64) inline std::size_t hash_value(long long v) { return v; @@ -588,5 +594,9 @@ #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION } +#if defined(BOOST_MSVC) +# pragma warning(pop) +#endif + #endif