我有一个简单的数据类,想要节省一些打字量,并让编译器生成移动构造函数和赋值操作符:
class A
{
public:
A(int x, std::string&& y) : x_(x), y_(std::move(y)) {}
A(A && a) = default;
A& operator= (A && a) = default;
private:
int x_;
std::string y_;
};
假设我的编译器完全符合C++11标准,那么它会正确处理std::string y_
属性吗?它会应用移动语义吗?
std::string
是可移动的。 - NathanOliverstd::move
实际上并没有移动任何东西,这只是其中之一。我认为询问和检查是公平的! - Lightness Races in Orbit