【发布时间】:2020-09-06 22:22:41
【问题描述】:
假设以下代码将A 类型的对象移动到av(向量):
#include <memory>
#include <vector>
struct A
{
~A() {};
std::unique_ptr<int> an_int;
};
int main(int argc, char* argv[])
{
std::vector<A> av;
av.push_back(A());
return 0;
}
这将无法按原样编译。但是,如果我不实现析构函数~A() {},它就可以正常工作。编译器提示一些缺失(已删除)copy constructor,但我看不到这适用于这里(因为我只做移动操作)
unique_ptr和导致代码编译失败的自定义析构函数是什么关系?有一个简单的解决方法吗?
谢谢。
【问题讨论】: