Maison >développement back-end >C++ >Pourquoi GCC 4.6.1 a-t-il du mal avec les listes d'initialisation pour std :: array ?
Il est possible de créer un std::array en utilisant des listes d'initialisation de plusieurs manières. Cependant, GCC 4.6.1 peut rencontrer des erreurs lors de cette tentative.
La syntaxe de création d'un std::array à l'aide de listes d'initialisation est la suivante :
<code class="cpp">std::array<T, size> array = { { value1, value2, ..., valueN } };</code>
où T est le type d'élément du tableau, size est la taille du tableau et value1 à valueN sont les valeurs initiales du tableau.
std::array est une structure d'agrégation, ce qui lui permet à initialiser de manière globale. Pour initialiser par agrégation le tableau à l'intérieur de la structure, utilisez un jeu supplémentaire d'accolades :
<code class="cpp">std::array<std::string, 2> strings = {{ "a", "b" }};</code>
Cette syntaxe évite le constructeur qui prend une liste d'initialisation, ce qui peut causer des problèmes dans GCC 4.6.1.
La norme C 11 suggère que les accolades supplémentaires peuvent être élidées lors de l'initialisation globale. Par conséquent, l'incapacité de GCC 4.6.1 à compiler les listes d'initialisation pour std::array sans les accolades supplémentaires est probablement un bug du compilateur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!