「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > GCC 4.6.1 が std::array の初期化リストで苦労するのはなぜですか?

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

2024 年 12 月 22 日に公開
ブラウズ:455

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

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

いくつかの方法で初期化リストを使用して std::array を作成できます。ただし、これを試行すると GCC 4.6.1 でエラーが発生する可能性があります。

初期化構文

初期化リストを使用して std::array を作成するための構文は次のとおりです:

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

ここで、T は配列の要素の型、size は配列のサイズ、value1 から valueN は配列の初期値です。

Aggregate Initialization

std::arrayは集合体構造体であり、集合体で初期化することができます。構造体内の配列を集約初期化するには、追加の中括弧のセットを使用します:

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

この構文は、GCC で問題を引き起こす可能性がある初期化子リストを受け取るコンストラクターを回避します。 4.6.1.

コンパイラの問題

C 11 標準では、集合体の初期化で余分な中括弧を省略できることが示唆されています。したがって、GCC 4.6.1 が追加の中括弧なしで std::array の初期化リストをコンパイルできないのは、コンパイラのバグである可能性があります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3