C++ 11標準8.5.4.3の意味は次のとおりです。VC++の大きなバグ?なぜinitializer-listは構造体の値を初期化しないのですか?
"初期化子リストに要素がなく、Tがデフォルトコンストラクタを持つクラス型の場合、オブジェクトは値で初期化されます。"
struct A
{
int get() { return i; }
private:
int i;
};
int main()
{
A a = {};
int n = a.get();
cout << n << endl;
// n is a random number rather than 0
return 0;
}
これはVC++のバグですか?私のVC++は最新の11月のCTPです。
コンパイラの最適化は、C++標準の規定を破るべきではありません。だから、これは最適化とは関係ないと思う。 – xmllmx
@KillianDS、私の改訂された投稿を確認してください – xmllmx
'std :: cout << n << std :: endl;'を追加すると何が表示されますか? – helium