Constructing union type from an HList