A discriminated union is a type composed of a discriminant followed by a type selected from a set of prearranged types according to the value of the discriminant. The type of discriminant is either int
, unsigned int
, or an enumerated type, such as bool
. The component types are called arms of the union, and are preceded by the value of the discriminant that implies their encoding.