静态强制转换为右值引用和std::Move有什么不同吗
静态强制转换的说明为
如果new_type是右值引用类型,则STATIC_CAST将表达式的值转换为x值。此类型的STATIC_CAST用于在STD::Move中实现移动语义。(从C++11开始)
这是否确认以下内容是等价的?
(A)
X x1;
X x2 = static_cast<X&&>(x1);
(B)
X x1;
X x2 = std::move(x1);
解决方案
是,有一个非常重要的区别:std::move
记录您要执行的操作。此外,演员组容易写出错误,如忘记&
或错误类型X
。
由此可见,std::move
更不适合打字。
相关文章