On Friday, 14 March 2014 at 14:02:06 UTC, Steven Schveighoffer wrote:
And for that point, your demonstration has failed :)
It's an extraordinarily simple use case, but it is still quite a common pattern in C++ defines, ie: #ifdef _DEBUG #define FEATUREA #define FEATUREB #define FEATUREC #else #define FEATUREB #define FEATUREC #endif #ifdef FEATUREB ... #endif In D, that would look a lot like: debug { version = FeatureA; version = FeatureB; version = FeatureC; } else { version = FeatureB; version = FeatureC; } version(FeatureB) { ... } So for an actual use case and not an abstract example, yes, the way suggested is not convoluted at all.