и если да, в каких случаях будет разница?
сто хочу знать, есть ли уже один, предусмотренный стандартом. Я знаю, что это легко сделать самостоятельно
// 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;
};
но я думаю, что что-то там забыл или неправильно заказал, так что было бы неплохо иметь подготовленный, если таковой существует.