// { dg-do run { target c++17 } } struct base1 { int b1, b2 = 42; }; struct base2 { base2() { b3 = 42; } int b3; }; struct derived : base1, base2 { int d; }; derived d1{{1, 2}, {}, 4}; derived d2{{}, {}, 4}; #define assert(X) do { if (!(X)) __builtin_abort(); } while(0) int main() { assert (d1.b1 == 1 && d1.b2 == 2 && d1.b3 == 42 && d1.d == 4); assert (d2.b1 == 0 && d2.b2 == 42 && d2.b3 == 42 && d2.d == 4); }