Question Le mot clé 'auto' peut-il être utilisé comme spécificateur de classe de stockage dans C ++ 11?


Peut le auto mot clé être utilisé comme spécificateur de classe de stockage dans C ++ 11?

Le code suivant est-il légal en C ++ 11?

int main() {
   auto int x;
}

10
2018-05-22 11:22


origine


Réponses:


Non, le code est mal formé en C ++ 11. auto en C ++ 11 serait utilisé pour déduire le type d'une variable de son initialiseur et il ne peut pas être utilisé comme spécificateur de classe de stockage.

usage correct

int main()
{
   auto x = 12; // x is an int
   auto y = 12.3; // y is a double
}

13
2018-05-22 11:37



auto int x;

est circulaire - vous déclarez littéralement le type en tant que int. Étant donné que vous aviez cette information, il n'y a aucune raison de ne pas simplement utiliser:

int x;

si vous voulez déclarer x le type d'une autre variable dans la portée, vous pouvez utiliser decltype

using sometype = float;
sometype y;
decltype(y) x;

0
2017-10-03 23:45