我无法编译附加项目,因为删除了move构造函数。
这是预期的行为吗?如果编译器不使用move构造函数,为什么还要使用它呢?
Windows-Visual Studio 2015 14.0.25431.01更新3
#include <string>
#include <sstream>
#include <vector>
class poo {
public:
poo() = default;
poo(poo&&) = delete; //deleted function
virtual ~poo() = default;
poo operator +(const poo &a) const {
poo to_return;
to_return._s += a._s;
return to_return;
//moveconstructors.cpp(14): error C2280: 'poo::poo(poo &&)': attempting to reference a deleted function
}
private:
std::string _s;
};
int main(int, char **) {
poo a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑1:添加“ poo(const poo&)= default;”后,也会发生相同的结果
编辑2:Windows-Visual Studio 2019 16.1.0 Preview 2.0也会发生相同的结果
编辑3:添加/修改后发生相同的结果
poo(const …Run Code Online (Sandbox Code Playgroud)