| /* It is not clear whether this test is conforming. See DR#236 |
| http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_236.htm. However, |
| there seems to be consensus that the presence of a union to aggregate |
| struct s1 and struct s2 should make it conforming. */ |
| void abort(void); |
| |
| struct s1 { double d; }; |
| struct s2 { double d; }; |
| union u { struct s1 x; struct s2 y; }; |
| |
| double f(struct s1 *a, struct s2 *b) |
| { |
| a->d = 1.0; |
| return b->d + 1.0; |
| } |
| |
| int main() |
| { |
| union u a; |
| a.x.d = 0.0; |
| if (f (&a.x, &a.y) != 2.0) |
| abort (); |
| return 0; |
| } |