__FILE__

Stefan Koch uplink.coder at googlemail.com
Mon Jul 26 17:05:43 UTC 2021


On Monday, 26 July 2021 at 12:01:23 UTC, Adam D Ruppe wrote:
> On Monday, 26 July 2021 at 11:43:56 UTC, workman wrote:
>> __FILE__[0..$]
>
> Why do you have that [0..$] there? It is probably breaking the 
> __FILE__ magic.

Correct.
The compiler has to evaluate the default argument as constant 
expression in order to use it as default value..
Therefore it evaluates (__FILE__)[0 ..$]you first eval __FILE__ 
at CTFE within the module you are defining the function in.
And then you slice it from zero to length.

On the other hand if you use x = __FILE__ it recognizes that as a 
special constant expression which can be put into the callsite 
directly.



More information about the Digitalmars-d-learn mailing list