„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum hat GCC 4.6.1 Probleme mit Initialisierungslisten für std::array?

Warum hat GCC 4.6.1 Probleme mit Initialisierungslisten für std::array?

Veröffentlicht am 22.12.2024
Durchsuche:600

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

Verwenden von Initialisierungslisten mit std::array

Es gibt verschiedene Möglichkeiten, ein std::array mithilfe von Initialisierungslisten zu erstellen. Bei GCC 4.6.1 können jedoch bei diesem Versuch Fehler auftreten.

Initialisierungssyntax

Die Syntax zum Erstellen eines std::array mithilfe von Initialisierungslisten lautet:

std::array array = { { value1, value2, ..., valueN } };

wobei T der Elementtyp des Arrays ist, Größe die Größe des Arrays ist und Wert1 bis WertN die Anfangswerte des Arrays sind.

Aggregatinitialisierung

std::array ist eine Aggregatstruktur, die eine Aggregatinitialisierung ermöglicht. Um das Array innerhalb der Struktur aggregiert zu initialisieren, verwenden Sie einen zusätzlichen Satz geschweifter Klammern:

std::array<:string> strings = {{ "a", "b" }};

Diese Syntax vermeidet den Konstruktor, der eine Initialisierungsliste akzeptiert, was in GCC zu Problemen führen kann 4.6.1.

Compiler-Problem

Der C 11-Standard schlägt vor, dass die zusätzlichen geschweiften Klammern bei der Aggregatinitialisierung weggelassen werden können. Daher ist die Unfähigkeit von GCC 4.6.1, Initialisierungslisten für std::array ohne die zusätzlichen Klammern zu kompilieren, wahrscheinlich ein Compilerfehler.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3