This transformation will recursively remove cv qualifiers, pointers, references and array bounds until the type is a fundamental type, enum, union, class or member pointer.
typedef typename remove_all<T>::type fundamental_type;
typedef const int** Array[4]; typedef typename remove_all<Array*&>::type Int; Int has the type int.