問題タブ [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 に答える
572 参照

c++ - 初期化子リストで std::map::operator= を使用する方法

以前に同じ質問をしましたがboost::assign::map_list_of(回答はありませんでした)、ブレースの初期化を使用すると役立つかもしれないと思いましたが、そうではありませんでした。

これは完全に機能します:

しかし、これはしません:

Visual Studio 2013 でエラーが発生します。またはのerror C2593: 'operator =' is ambiguousいずれoperator=(std::initalizer_list)operator=(std::map&&)です。

2 番目のバージョンを動作させることは可能ですか? たとえば、mがメンバー変数である場合。

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

c++ - 暗黙の変換を防ぎますが、リストの初期化を許可しますか?

FunctionWrapper次のように定義されたクラスがあるとしましょう:

std::function<void()>からへの暗黙的な変換を防止したいのですFunctionWrapperが、ブレースの初期化構文を使用して を構築できるようにFunctionWrapperします (つまり、単一の引数でリストの初期化を使用します)。言い換えれば、私はこれが欲しい:

それを達成する方法はありますか?上記のクラスを定義した方法はそうではありません。これにより、暗黙的な変換が可能になるため、(1) コンパイルされます。

explicitコンストラクターに追加すると:

それは「行き過ぎ」になり、(1) と同様に (2) も許可しないため、どちらも役に立ちません。

「中間点」を達成し、(1) がエラーを生成している間に (2) コンパイルする方法はありますか?

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

c++ - カスタムブレース初期化子

私がこの構造体を持っているとしましょう:

私が知る限り、これはいくつかのコンストラクターがあるため、集計ではありません。

私が達成したいのは、中括弧初期化子を独自の方法で使用することです。つまり、次のようなコードを使用します。

適切なコンストラクター (この場合は最初のコンストラクター) を暗黙的に呼び出します。

これは何らかの方法で可能ですか?