eine Struktur mit Standardwerten initialisiert ist trivial:Brace (Aggregat) Initialisierung für structs mit Standardwerten
struct X { int a; int b = 2; };
und eine Struktur mit einer Klammer Initialisierer die Initialisierung ist trivial zu:
X x = {1, 3};
Suprisingly die Init-Code wird nicht kompiliert, bis ich den Standardwert entferne. Also, wie würde ich die Init in einem solchen Fall tun? Ich würde X gern ohne C-Tor behalten.
Nur FYI: mit C++ 14, kompiliert der Code. – Mine
dokumentiert hier: http://en.cppreference.com/w/cpp/language/aggregate_initialization – Hayt
'Die Definition von Aggregaten wurde geändert, um jede Klasse mit Member-Initialisierer explizit auszuschließen; Daher dürfen sie die Aggregat-Initialisierung nicht verwenden. C++ 14 lockert diese Einschränkung und ermöglicht die Aggregat-Initialisierung für solche Typen. Wenn die starre Init-Liste keinen Wert für dieses Argument bereitstellt, kümmert sich der Member-Initialisierer darum, so dass Ihr Code in C++ 11 im Grunde ohne C-tor nicht möglich ist. Nur in C++ 14 –