web-dev-qa-db-fra.com

'Auto const' et 'const auto' sont-ils les mêmes?

Y a-t-il une différence sémantique entre auto const et const auto, ou signifient-ils la même chose?

69
steffen

Le qualificatif const s'applique au type situé immédiatement à gauche, sauf s'il n'y a rien à gauche, puis s'applique au type situé immédiatement à droite. Alors oui c'est pareil.

81
AJG85

Exemple artificiel:

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

a et b ont le type char* const. Ne pensez pas que vous pouvez simplement "insérer" le type au lieu du mot clé auto (ici: const char* a)! Le mot clé const s'appliquera à tout le type auquel correspond auto (ici: char*).

18
AndiDog