30 #include <boost/functional/hash.hpp>
34 template<
class T1,
class T2>
struct hash<
std::pair<T1, T2>>
41 boost::hash_combine(seed, std::hash<T1> {}(
s.first));
42 boost::hash_combine(seed, std::hash<T2> {}(
s.second));
47 template<
class...Ts>
struct hash<
std::tuple<Ts...>>
53 template <std::
size_t N>
54 using type =
typename std::tuple_element<N, argument_type>::type;
56 template<
class = std::make_index_sequence<
sizeof...(Ts)>>
59 template<std::size_t...Is>
60 struct helper<
std::index_sequence<Is...>>
65 (boost::hash_combine(seed, std::hash<type<Is>> {}(std::get<Is>(
s))), ...);
72 return helper<>::hash(
s);