std :: unordered_map初始化内的std :: variant键的结构构造函数

时间:2018-10-02 04:19:12

标签: c++ struct initialization unordered-map variant

#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}
};

有没有办法以这种方式使用裸骨结构的构造函数作为键?

0 个答案:

没有答案