How can I tell if the give parameter can be run at compile time?

Adam D. Ruppe destructionator at gmail.com
Mon Mar 1 20:14:09 UTC 2021


On Monday, 1 March 2021 at 20:05:57 UTC, Jack wrote:
> int a;
> enum s = "";
> // both return false but g(s) is expected to return true

So the value must be known at compile time without any extra 
context. So that `a` variable might be changed somewhere else so 
compile time can't read or write it.

`enum` is only allowed to be set once (and at compile time!) so 
it is allowed at CT too.

`static immutable` generally allows it too since it must be set 
at declaration then never changed again.

But almost any mutable variable is no go unless it is directly 
returned from a function which itself can be called at compile 
time.


More information about the Digitalmars-d-learn mailing list