| // PR c++/54922 |
| // { dg-do compile { target c++11 } } |
| // { dg-options "-pedantic" } |
| |
| #define SA(X) static_assert(X,#X) |
| |
| struct A |
| { |
| union { |
| union { |
| union { |
| unsigned char i; |
| int j; |
| }; |
| }; |
| }; |
| |
| constexpr A() : i(42) {} |
| }; |
| |
| constexpr A a; |
| SA((a.i == 42)); |
| |
| struct B |
| { |
| struct { // { dg-warning "10:ISO C\\+\\+ prohibits anonymous struct" } |
| int h; |
| struct { // { dg-warning "12:ISO C\\+\\+ prohibits anonymous struct" } |
| union { |
| unsigned char i; |
| int j; |
| }; |
| int k; |
| }; |
| }; |
| int l; |
| |
| constexpr B(): h(1), i(2), k(3), l(4) {} |
| }; |
| |
| constexpr B b; |
| SA((b.h == 1 && b.i == 2 && b.k == 3 && b.l == 4)); |