我有一个包含 unique_ptr 的类。我想将此类的实例放在容器中(特别是 std::map)。这可以使用std::move
,.emplace
但是,我想在容器的初始化列表中执行所有这些初始化。这可能吗?
我怀疑Foo
在初始化列表中被初始化,然后被复制,这导致了问题。我尝试std::move
在初始化列表中添加一个,但这并没有解决问题。
class Foo
{
public:
std::unique_ptr<std::string> my_str_ptrs;
}
编译失败“试图访问已删除的函数”。这是我想做的一个例子
std::map<std::string, Foo> my_map{
{"a", Foo{}}
};
编译成功
std::map<std::string, Foo> my_map;
my_map.emplace("a", Foo{});