1 // Test for value-initialization via {} 2 // { dg-do run { target c++11 } } 3 new(__SIZE_TYPE__,void * p)4void * operator new (__SIZE_TYPE__, void *p) { return p; } 5 void * operator new[] (__SIZE_TYPE__, void *p) { return p; } 6 7 // Empty base so A isn't an aggregate 8 struct B {}; 9 struct A: B { 10 int i; 11 }; 12 13 struct C: A { CC14 C(): A{} {} 15 }; 16 f(A a)17int f(A a) { return a.i; } 18 main()19int main() 20 { 21 A a{}; 22 C c; 23 int space = 42; 24 A* ap = new (&space) A{}; 25 int space1[1] = { 42 }; 26 A* a1p = new (space1) A[1]{}; 27 if (a.i != 0 28 || c.i != 0 29 || ap->i != 0 30 || a1p[0].i != 0 31 || A{}.i != 0 32 || f({}) != 0) 33 return 1; 34 } 35