- . , , . rvalue; . :
template<typename T>
T&& mov(T&& t){
return std::move(t);
}
, T&& , rvalue. , lvalue T& mov(T& t). - , std::move lvalue. , , :
test.cpp:18:22: error: invalid initialization of non-const reference of type
‘std::unique_ptr<int>&’ from an rvalue of type ‘std::remove_reference<std::unique_ptr<int>&>::type {aka std::unique_ptr<int>}’
return std::move(t);
, rvalue . , , , , , std::remove_reference T, &&, rvalue T&&, , mov :
template<typename T>
typename std::remove_reference<T>::type&& mov(T&& t){
return std::move(t);
}
, remove_reference &&:
template<typename T>
typename std::remove_reference<T>::type mov(T&& t){
return std::move(t);
}