В Краткое введение в Rvalue References, forward
определяется следующим образом:
template <typename T>
struct identity { typedef T type; };
template <typename T>
T &&forward(typename identity<T>::type &&a) { return a; }
Какую цель выполняет класс identity
? Почему бы и нет:
template <typename T>
T &&forward(T &&a) { return a; }