On Sunday, 24 June 2018 at 19:10:36 UTC, Mr.Bingo wrote:
On Sunday, 24 June 2018 at 18:21:09 UTC, rjframe wrote:
On Sun, 24 Jun 2018 14:43:09 +0000, Mr.Bingo wrote:

let is(CTFE == x) mean that x is a compile time constant. CTFE(x) converts a x to this compile time constant. Passing any compile time
constant essentially turns the variable in to a compile time
constant(effectively turns it in to a template with template parameter)


You can use __ctfe:

static if (__ctfe) {
    // compile-time execution
} else {
    // run-time execution
}

This does not work:


import std.stdio;

auto foo(int i)
{
        if (__ctfe)
        {
                return 1;
        } else {
                return 2;
        }
}

void main()
{
        writeln(foo(3));
}


should print 1 but prints 2.

you have to call foo with ctfe
enum n = foo(3);
writeln(n);

Reply via email to