C++11:正しいstd::arrayの初期化?
2023-09-30 15:34:46
質問
std::arrayを以下のように初期化すると、コンパイラは中括弧が足りないという警告を出します。
std::array<int, 4> a = {1, 2, 3, 4};
これで問題が解決しました。
std::array<int, 4> a = {{1, 2, 3, 4}};
これは警告メッセージです。
missing braces around initializer for 'std::array<int, 4u>::value_type [4] {aka int [4]}' [-Wmissing-braces]
これは私のバージョンのgccのバグなのでしょうか、それとも意図的にそうしているのでしょうか?もしそうなら、なぜですか?
どのように解決するのですか?
の素の実装です。
std::array
:
template<typename T, std::size_t N>
struct array {
T __array_impl[N];
};
これは、唯一のデータメンバが従来の配列である集約構造体であり、そのような内部の
{}
は内側の配列を初期化するために使用されます。
中括弧の消去は集約的な初期化において特定のケースで許されます(しかし通常は推奨されません)ので、この場合は中括弧をひとつだけ使用することができます。こちらを参照してください。 C++ 配列のベクトル
関連
-
[解決済み] テスト
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] ArrayListの初期化を1行で行う。
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】C++の余分な資格エラー
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] std::vector と std::array の C++ initializer_list の動作はなぜ違うのですか?