On 11/12/2018 11:10 PM, Jamie wrote:
> I would like my class to inherit from one of two classes based on a
> boolean value known at compile time. Something like this:
>
> void main()
> {
>      Top!(OPTION.FALSE) top = new Top!(OPTION.FALSE);
> }
>
> enum OPTION
> {
>      FALSE = 0.,
>      TRUE = 1.
> }
>
> class One
> {}
>
> class Two
> {}
>
> class Top(OPTION option) : option ? One : Two
> {}
>
> Is this possible? I can't get it to work in the way I'm showing above.
> Cheers

I got it working inside an eponymous template. D is pretty cool actually. :)

enum OPTION
{
    FALSE = 0.,
    TRUE = 1.
}

class One
{}

class Two
{}

template Top(OPTION option) {
    static if (option == OPTION.TRUE) {
        alias Base = One;

    } else {
        alias Base = Two;
    }

    class Top : Base
    {}
}

void main() {
    auto a = new Top!(OPTION.FALSE);
    auto b = new Top!(OPTION.TRUE);
}

Ali

Reply via email to