I just want to know if there is already one provided by the standard. I know it's easy to make one yourself
// for C++03, use <tr1/type_traits> and std::tr1
#include <type_traits>
template<class T>
struct remove_toplevel{
typedef typename std::remove_reference<T>::type noref_T;
typedef typename std::remove_cv<noref_T>::type noref_nocv_T;
typedef noref_nocv_T type;
};
but I think I forgot something in there or got the order wrong, so it'd be nice to have a prepared one, if one exists.
std::decay
, I believe, performs this functionality.