Maison >développement back-end >C++ >Pourquoi GCC 4.6.1 a-t-il du mal avec les listes d'initialisation pour std :: array ?

Pourquoi GCC 4.6.1 a-t-il du mal avec les listes d'initialisation pour std :: array ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 06:54:28672parcourir

Why Does GCC 4.6.1 Struggle with Initialization Lists for std::array?

Utilisation de listes d'initialisation avec 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.

Syntaxe d'initialisation

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.

Initialisation d'agrégat

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.

Problème du compilateur

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn