問題タブ [member-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.
c++11 - VS2013 で匿名構造体のブレースまたはイコール初期化子が機能しない
構造体内の匿名構造体のブレースまたはイコール初期化子は、VS2013 によって生成された出力に対して機能しません。コードがあります:
Linux で次のコマンドを使用してコンパイルします。
(最適化フラグを追加しても結果には影響しません)
期待される結果:
変。VS2013 でそれを実行すると、ガベージ値が返されます。C++11 標準を正しく実装するという点で、これについて正しいのは誰ですか? これがGCCのせいだとは思えません。
役に立たないVSコンパイラオプションと関係がありますか? Windows 拡張機能? MS が作成したバグのため、構造体のデフォルト コンストラクタを作成する必要がありますか? これはばかげています。
c++ - コンストラクターで初期化子リストを整理するより良い方法
const
メンバーまたは既定のコンストラクターを持たないメンバーを初期化する前に、クラス コンストラクターの引数に対して何らかの処理を行う必要がある場合があります。
たとえば、Java ではこれを行うことができます (理由は聞かないでください。これは単なる例です)。
C++ では、同じようになります
そして、複雑な初期化を必要とするメンバーが増えると、初期化リストはますます巨大になります。この問題を回避する方法はありますか?
UPD 1:
メンバーにコピー コンストラクターがない場合はどうなりますか? 例のように、各引数の計算を関数に抽出するだけですか?