¿Es lo mismo ‘auto const’ y ‘const auto’?

2 minutos de lectura

avatar de usuario
steffen

¿Existe una diferencia semántica entre auto const y const autoo significan lo mismo?

  • Es lo mismo, como cualquier otro tipo.

    – chris

    22 de mayo de 2012 a las 20:46

  • Puedo proporcionar una respuesta más precisa pero legalista. Dado que no te identificaste con language-lawyer, voy a suponer, por ahora, que no quieres tantos detalles.

    – Arne Vogel

    5 de septiembre de 2018 a las 8:34

  • @ArneVogel tienes tu oportunidad ahora 🙂

    – Ígor Skochinsky

    15 de noviembre de 2019 a las 14:49

los const El calificador se aplica al tipo inmediatamente a la izquierda a menos que no haya nada a la izquierda, entonces se aplica al tipo inmediatamente a la derecha. Así que sí, es lo mismo.

  • Si no queda nada, entonces está bien (y viceversa) 🙂

    – SeshadriR

    4 sep 2018 a las 11:51

  • Realmente no es así como funciona, especificadores y calificadores (que preceden al declarante) puede aparecer en cualquier orden, por ejemplo long volatile unsigned const typedef long cvull;. El tipo no está (totalmente) a la izquierda ni a la derecha de const.

    – Arne Vogel

    5 de septiembre de 2018 a las 8:31

  • @ArneVogel Dios mío, ¿por qué? typedef está permitido en el medio 🙂

    – 4LegsDrivenCat

    20 de noviembre de 2019 a las 3:08

  • Como comentó @ArneVogel, la respuesta no es completamente correcta. El hecho de que esta sea la respuesta aceptada es engañoso (y posiblemente peligroso).

    – WillY

    4 de enero de 2020 a las 0:42

  • @ArneVogel, ¿dónde podría leer más sobre esto, por favor?

    – Krapnix

    27 dic 2020 a las 22:00

avatar de usuario
andiperro

Ejemplo inventado:

std::vector<char*> test;
const auto a = test[0];
*a="c";
a = 0; // does not compile
auto const b = test[1];
*b = 'c';
b = 0; // does not compile

Ambas cosas a y b tener tipo char* const. No crea que simplemente puede “insertar” el tipo en lugar de la palabra clave auto (aquí: const char* a)! los const palabra clave se aplicará a todo el tipo que auto partidos (aquí: char*).

  • La const realmente no se aplica a char*se aplica a la char parte, no la * parte.

    – jbruni

    3 de diciembre de 2019 a las 23:15

¿Ha sido útil esta solución?