, . , X Y X Y: . ... , ?
R.. answer , : , , , , .
EDIT. , , , , , . , (N1256 §6.5.2.3.5) C:
struct generic {
unsigned tag;
};
struct smallnum {
unsigned tag;
unsigned value;
};
struct bignum {
unsigned tag;
size_t length;
unsigned *p;
};
struct string {
unsigned tag;
size_t length;
char *p;
};
union number {
struct bignum bignum;
struct smallnum smallnum;
};
union object {
struct generic generic;
struct bignum bignum;
struct smallnum smallnum;
struct string string;
};
union object x, x.generic.tag ( x.bignum.tag ), , . () .
, , union level2 : union level2 union number, number, generic string. , , .
union level2 {
struct generic generic;
union number number;
struct string string;
};