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.

Reply via email to