diff options
Diffstat (limited to 'src/mbgl/util/hash.hpp')
-rw-r--r-- | src/mbgl/util/hash.hpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mbgl/util/hash.hpp b/src/mbgl/util/hash.hpp new file mode 100644 index 0000000000..987a8bd8dc --- /dev/null +++ b/src/mbgl/util/hash.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include <mbgl/util/ignore.hpp> + +#include <functional> + +namespace mbgl { +namespace util { + +template <class T> +inline void hash_combine(std::size_t& seed, const T& v) { + seed ^= std::hash<T>()(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); +} + +template <class... Args> +inline std::size_t hash(Args&&... args) { + std::size_t seed = 0; + ignore({ (hash_combine(seed, args), 0)... }); + return seed; +} + +} // namespace util +} // namespace mbgl |