什么时候std :: move多余?

时间:2014-09-10 15:34:41

标签: c++ rvalue-reference

简单地说,我有这个课我喜欢移动被包裹的物体。

std::string m_S;
string_t(string_t&& s)
  : m_S(s.m_S)
{
}

我省略了周围的类结构,为了完整起见,只添加了成员​​m_S

我是否需要使用std::move打包成员访问权限,或者这是否正常,因为s作为右值引用传递?

2 个答案:

答案 0 :(得分:6)

这里确实需要moves.m_S左值表达式,因此不会绑定到_rvalue_引用。

即使s本身也是左值表达式,因此如果您想使用它来移动构造变量,您还需要move

答案 1 :(得分:1)

如果函数参数类型是rvalue-reference,则该参数仍然是函数内部的左值(以及ctors init-list)。

因此,如果你的意思,你真的需要使用std::move或等价物。