简单地说,我有这个课我喜欢移动被包裹的物体。
std::string m_S;
string_t(string_t&& s)
: m_S(s.m_S)
{
}
我省略了周围的类结构,为了完整起见,只添加了成员m_S
。
我是否需要使用std::move
打包成员访问权限,或者这是否正常,因为s
作为右值引用传递?
答案 0 :(得分:6)
这里确实需要move
。 s.m_S
是左值表达式,因此不会绑定到_rvalue_
引用。
即使s
本身也是左值表达式,因此如果您想使用它来移动构造变量,您还需要move
。
答案 1 :(得分:1)
如果函数参数类型是rvalue-reference,则该参数仍然是函数内部的左值(以及ctors init-list)。
因此,如果你的意思,你真的需要使用std::move
或等价物。