ホームページ  >  記事  >  バックエンド開発  >  GCC 4.6.1 が std::array の初期化リストで苦労するのはなぜですか?

GCC 4.6.1 が std::array の初期化リストで苦労するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 06:54:28601ブラウズ

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

std::array での初期化リストの使用

いくつかの方法で初期化リストを使用して 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。