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
Libérer: 2024-10-30 06:54:28
original
690 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal