What types are allowed for union members?
Currently, union members can be just about any type, other than those with kind (A) (see question on kinds, above). Examples include numeric types (including bit fields and enumerations), structs and tuples of allowable union-member types, and other unions. However, if a union contains a pointer type, you can only write the pointer, not read it. This prevents effectively casting an int to a pointer by writing an int member and then reading the pointer, for example. To use pointers as normal within a union, you must use @tagged unions.