什么时候是标准::移动冗余
When is std::move redundant?
简单地说,我有这个类,我想在其中移动包装的对象。
std::string m_S;
string_t(string_t&& s)
: m_S(s.m_S)
{
}
我省略了周围的类结构,只是为了完整起见添加了成员m_S
。
我是否需要用std::move
包装成员访问权限,或者这是否只是工作,因为s
作为右值引用传递?
你在这里确实需要move
。 s.m_S
是一个左值表达式,因此不会绑定到_rvalue_
引用。
即使s
本身也是一个左值表达式,所以如果你想使用它来移动构造一个变量,你也需要move
。
如果函数参数类型是右值引用,则参数仍然是函数内部的左值(以及 ctors 初始化列表(。
因此,如果您的意思,您确实需要使用std::move
或等效物。
相关文章:
- 如何擦除冗余输入?
- 使用提升几何缓冲区缩放多边形时的冗余折点
- 我应该担心冗余声明吗?
- Qt的slot(?)将冗余命名空间插入连接
- 方法冗余移动调用的移动语义
- 使用 llvm 和本地值编号算法擦除冗余表达式
- 优化堆上创建的冗余变量
- 如何消除访客模式冗余?
- 表达式模板需要冗余重载
- C++,处理多个构造函数重载和冗余代码
- 使用模板基类消除工厂类派生类冗余的干净方法
- 连接两个文件时如何避免冗余尾随换行符?
- CMake:修改共享库时的冗余链接
- 提升精神 X3:"属性没有预期的大小"冗余
- 如何简化此冗余C++代码?
- 是``if`语句''在modulo之前和分配操作之前的冗余
- 使用最终类说明符时,最终函数说明符是否冗余?
- 简化冗余std :: array初始化,当时没有constexpr构造函数
- 尝试使用 OpenMP 并行化递归函数的冗余计算
- 什么时候是标准::移动冗余