在我的教科书中,矢量push_back移动实现的实现是:
password
我对std :: move的理解是它基本上静态将项目转换为右值引用。那么为什么在最后一行他们必须使用std :: move(x),当x作为右值引用传入时?
答案 0 :(得分:2)
x
是左值参考,但您必须遵循的经验法则是:如果它有名称,则它是左值 。因此,您必须应用std::move
将其类型转换为右值。如果您遗漏了std::move
,则会复制x
而不是将其移至目的地。有关详细信息,请参阅Rvalue References Explained。