blob: 1817a9d2177bef6c5ffc64c612e5f0a0125e51f6 [file] [log] [blame]
Jeff Thompsona28eed82013-08-22 16:21:10 -07001
2// Copyright 2012 Daniel James.
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6// This is an example of how to write a hash function for a template
7// class.
8
9#include <boost/functional/hash_fwd.hpp>
10
11template <typename A, typename B>
12class my_pair
13{
14 A value1;
15 B value2;
16public:
17 my_pair(A const& v1, B const& v2)
18 : value1(v1), value2(v2)
19 {}
20
21 bool operator==(my_pair const& other) const
22 {
23 return value1 == other.value1 &&
24 value2 == other.value2;
25 }
26
27 friend std::size_t hash_value(my_pair const& p)
28 {
29 std::size_t seed = 0;
30 ndnboost::hash_combine(seed, p.value1);
31 ndnboost::hash_combine(seed, p.value2);
32
33 return seed;
34 }
35};
36