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