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