In that case I would suggest not mixing aliases and classes, for consistency. In this case, I would rather have a regular template class named `remove_cv_ref` or similar, and we can follow the `_t` suffix convention for defining aliases for type traits if the need arises later.

I believe the need for arrays to not be decayed will be explained in my other comments about an array wrapper. Otherwise, please would you tell me in what concrete scenario this would be needed?