Es ist auf verschiedene Weise möglich, ein std::array mithilfe von Initialisierungslisten zu erstellen. Bei GCC 4.6.1 können jedoch bei diesem Versuch Fehler auftreten.
Die Syntax zum Erstellen eines std::array mithilfe von Initialisierungslisten lautet:
<code class="cpp">std::array<T, size> array = { { value1, value2, ..., valueN } };</code>
Dabei ist T der Elementtyp des Arrays, Größe die Größe des Arrays und Wert1 bis WertN die Anfangswerte des Arrays.
std::array ist eine Aggregatstruktur, die dies ermöglicht aggregiert initialisiert werden. Um das Array innerhalb der Struktur aggregiert zu initialisieren, verwenden Sie einen zusätzlichen Satz geschweifter Klammern:
<code class="cpp">std::array<std::string, 2> strings = {{ "a", "b" }};</code>
Diese Syntax vermeidet den Konstruktor, der eine Initialisierungsliste akzeptiert, was in GCC 4.6.1 zu Problemen führen kann.
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.
Das obige ist der detaillierte Inhalt vonWarum hat GCC 4.6.1 Probleme mit Initialisierungslisten für std::array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!