什么时候是标准::移动冗余

When is std::move redundant?

本文关键字:移动 冗余 标准 什么时候      更新时间:2023-10-16

简单地说,我有这个类,我想在其中移动包装的对象。

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

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

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

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

即使s本身也是一个左值表达式,所以如果你想使用它来移动构造一个变量,你也需要move

如果函数参数类型是右值引用,则参数仍然是函数内部的左值(以及 ctors 初始化列表(。

因此,如果您的意思,您确实需要使用std::move或等效物。