January 31, 2018
Is there any way to initialize an array of unions with more than just the first union type?


struct A { float a; }
struct B { uint b; }

union Test
{
    A a;
    B b;
}

Test[2] test =
[
    Test(A(1.0f)),
    Test(B(10)), // ERROR
];


AFAIK there's no way to specify to use D with an initializer:

Test test = { b: B(10) };
January 30, 2018
On 01/30/2018 07:33 PM, Rubn wrote:
> 
> Is there any way to initialize an array of unions with more than just the first union type?
> 
> 
> struct A { float a; }
> struct B { uint b; }
> 
> union Test
> {
>      A a;
>      B b;
> }
> 
> Test[2] test =
> [
>      Test(A(1.0f)),
>      Test(B(10)), // ERROR
> ];
> 
> 
> AFAIK there's no way to specify to use D with an initializer:
> 
> Test test = { b: B(10) };

You can have explicit constructors:


union Test
{
    A a;
    B b;

    this(A a) {
        this.a = a;
    }

    this(B b) {
        this.b = b;
    }
}

Ali