diff --git a/include/boost/container_hash/hash.hpp b/include/boost/container_hash/hash.hpp index c2e0cbe..92c8d9a 100644 --- a/include/boost/container_hash/hash.hpp +++ b/include/boost/container_hash/hash.hpp @@ -102,8 +102,8 @@ namespace boost { std::size_t seed = 0; - seed ^= static_cast( v >> 32 ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( v ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( v >> 32 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v ) + hash_detail::hash_mix( seed ); return seed; } @@ -115,10 +115,10 @@ namespace boost { std::size_t seed = 0; - seed ^= static_cast( v >> 96 ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( v >> 64 ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( v >> 32 ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( v ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( v >> 96 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v >> 64 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v >> 32 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v ) + hash_detail::hash_mix( seed ); return seed; } @@ -130,8 +130,8 @@ namespace boost { std::size_t seed = 0; - seed ^= static_cast( v >> 64 ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( v ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( v >> 64 ) + hash_detail::hash_mix( seed ); + seed = static_cast( v ) + hash_detail::hash_mix( seed ); return seed; }