If given a reference, returns the type being referenced. If given a non-reference, simply returns the input.
typedef typename remove_reference<T>::type referenced_type;
typedef typename remove_reference<int&>::type Int; typedef typename remove_reference<const int&>::type ConstInt; Int has the type int, and ConstInt has the type const int.