15 seed ^= value + 0x9e3779b9 + (seed<<6u) + (seed>>2u);
23 inline void hash_add(std::size_t& seed,
const T& value) {
31 inline void hash_add(std::size_t& seed,
const std::size_t& value) {
38 template<
typename T1,
typename T2>
39 inline void hash_add(std::size_t& seed,
const std::pair<T1, T2>& p) {
48 inline void hash_add(std::size_t& seed,
const std::vector<T>& v) {
53 inline void hash_add(std::size_t& seed,
const std::set<T>& s) {
60 template<
typename First,
typename... Tail>
61 inline void hash_add(std::size_t& seed,
const First& value, Tail&&... tail) {
70 template<
typename... Args>
73 hash_add(seed, std::forward<Args>(args)...);
carl is the main namespace for the library.
std::size_t hash_all(Args &&... args)
Hashes an arbitrary number of values.
void hash_combine(std::size_t &seed, std::size_t value)
Add a value to the given hash seed.
void hash_add(std::size_t &seed, const T &value)
Add hash of the given value to the hash seed.
Utility functor to hash a sequence of object using an output iterator.
std::output_iterator_tag iterator_category
hash_inserter & operator++()
const hash_inserter operator++(int)
hash_inserter & operator*()
hash_inserter & operator=(const T &t)