13 { std::hash<T>{}(
v) } -> std::convertible_to<size_t>;
20 return seed ^ (std::hash<T>{}(
v) + 0x9e3779b9 + (
seed<<6) + (
seed>>2));
24 size_t hash_of(
const T&
v)
noexcept(
noexcept(std::hash<T>{}(
v)))
26 return std::hash<T>{}(
v);
29 template<Hashable
T, Hashable... Ts>
35 template<
typename Range>
50 template<
typename Key>
53 template<
typename T1,
typename T2>
55 size_t operator()(
const std::pair<T1, T2>& p)
const noexcept(
noexcept(
hash_of(p.first, p.second)))
57 return hash_of(p.first, p.second);
Definition hash_helpers.h:12
Definition custom_decoration_generator.h:5
size_t hash_combine(size_t seed, const T &v) noexcept(noexcept(std::hash< T >{}(v)))
Definition hash_helpers.h:18
size_t hash_of(const T &v) noexcept(noexcept(std::hash< T >{}(v)))
Definition hash_helpers.h:24
constexpr U to(T &&value)
Definition conversion.h:56
size_t hash_range(const Range &range) noexcept(noexcept(hash_combine(0, *std::ranges::begin(range))))
Definition hash_helpers.h:36
size_t operator()(const std::pair< T1, T2 > &p) const noexcept(noexcept(hash_of(p.first, p.second)))
Definition hash_helpers.h:55
Definition hash_helpers.h:51