静态转换为右值引用和std :: move之间有什么区别吗?

Adi*_*hag 23 c++ move static-cast c++11

静态演员的描述说

如果new_type是右值引用类型,则static_cast将expression的值转换为xvalue.这种类型的static_cast用于在std :: move中实现移动语义.(自C++ 11起)

这是否证实以下内容相同?

(一个)

X x1;
X x2 = static_cast<X&&>(x1); 
Run Code Online (Sandbox Code Playgroud)

(B)

X x1;
X x2 = std::move(x1);
Run Code Online (Sandbox Code Playgroud)

Jan*_*ann 34

是的,有一个非常重要的区别:std::move记录你想做的事情.此外,演员也倾向于写错误,如遗忘&或错误的类型X.

可以看出,std::move打字更少.

  • 只有当`move`是*not*`constexpr`并且我需要该属性时才使用"`static_cast <X &&>`". (4认同)