7 template<
class T>
inline void hash_combine(std::size_t& seed,
const T& v)
9 seed ^= std::hash<T>()(v) + 0x9e3779b9 + (seed<<6) + (seed>>2);
16 static void apply(
size_t& seed,
const Tuple& tuple)
18 HashValueImpl<Tuple, Index-1>::apply(seed, tuple);
19 hash_combine(seed, std::get<Index>(tuple));
23 template<
class Tuple>
struct HashValueImpl<
Tuple, 0>
25 static void apply(
size_t& seed,
const Tuple& tuple)
27 hash_combine(seed, std::get<0>(tuple));
32 template<
class... TT>
struct hash<
std::tuple<TT...>>
37 HashValueImpl<std::tuple<TT...> >::apply(seed, tt);
size_t operator()(const std::tuple< TT... > &tt) const