Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
template <class T> typename remove_reference<T>::type&& move(T&& a) { return a; }
...
move(T&& a)
{
return static_cast<typename std::remove_reference<T>::type&&>(a);
}
Теперь всё зависит от клиентского кода, где должны быть перегружены ключевые функции (например, конструктор копирования и оператор присваивания), определяющие будет ли параметр lvalue или rvalue. Если параметр lvalue, то необходимо выполнить копирование. Если rvalue, то можно безопасно выполнить перемещение.
Краткое введение в rvalue-ссылки