libboloq
A library to replesent binary functions using Binary Decision Diagram.
 全て クラス 名前空間 関数 型定義 ページ
tuple_hash.h
1 #pragma once
2 namespace std{
3 
4 namespace {
5 
9 template <class Tuple, size_t Index = std::tuple_size<Tuple>::value - 1>
10 struct HashValueImpl {
11  static void apply(size_t& seed, Tuple const& tuple) {
12  HashValueImpl<Tuple, Index-1>::apply(seed, tuple);
13  boost::hash_combine(seed, std::get<Index>(tuple));
14  }
15 };
16 
18 template <class Tuple>
19 struct HashValueImpl<Tuple, 0> {
20  static void apply(size_t& seed, Tuple const& tuple) {
21  boost::hash_combine(seed, std::get<0>(tuple));
22  }
23 };
24 
25 }
26 
30 template <typename ... TT>
31 struct hash<const std::tuple<TT...>> {
35  size_t operator()(std::tuple<TT...> const& tt) const {
36  size_t seed = 0;
37  HashValueImpl<std::tuple<TT...> >::apply(seed, tt);
38  return seed;
39  }
40 };
41 
42 }
size_t operator()(std::tuple< TT...> const &tt) const
Definition: tuple_hash.h:35
Definition: boolean_function.h:215