6 inline void hash_combine(std::size_t&
seed,
const T& v)
8 seed ^= std::hash<T>()(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
13 struct HashValueImpl {
14 static void apply(
size_t&
seed,
const Tuple& tuple)
16 HashValueImpl<Tuple, Index - 1>::apply(seed, tuple);
17 hash_combine(seed, std::get<Index>(tuple));
21 template <
class Tuple>
22 struct HashValueImpl<
Tuple, 0> {
23 static void apply(
size_t&
seed,
const Tuple& tuple)
25 hash_combine(seed, std::get<0>(tuple));
30 template <
class... TT>
31 struct hash<
std::tuple<TT...>> {
35 HashValueImpl<std::tuple<TT...>>::apply(seed, tt);
size_t operator()(const std::tuple< TT... > &tt) const