#include <variant>
#include <unordered_map>
struct Foo {int a, b;};
struct Bar {};
struct Baz {};
auto main() -> int {
const std::unordered_map<std::variant<Foo, Bar, Baz>, int> hello = {
{Foo{1, 2}, 1}
};
return 0;
}
C语抱怨:
error: static_assert failed due to requirement '__is_invocable<const std::hash<std::variant<Foo, Bar, Baz> > &, const std::variant<Foo, Bar, Baz>&>{}' "hash function must be invocable with an argument of key type"`
和许多其他错误。
我们已经可以在unordered_map
中使用变体,如下所示:
const std::unordered_map<std::variant<std::string, int>, int> a = {
{"This is a test", 1},
{200, 2}
};
有没有办法以这种方式使用裸骨结构的构造函数作为键?