1234567891011121314151617181920212223 |
- #pragma once
- #include "hash.h"
- #include <variant>
- template <class... Ts>
- struct THash<std::variant<Ts...>> {
- public:
- size_t operator()(const std::variant<Ts...>& v) const noexcept {
- return CombineHashes(
- IntHash(v.index()),
- v.valueless_by_exception() ? 0 : std::visit([](const auto& value) { return ComputeHash(value); }, v));
- }
- };
- template <>
- struct THash<std::monostate> {
- public:
- constexpr size_t operator()(std::monostate) const noexcept {
- return 1;
- }
- };
|