> Here is the one without templates > > > struct Stuff_Normal {} > struct Stuff_Special {} > > struct Stuff > { > > this(Stuff_Normal _, float x, float y) { ... } > this(Stuff_Special _, float x, float y) { ... } > } > > usage > > auto val = Stuff(Stuff_Normal(), 1, 2); Not pretty syntax but I think this is the most practical solution :)