now() { union foo { int i; double d; }; int x; double y; void hack (union foo); union foo u; u = (union foo) x == u.i = x; // invalid operands to binary == (have ‘union foo’ and ‘int’) u = (union foo) y == u.d = y; // invalid operands to binary == (have ‘union foo’ and 'double') hack ((union foo) x); }