静态强制转换为右值引用和std::Move有什么不同吗

2022-05-08 00:00:00 move c++ c++11 static-cast

静态强制转换的说明为

如果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更不适合打字。

相关文章