On 01/03/2018 02:51 AM, H. S. Teoh wrote:
https://wiki.dlang.org/User:Quickfur/Compile-time_vs._compile-time#But_what_of_runtime_performance.3F
object.destroy! :-P
In the CTFE section, you explain that it came from constant folding, but
you don't point out how the two are different. After reading the
section, a newbie might think that the term "CTFE" is for when constant
folding evaluates function calls. But that's not what we mean by "CTFE".
What's missing is that CTFE is forced/guaranteed. It's not an
optimization. When we say "CTFE", we mean the cases where compilation
fails if the expression cannot be evaluated.
I doesn't help that the `i` variables in the examples are (seemingly)
globals, but you also talk about putting them in a "busy inner loop". If
I just copy the code as it is, `i` is a global and I get actual CTFE. If
I put `i` in a loop, it's a local and it's up to the compiler if it does
non-CTFE constant folding.
Also, you mistyped Stefan Koch's name.