inicjowanie struct z wartościami domyślnymi jest trywialne:Brace (kruszywo) inicjalizacja dla kodowanym z wartościami domyślnymi
struct X { int a; int b = 2; };
i inicjowanie struct z inicjatora nawiasów jest trywialne też:
X x = {1, 3};
Zaskakująco kod init nie zostanie skompilowany, dopóki nie usunę domyślnej wartości. Więc jak mam zrobić init w takim przypadku? Chciałbym zachować X a POD bez corsa.
Tylko dla FYI: z C++ 14, kod kompiluje. – Mine
udokumentowane tutaj: http://en.cppreference.com/w/cpp/language/aggregate_initialization – Hayt
'Definicja agregatów została zmieniona, aby jawnie wykluczyć jakąkolwiek klasę z inicjatorami członków; w związku z tym nie mogą korzystać z agregacyjnej inicjalizacji. C++ 14 rozluźnia to ograniczenie, umożliwiając tym samym agregacyjną inicjalizację. Jeśli wzmocniona lista init nie dostarcza wartości dla tego argumentu, inicjator członu zajmuje się nią, więc w zasadzie kod nie jest możliwy w C++ 11 bez C-tor. Tylko w C++ 14 –