#pragma once #include "hash.h" #include template struct THash> { public: size_t operator()(const std::variant& 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 { public: constexpr size_t operator()(std::monostate) const noexcept { return 1; } };