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