1 #ifndef GENESIS_UTILS_CONTAINERS_HASH_TUPLE_H_
2 #define GENESIS_UTILS_CONTAINERS_HASH_TUPLE_H_
55 template <class Tuple, size_t Index = std::tuple_size<Tuple>::value - 1>
58 static void apply(
size_t& seed, Tuple
const& tuple )
60 HashValueImpl<Tuple, Index-1>::apply(seed, tuple);
65 template <
class Tuple>
66 struct HashValueImpl<Tuple,0>
68 static void apply(
size_t& seed, Tuple
const& tuple )
75 template <
typename TT>
80 return std::hash<TT>()(tt);
84 template <
typename ... TT>
85 struct hash<std::tuple<TT...>>
90 HashValueImpl<std::tuple<TT...> >::apply( seed, tt );
99 #endif // include guard