| // { dg-do run { target c++11 } } |
| |
| struct A |
| { |
| int i = 42; |
| }; |
| |
| struct B |
| { |
| int i = 42; |
| B() { } |
| B(int i): i(i) { } |
| }; |
| |
| template <class T, T t> |
| struct C |
| { |
| T m = t; |
| }; |
| |
| template <class T, T t> |
| struct D |
| { |
| T m = t; |
| D() { } |
| D(T m):m(m) { } |
| }; |
| |
| int main() |
| { |
| A a1; |
| if (a1.i != 42) return 1; |
| A a2{}; |
| if (a2.i != 42) return 2; |
| A a3[1]; |
| if (a3[0].i != 42) return 3; |
| |
| B b1; |
| if (b1.i != 42) return 3; |
| B b2 (24); |
| if (b2.i != 24) return 4; |
| |
| C<int,3> c1; |
| if (c1.m != 3) return 5; |
| C<int,5> c2 {}; |
| if (c2.m != 5) return 6; |
| |
| D<int,3> d1; |
| if (d1.m != 3) return 7; |
| D<int,3> d2 (5) ; |
| if (d2.m != 5) return 8; |
| } |