いくつかの方法で初期化リストを使用して std::array を作成できます。ただし、GCC 4.6.1 ではこれを試行するとエラーが発生する可能性があります。
初期化リストを使用して std::array を作成するための構文は次のとおりです。
<code class="cpp">std::array<T, size> array = { { value1, value2, ..., valueN } };</code>
ここで、T は配列の要素の型、size は配列のサイズ、value1 から valueN は配列の初期値です。
std::array は集合体構造体であり、それを可能にします。集合体で初期化されます。構造体内の配列を集約初期化するには、追加の中括弧のセットを使用します:
<code class="cpp">std::array<std::string, 2> strings = {{ "a", "b" }};</code>
この構文は、GCC 4.6.1 で問題を引き起こす可能性がある初期化子リストを受け取るコンストラクターを回避します。
C 11 標準では、集合体の初期化で余分な中括弧を省略できることが示唆されています。したがって、GCC 4.6.1 が追加の中括弧なしで std::array の初期化リストをコンパイルできないのは、コンパイラのバグである可能性があります。
以上がGCC 4.6.1 が std::array の初期化リストで苦労するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。