std :: remove_reference_t <std :: remove_cv_t <T>> ¿importa el orden?

8

¿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?

Darune
fuente
2
Intenta aplicarlo a const int&. Deberías meterte const inten el primer caso y inten el segundo.
Evg
¿Responde esto a tu pregunta? std :: remove_const con referencias const
Evg
@Evg Creo que sí, ¿estás diciendo que debería eliminar la referencia primero, ya que las referencias no pueden ser constantes?
Darune
Exactitud Hablando en términos generales, las referencias no pueden ser "- const".
Evg

Respuestas:

7

Hay casos en que estos dos rasgos de tipo producen resultados diferentes. Por ejemplo, consideremos T = const int&.

  1. std::remove_cv_teliminará el calificador cv de nivel superior, convirtiéndolo const int&en const int&, porque no hay calificador cv de nivel superior. std::remove_reference_tluego regresará const int.

  2. En el segundo caso, std::remove_reference_tvolverá const inty std::remove_cv_tlo transformará int.

Demo simple

Evg
fuente