Я читаю Обзор нового С++ (С++ 11/14) (только PDF), на слайде 288 он дает реализацию std::forward
template<typename T> // For lvalues (T is T&),
T&& std::forward(T&& param) // take/return lvalue refs.
{ // For rvalues (T is T),
return static_cast<T&&>(param); // take/return rvalue refs.
}
И затем дает другое исполнение в тексте:
Обычная реализация std:: forward:
template<typename T>
struct identity {
typedef T type;
};
template<typename T>
T&& forward(typename identity<T>::type&& param)
{ return static_cast<identity<T>::type&&>(param); }
В чем разница? Почему последняя обычная реализация?