Advent of D
Steven Schveighoffer
schveiguy at yahoo.com
Wed Mar 7 14:54:02 UTC 2018
On 3/7/18 3:20 AM, Andrea Fontana wrote:
> On Tuesday, 6 March 2018 at 20:37:34 UTC, Steven Schveighoffer wrote:
>> What triggers the compile-time execution is the fact that static
>> *initializers* need to be decided at compile time.
>>
>> So while it is executing the regex building at compile time in your
>> example, there are other ways to do it, and in this case, I'd prefer
>> using an enum. You can also use ctRegex.
>>
>> The drawback of using static is that it keeps its value between
>> function calls:
>
> What about static immutable? I think enums exist only for compiler but
> they're not a l-value, so you can't take a reference, am I wrong?
Static immutable works (and makes sense as a static variable) if you can
use it as immutable. I'm not sure regex can do that.
enums force the compile time execution, then you need to generate a
runtime value from the result. i.e.:
enum Xval = someCTFEfunction(); // run at CTFE.
auto x = Xval; // no calls, just pastes the result there.
-Steve
More information about the Digitalmars-d
mailing list