How to avoid ctRegex (solved)

ag0aep6g via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Aug 27 11:07:07 PDT 2016


On 08/27/2016 07:35 PM, cy wrote:
> When I saw `auto a = b;` at the module level, I thought that b had to be
> something you could evaluate at compile time.

That's right.

> But I guess it can be a
> runtime calculated value, acting like it was assigned in a a static
> this() clause,

No, that's not right. The initializer for a module level variable has to 
be a compile-time constant.

If the initializer is a function call, the compiler attempts to evaluate 
it at compile time. We have an acronym for that: CTFE = Compile Time 
Function Evaluation. `regex("foobar")` can be evaluated that way, so it 
can be used as an initializer for a module level variable.


More information about the Digitalmars-d-learn mailing list