¿Importa en qué orden se aplica lo siguiente?
std::remove_reference_t<std::remove_cv_t<T>>
o
std::remove_cv_t<std::remove_reference_t<T>>
¿En qué escenario, si lo hay, importa el orden?
c++
c++17
typetraits
Darune
fuente
fuente
const int&
. Deberías meterteconst int
en el primer caso yint
en el segundo.const
".Respuestas:
Hay casos en que estos dos rasgos de tipo producen resultados diferentes. Por ejemplo, consideremos
T = const int&
.std::remove_cv_t
eliminará el calificador cv de nivel superior, convirtiéndoloconst int&
enconst int&
, porque no hay calificador cv de nivel superior.std::remove_reference_t
luego regresaráconst int
.En el segundo caso,
std::remove_reference_t
volveráconst int
ystd::remove_cv_t
lo transformaráint
.Demo simple
fuente