【发布时间】:2015-10-20 22:10:54
【问题描述】:
假设您创建了一个库,其中包含一个类 MyClass,该类具有正确的移动赋值运算符和移动构造函数。此外,该库已正确定义和实现MyClass MyClass::operator + (const MyClass& other)。此类使用-std=c++11 编译,以便使这些运算符和MyClass&& 等语法有意义。
如果你以后有一个程序不是使用这个库编译-std=c++11并创建类MyClass的实例,你能利用移动语义吗?
那,下面会不会调用MyClass的move构造函数?
MyClass first, second;
// initialize first and second
MyClass moved = first + second; // hopefully uses move semantics
我知道这段代码无法创建自己的类并使用 MyClass&& 这样的语法而不会出现编译错误,但希望它仍然能够通过使用 C++11 库来利用 C++11。 ..
感谢您的澄清。
【问题讨论】:
-
我怀疑您将无法编译您的程序,因为它无法识别库头文件中包含的 C++11 语法。
标签: c++ c++11 move-semantics