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