#ifndef DYNINST_DYNCOMPAT_FUNCTIONAL_HASH_HPP #define DYNINST_DYNCOMPAT_FUNCTIONAL_HASH_HPP #include #include #include namespace dyncompat { template struct hash { std::size_t operator()(const T& value) const { return std::hash{}(value); } }; template inline void hash_combine(std::size_t& seed, const T& value) { seed ^= std::hash{}(value) + 0x9e3779b9u + (seed << 6) + (seed >> 2); } template struct hash> { std::size_t operator()(const std::pair& value) const { std::size_t seed = 0; hash_combine(seed, value.first); hash_combine(seed, value.second); return seed; } }; } // namespace dyncompat #endif