問題タブ [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 投票する
2 に答える
151 参照

c++ - テンプレート コードでの均一な初期化

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

c++ - C++: 中括弧を使用して代入中の縮小を防止

変数を初期化するときの狭小化を防ぐために中括弧/初期化子リストを使用することに慣れていますが、変数に値を代入するときにも使用することをお勧めしますか?

例えば

割り当てに中括弧を使用しない理由はありますか?

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

c++ - c++11 の均一な初期化が "g++ -std=c++0x" で機能しない

このパブリック メソッドを宣言するクラスがあります。

{}これは、c++ 11 の機能である均一な初期化 (ここでは単に) を使用します。でコンパイルするとき、これは私に何の問題も与えませんclang++ -std=c++11。しかし、私が使用するg++ -std=c++0xと、これが得られます:

この-std=c++0xオプションは c++11 のサポートをもたらすはずではありませんか?

次のように標準の C++ を使用してメソッドを宣言しても、コンパイラはエラーを表示しません。

Ubuntu 12.04 で g++ 4.6 を使用しています

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

c++ - 引数を転送するときに () または {} を使用する必要がありますか?

私は次のクラスを持っています:

そして、次のように引数を転送したいと思います。

出力を に置き換える{}と、代わりに.()1 1 22 1 1

私のクラスにとって最も理にかなっているのはどれですか?

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

c++ - std::make_unique などの std::initializer_list オーバーロードが存在しないのはなぜですか?

引数を転送するときに () または {} を使用する必要がありますか? を参照してください。. クローンですfoostd::vector

N4140 では、unique.ptr.create std::make_uniqueは次のように指定されます。

template <class T, class... Args> unique_ptr<T> make_unique(Args&&... args);

  • 備考: この関数はT、 が配列でない限り、オーバーロードの解決に参加しません。

  • 戻り値: unique_ptr<T>(new T(std::forward<Args>(args)...)).

つまり、実装はオブジェクトを初期化するの()ではなく、使用する必要があります。{}例として、以下

が出力されます312が、{}(inside std::make_unique) が使用された場合211は出力されます。初期化子リストは推測できないstd::initializer_listため、後者の結果を取得するには、明示的に渡す必要があります。問題は、なぜこのようなオーバーロードが提供されないのかということです。

出力し211ます。

「自分で書ける」とか「標準を肥大化させないため」という理由はあまり正当な理由とは思えません。この過負荷を提供することの欠点はありますか?

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

c++ - std::move で不要な変換が発生する

次のコードContainerで型のオブジェクトから型のオブジェクトに変換しようとしているとコンパイラが考えるのはなぜですか? ブレース付きコンストラクターが変数MoveTestに転送されるのはなぜですか? move_thingsもちろん、をに置き換える{}()問題が解決します

私が得るエラーは次のとおりです

これは、統一された初期化構文が、? を持つクラスのオプションではなくなったことを意味しますstd::arrayか?

私が使用しているコンパイラとバージョンは

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

c++ - C++ - std::string を使用した均一な初期化子

C++の文字列クラスで統一イニシャライザを試しています。以下はコードです:

出力は次のようになります。

これには頭を悩ませました。str2として望ましい結果を達成できないのはなぜstr3ですか?