【发布时间】:2024-01-11 14:55:01
【问题描述】:
我有一个用于 ex:TestStruct 的对象向量 ex:TestStructVec,其中 object 包含一个唯一指针向量 ex: uptrVec。
struct TestClass {};
struct TestStruct
{
std::vector<std::unique_ptr<TestClass> > uptrVec;
}
std::vector<TestStruct> TestStructVec;
TestStruct ts1;
ts1.uptrVec.emplace_back(std::make_unique<TestClass>());
现在,当将此对象放回向量时,仅在 vs2013 和 c++11 中,尝试引用已删除的函数时失败(假设它存在一些复制 const 问题)。我
TestStructVec.emplace_back(std::move(ts1));
请告诉我我哪里做错了。
注意:在 VS2015 和 Vs2017 中编译正常,没有观察到错误。
感谢任何建议。谢谢。
【问题讨论】:
-
会不会是 VS2013 的 bug,或者对 C++11 的支持不完整?
-
我真的不确定这是一个错误还是我缺少要添加的内容?所以你认为这是一个错误。
-
就像我说的,可能是一个错误或缺少 C++11 功能。如果没有完整的程序,我们无法判断。另外,如果它与较新的 MSVC 版本一起编译,对你来说真的很重要吗?
-
是的,这很重要,因为我们为所有 msvc 版本提供库
标签: c++11 vector visual-studio-2013 copy-constructor unique-ptr