Default struct constructors if a struct member is a union
Steven Schveighoffer
schveiguy at gmail.com
Tue Jul 2 15:52:03 UTC 2024
On Saturday, 29 June 2024 at 23:33:41 UTC, solidstate1991 wrote:
> ```d
> union U {
> int i32;
> long i64;
> float f32;
> double f64;
> }
>
> struct S {
> TypeEnum type;
> U data;
> }
>
> S foo0 = S(TypeEnum.Integer32, S(20)); //Ugly, but works
> S foo1 = S(TypeEnum.Integer64, S(20L)); //Error: cannot
> implicitly convert expression
> //ditto for the rest of the members
> ```
>
> My question is can I initialize structs like these in one line
> without relying on a second line? My usecase scenario doesn't
> really allow constructors for the struct, since it's a binding
> to an external library via C API.
Have you tried named parameter construction?
```d
S foo2 = S(TypeEnum.Float32, U(f32: 20.0));
```
-Steve
More information about the Digitalmars-d-learn
mailing list