On Monday, October 01, 2012 07:43:59 Alex Rønne Petersen wrote: > This is a corner case. > > __ctfe is there to allow special-cased CTFE code when absolutely > necessary. By necessity, this separates a function into two worlds: > compile time and run time. > > As far as purity goes, pow2 *is* pure. It just does something different > depending on whether you run it at compile time or run time. I don't see > this as a problem in practice.
It would be kind of like complaining that a pure function returns different values on Linux and Windows due to a version statement or static if. It's just that in the thing that varies is compile time vs runtime not the target machine. e.g. int func(int val) pure { version(linux) return val + 2; else version(Windows) return val + 3; } - Jonathan M Davis