我正在阅读有关移动构造函数的内容,我在VS 2013中执行了此代码...
class Student
{
unique_ptr<string> pName_;
public:
Student(string name) : pName_(new string(name)) { }
~Student() { }
Student(Student&&) = default; // Here I get the error.
void printStudentName(void) { cout << *pName_ << endl; }
};
int main(void)
{
vector<Student> persons;
Student p = Student("Nishith");
persons.push_back(std::move(p));
persons.front().printStudentName();
return 0;
}
我得到&#34; Student::Student(Student&& )
:不是可以默认的特殊成员函数&#34;当我试图编译它时......
任何人都可以解释我为什么会收到此错误吗?
答案 0 :(得分:38)
因为VS2013编译器不支持默认的移动构造函数。
请参阅以下说明from MSDN:
Visual Studio不支持默认的移动构造函数或 移动赋值运算符作为C ++ 11标准的要求。更多 信息,请参阅的默认和删除功能部分 Support For C++11 Features (Modern C++)