J'ai le code suivant:
int x = {{}};
Cette syntaxe est-elle valide selon la norme C++? (Je suis intéressé par C++ 11 et versions ultérieures.)
Lors de l'utilisation des derniers compilateurs, il n'y a pas de problème, cependant dans certains anciens (par exemple GCC 4.8.5), il donne l'erreur suivante:
erreur: accolades autour de l'initialiseur scalaire pour le type 'int'
C'est mal formé. gcc a tort de l'accepter et clang semble l'autoriser comme extension, comme il le prévient .
Je vais citer le dernier projet, mais cela ne fait aucune différence. L'initialisation de liste fonctionne comme suit [dcl.init.list] , où T est int
dans ce cas: