digitalmars.D.learn - How can I tell if the give parameter can be run at compile time?
- Jack (9/9) Mar 01 2021 bool g(T)(T)
- Adam D. Ruppe (11/14) Mar 01 2021 So the value must be known at compile time without any extra
- H. S. Teoh (5/16) Mar 01 2021 https://wiki.dlang.org/User:Quickfur/Compile-time_vs._compile-time
bool g(T)(T) { return __traits(compiles, mixin("{ enum a = t; }")); } int a; enum s = ""; // both return false but g(s) is expected to return true pragma(msg, g(s)); pragma(msg, g(a));
Mar 01 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 trueSo 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.
Mar 01 2021
On Mon, Mar 01, 2021 at 08:05:57PM +0000, Jack via Digitalmars-d-learn wrote:bool g(T)(T) { return __traits(compiles, mixin("{ enum a = t; }")); } int a; enum s = ""; // both return false but g(s) is expected to return true pragma(msg, g(s)); pragma(msg, g(a));https://wiki.dlang.org/User:Quickfur/Compile-time_vs._compile-time T -- They pretend to pay us, and we pretend to work. -- Russian saying
Mar 01 2021