Имеет ли значение, в каком порядке применяется следующее?
std::remove_reference_t<std::remove_cv_t<T>>
или
std::remove_cv_t<std::remove_reference_t<T>>
В каком сценарии, если таковой имеется, имеет значение заказ
Бывают случаи, когда эти два типа черт дают разные результаты. Например, давайте рассмотрим T = const int&.
T = const int&
std::remove_cv_t удалит cv-квалификатор верхнего уровня, превратив const int& в const int&, потому что нет cv верхнего уровня -qualifier. std::remove_reference_t вернет const int.
std::remove_cv_t
const int&
std::remove_reference_t
const int
Во втором случае std::remove_reference_t вернет const int, а std::remove_cv_t преобразует его в int.
int
Простая демонстрация