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?


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.