这是std::move(). 它不完全符合标准的细节,但非常接近:
template<class T>
typename std::remove_reference<T>::type&&
myMove( T&& Arg )
{
return ( ( typename std::remove_reference<T>::type&& )Arg );
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这是行不通的,如果我们更换typename std::remove_reference<T>::type&&由T&&,即
template<class T>
typename std::remove_reference<T>::type&&
myMove( T&& Arg )
{
return ( (T&&) Arg );
}
Run Code Online (Sandbox Code Playgroud)