Menu

[94f52a]: / hash.hpp  Maximize  Restore  History

Download this file

44 lines (32 with data), 786 Bytes

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef CHILON_HASH_HPP
#define CHILON_HASH_HPP
#include <boost/functional/hash.hpp>
#include <vector>
#include <type_traits>
namespace chilon {
namespace detail {
struct hashable {};
template <class T, bool Custom>
struct hasher : T::hash_type {};
template <class T>
struct hasher<T, false> : std::hash<T> {};
}
template <class T>
struct hasher
: detail::hasher<T, std::is_base_of<detail::hashable, T>::value> {};
template <class T>
struct hasher< std::vector<T> > {
size_t operator()(std::vector<T> const& t) const {
return boost::hash_range(t.begin(), t.end());
}
};
template <class T>
size_t hash(T const& t) {
return hasher<T>()(t);
}
template <class H>
struct hashable : detail::hashable {
typedef H hash_type;
};
}
#endif
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.