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