Phil Deets wrote: > Hi, is there a way to add members to an enum based on conditional > compilation symbols. I tried > > enum Tag { > A, B, > version (symbol) { > C, D, > } > E, > } > > but it doesn't work. I know I could do > > version (symbol) { > enum Tag { A, B, C, D, E } > } else { > enum Tag { A, B, E } > } > > but I don't want to do that since in my case, there can be quite a few > elements outside of the version, and I don't want to repeat them all.
template Version(char[] ident) { mixin(`version(`~ident~`) const Version = true; else const Version = false;`); } char[] genEnum(bool flag1, bool flag2) { return "A, B, " ~ (flag1 ? "C, D, " : "") ~ "E, F, " ~ (flag2 ? "G, H, " : "") ~ "G, "; } mixin(genEnum( Version!(`symbol`), Version!(`somethingElse`) )); ... is about the best you can do, I think.