Correctement, l'ancien utiliserait box a = { { 1 } }
, de sorte que vous avez une série de croisillons pour chaque agrégat. L'extérieur de l'appareil est de la structure, et l'intérieur est pour le tableau. Cependant, la langue vous permet d'omettre l'intérieur des accolades.
Dans ce dernier, il n'y a pas intérieur des accolades à omettre. Vous n'êtes pas autorisé à omettre extérieur bretelles; vous devez avoir au moins un jeu de bretelles pour distinguer une liste des initialiseurs pour un agrégat. Dans un sens, les accolades dire "Voici une liste de choses à mettre à l'intérieur de l'ensemble." Lorsque vous écrivez box b = 2
, le compilateur ne sait pas que vous voulez mettre 2
à l'intérieur de l'agrégat. Au lieu de cela, il semble que vous essayez d'initialiser l' b
objet (plutôt qu'une partie d'elle) 2
. Ainsi, le compilateur essaie de trouver un constructeur ou une conversion qui change un 2
en box
. Lorsque cela ne fonctionne pas, vous obtiendrez une erreur.