Der C++ 11-Standard 8.5.4.3 sagt:Ein großer Fehler von VC++? Warum listet initializer-list nicht value-initialize eine Struktur auf?
"Wenn die Initialisierungsliste keine Elemente enthält und T ein Klassentyp mit einem Standardkonstruktor ist, wird das Objekt value-initialisiert."
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;
}
Ist das ein Fehler von VC++? Mein VC++ ist das neueste Nov 2012 CTP.
Die Compiler-Optimierung sollte die Bereitstellung des C++ - Standards nicht beeinträchtigen. Ich denke, das hat nichts mit Optimierung zu tun. – xmllmx
@KillianDS, bitte überprüfen Sie meine überarbeitete Post – xmllmx
Was wird gedruckt, wenn Sie 'std :: cout << n << std :: endl;' hinzufügen? – helium