Determine if CTFE or RT

Mr.Bingo Bingo at Namo.com
Sun Jun 24 19:10:36 UTC 2018


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.


More information about the Digitalmars-d-learn mailing list