Y a-t-il une différence sémantique entre auto const
et const auto
, ou signifient-ils la même chose?
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.
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*
).