std::move主要用来将一个对象转换成右值引用,其实主要做的是一个类型转换的工作(static_cast),但同时也会做一些类型推导:
实现如下:
template<typename T>
typename remove_reference<T>::type&& move(T&& t)
{
return static_cast<typename remove_reference<T>::type &&>(t);
}
注意:
其中的remove_reference的模板类的调用主要目的是做一次编译器的类型推导,详见remove_reference