111
|
1 // Test for value-initialization via {}
|
|
2 // { dg-do run { target c++11 } }
|
|
3
|
|
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 {
|
|
14 C(): A{} {}
|
|
15 };
|
|
16
|
|
17 int f(A a) { return a.i; }
|
|
18
|
|
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 }
|