問題タブ [uniform-initialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
300 参照

c++ - 基本型の統一初期化構文?

これは有効な構文ですか? オブジェクトまたは非自明な型に中括弧初期化子が使用されている例しか見つかりません。

0 投票する
2 に答える
1127 参照

c++ - この例でエラー C2797 が発生するのはなぜですか?

次のコードがあります。

MSVC2013 Update 3 でコンパイルすると、C2797 エラーが発生します。中括弧を括弧 (つまりx_(x)) に置き換えると、プログラムは正常にコンパイルされます。

なぜこれが起こるのですか?このコンパイラの動作は C++11 に準拠していますか? C++14 はどうですか?

編集:より明確にするために、x_{x}上記が標準に従って呼び出すX(std::initializer_list)必要があるかどうか、またはそれが呼び出しの有効な構文であるかどうかはわかりませんX(const X&)。私の知る限り、後者です。私は正しいですか?

0 投票する
1 に答える
181 参照

c++11 - 一様に初期化された参照を返すことは有効ですか?

このコード サンプルは有効ですか?

のようだ:

  • clang 3.5はYESと言います
  • gcc 4.9はNOと言います

    /li>

http://coliru.stacked-crooked.com/a/cb6604b81083393f

では、どのコンパイラが正しいのでしょうか? またはそれは指定されていませんか?

非常に簡単なので、次の方法で gcc ビルド エラーを克服します。

  1. 中括弧の代わりに括弧を使用する

    /li>
  2. 戻り値に名前を付ける

    /li>

オプション 1. 一様な初期化を中断し、オプション 2. 無駄なコード行を追加します。

同様の質問がすでにここで聞かれました: なぜ一様な初期化でイニシャライザ リストの参照を初期化できないのですか?

ただし、前述の pr50025 は gcc 4.9 で修正されています。

上記のコード サンプルが役に立たないことはわかっていますが、問題を指摘するために意図的に単純化しすぎています。実際のコードの問題は、次のような一般的な関数に隠されている可能性があります。

0 投票する
1 に答える
1309 参照

c++ - std::make_map? 均一な初期化

以下の作品:

以下はしません:

追加の変数を使用せずに、make_tuple で作成されたタプル内のマップを初期化する方法はありますか?

0 投票する
3 に答える
715 参照

c++ - なぜ地図なのかm={{1,2},{3,4},{5,0}}; サイズ3じゃなくて1?

非常に独特です:

プリントアウト

13

0 投票する
0 に答える
148 参照

c++ - C++14: `void` にブレースを使用できないのはなぜですか?

シンプルで効率的な SFINAE 選択decltypeを使用することは (少なくとも私のコードでは) 非常に一般的です。std::enable_if_t次のようなもの:

ただし、何らかの理由で有効ではないため (少なくとも Clang と GCC では)、これをvoid{}書くことはできません。()std::enable_if_t

何故ですか?