1 // Test for value-initialization via {}
2 // { dg-options -std=c++0x }
3 // { dg-do run }
4 
new(__SIZE_TYPE__,void * p)5 void * 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)18 int f(A a) { return a.i; }
19 
main()20 int 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