| // PR c++/35315 |
| // { dg-do compile { target c++11 } } |
| |
| typedef union { int i; } U [[gnu::transparent_union]]; // { dg-warning "ignored" } |
| |
| static void foo(U) {} |
| static void foo(int) {} |
| |
| void bar() |
| { |
| foo(0); |
| } |
| |
| typedef union U1 { int i; } U2 [[gnu::transparent_union]]; // { dg-warning "ignored" } |
| |
| static void foo2(U1) {} // { dg-message "previously defined" } |
| static void foo2(U2) {} // { dg-error "redefinition" } |
| |
| void bar2(U1 u1, U2 u2) |
| { |
| foo2(u1); |
| foo2(u2); |
| } |
| |
| // PR c++/36410 |
| struct A |
| { |
| typedef union [[gnu::transparent_union]] |
| { |
| int i; |
| } B; |
| }; |
| |
| void foo(A::B b) |
| { |
| b.i; |
| } |