我(错误地)在我的程序如下分配: std::shared_ptr<SI::Program> m_program; // in class
m_program = std::make_unique<SI::Program>(); // in method
当我发现这一点,我首先想知道为什么这甚至编译。原来shared_ptr有一个特殊的移动赋值操作符unique_ptr对象。 我的问题是,这
我有一个类,移动任务被明确删除,因为对象不应该是可移动的。但是,如果我分配到使用这个RVO类的一个实例,编译器给我的错误: main.cpp:12:16: note: candidate function has been explicitly deleted
也编译器提现有的拷贝赋值运算符,但不使用它。 这里是我的代码(或(不)运行例如here): class foo {
public:
下面的代码提供了错误: use of deleted function ‘constexpr B::B(const B&)’
现在,我知道这是因为拷贝构造函数是(故意)通过指定移动构造函数隐式删除,并且复制该向量导致对(已删除的)复制构造函数的调用。我想我也明白为什么使用vector的拷贝构造函数和赋值操作符。我清楚地想要使用移动构造函数和赋值运算符:移动对象,所以也移动它包含的矢量。那么,如