41 return first ^ (second +
std::size_t(0x9e3779b9ull) + (first << 6) + (first >> 2));
60 class T,
class U,
class ... Args,
62 (
sizeof...(Args) > 0u)
63 and std::is_same_v<T, std::size_t>
64 and std::is_same_v<U, std::size_t>
65 and std::conjunction_v<std::is_same<Args, std::size_t>...>
76 template <
class ... T>
79 if constexpr(
sizeof...(args) == 1u)
80 return hash_value(std::forward<T>(args) ...);
82 return hash_combine(hash_value(std::forward<T>(args)) ...);
93 template <
class ... T>
101 template <
class T,
class U>
117 template <
class T, std::
size_t N>
Definition: extra-hash.h:75
Primary classes and utility functions for AnySet.
Definition: SetOperations.h:21
std::size_t hash_combine(std::size_t first, std::size_t second)
Combine two hash values using a formula that is compatible with boost::hash_combine().
Definition: extra-hash.h:39
Function object that implements a hash function for instances of type T. Inherits from std::hash<T> u...
Definition: AnyHash.h:25