]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/functional/hash/examples/template.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / functional / hash / examples / template.hpp
1
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
11 template <typename A, typename B>
12 class my_pair
13 {
14 A value1;
15 B value2;
16 public:
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 boost::hash_combine(seed, p.value1);
31 boost::hash_combine(seed, p.value2);
32
33 return seed;
34 }
35 };
36