【发布时间】:2020-12-06 10:13:46
【问题描述】:
有谁知道为什么Dict 类无效但Dict2 没问题?
#include <string>
#include <unordered_map>
#include <map>
#include <variant>
class Dict
{
public:
Dict() {}
private:
std::unordered_map<std::string, std::variant<Dict, std::string>> data;
};
class Dict2
{
public:
Dict2() {}
private:
std::map<std::string, std::variant<Dict2, std::string>> data;
};
int main()
{
Dict d;
Dict2 d2;
return 0;
}
我得到一个错误
‘value’ is not a member of ‘std::is_trivially_move_constructible<Dict>’.
我查找了普通移动和复制构造的概念,据我所知,应该定义或删除移动构造函数。
我猜这是因为使用std::unordered_map 和std::variant 并且编译器不知道应该如何移动对象。但我不确定我是否理解正确。
【问题讨论】:
标签: c++ dictionary c++17 unordered-map std-variant