其实对于 std::move来说,只做了一件事。可以初步的理解为 (不过当然是错误的)
template<typename T>
T&& move(T& val)
{
return static_cast<T&&>(val);
}
move 只是纯粹的将一个左值转化为了一个右值,STL实现基本都已经实现了移动语义,相当于对于 vector<T>::push_back()
有两个版本的实现,简单写如下:
template<typename T>
class Vector
{
void push_back(T& lval);
void push_back(T&& rval);
};</