Oui, selon la règle de initialisation de l'agrégat il est garanti (que tous les éléments du tableau C
sera valeur initialisée c'est-à-dire zéro initialisé a 0
dans ce cas).
(c'est moi qui souligne)
Si le nombre de clauses initialisatrices est inférieur au nombre de membres and bases (since C++17)
o la liste des initialisateurs est complètement vide les autres membres and bases (since C++17)
sont initialisés by their default initializers, if provided in the class definition, and otherwise (since C++14)
par des listes vides, conformément aux règles habituelles d'initialisation des listes (qui effectue l'initialisation des valeurs pour les types non-classes et les classes non-agrégats avec des constructeurs par défaut, et l'initialisation des agrégats pour les agrégats).
PS :
int A[5]; // Entries remain uninitialized
"rester non initialisé" pourrait ne pas être exact. Pour int A[5];
tous les éléments de A
sera initialisé par défaut . Si A
est un objet statique ou local au thread, les éléments seront zéro initialisé a 0
sinon rien n'est fait, ce seront des valeurs indéterminées.