You must iterate a compile time only construct. So yes it would be nice to be able to say: static foreach and have the compiler tell you, no I can't do that (and force it if it can).
Andrej Mitrovic Wrote: > Well in this case it works, but it's not always so easy. For example: > > import std.conv; > enum Metrics : int > { > val0, > val1, > val2 > } > > void foo(int m) > { > } > > void main() > { > foreach (index; 0..3) > { > foo(mixin("Metrics.val" ~ to!string(index))); > } > } > > So even though you might think "hey, it's obvious index in this case > can never be anything other than 0, 1, or 2", you still won't be able > to compile this. CTFE is a tricky thing.