OSDN Git Service

PR c++/50941
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / cpp0x / initlist-value.C
1 // Test for value-initialization via {}
2 // { dg-options -std=c++0x }
3 // { dg-do run }
4
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 {
15   C(): A{} {}
16 };
17
18 int f(A a) { return a.i; }
19
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 }