On Tuesday, 18 December 2018 at 13:53:01 UTC, Stefan Koch wrote:
Why would you need to know?

Well, first out of curiosity. But there are also other reasons: I've got a large immutable array. Without CTFE I'd use some php script and add it as a large literal. With CTFE I don't need that php script nor do I need to put that large literal in the source code. But I need to know, that indeed the array is calculated by the compiler, else the solution with the php script would result in faster code.

if(__ctfe) assert(0, "Yep, CTFE used");

That seems to work, but unfortunately, my script seems not to be evaluated at compile time... Here is a small example, similar to my code, where CTFE is not used:

import std.stdio;

class A
{
    static immutable int[4] clue;

    static this()
    {
        if(__ctfe) assert(0, "Yep, CTFE used");
        foreach (i;0..4) clue[i] = i;
    }
}

void main()
{
    auto tmp = new A();
    writeln(tmp.clue[2]);
}

Can you help me, finding the problem here?

Reply via email to