move

无条件将其参数强制转换为右值引用,从而表示其可以移动(如果其类型支持移动)。

template<class Type>
    typename remove_reference<Type>::type&& move(Type&& Arg) noexcept;

参数

参数

说明

Type

一种从 Arg 中传递的参数类型推导出的类型(与引用折叠规则一起)。

Arg

要强制转换的参数。 虽然 Arg 的类型看起来指定为右值引用,但 move 也接受左值参数,原因是左值引用可以绑定到右值引用。

返回值

作为右值引用 Arg,无论其类型是否是引用类型。

备注

模板参数 Type 不应显式指定,而应从 Arg 中传递的值类型进行推导。 Type 的类型将根据引用折叠规则进行进一步调整。

move 不会移动其参数。 相反,通过无条件将其参数(可能是左值)强制转换为右值引用,它使得编译器随后能够移动(而不是复制)在 Arg 中传递的值(如果其类型支持移动)。 如果其类型不支持移动,则将进行复制。

如果 Arg 中传递的值为左值(也就是说,它具有名称或可以采用其地址),则它在发生移动时将会失效。 在移动 Arg 中传递的值后,请勿按照其名称或地址来引用它。

要求

标头:<utility>

命名空间: std

请参见

参考

<utility>

Lvalues 和 Rvalues