Get template name

JS js.mdnq at gmail.com
Tue Jul 30 04:04:09 PDT 2013


On Tuesday, 30 July 2013 at 10:45:26 UTC, Dicebot wrote:
> On Tuesday, 30 July 2013 at 06:45:31 UTC, JS wrote:
>> void f()
>> {
>> 	pragma(msg, __FUNCTION__);
>> }
>>
>> template t()
>> {
>>    pragma(msg, __FUNCTION__);
>> }
>>
>> void main(string[] argv)
>> {
>> 	readln();
>> }
>>
>> the function displays main.f. The template displays nothing. 
>> I'd prefer it to display main.t! or something unique so I can 
>> use it as a hash.
>
> 1) Pragma's are printed upon instantiation. You need to use 
> something like alias _ = t!(); to force it.
>
> 2) You may workaround it by wrapping pragma in stub function.
>
> Though I do agree that something like __ENCLOSING__ may be 
> useful (assuming it also covers aggregates)

1. No, the code actually will print the message but the error 
shows up right after(well, depends on which error, the one I get 
inside templates works fine except the without the 
assignment/alias, no further compilation is done due to the 
error(but the message is printed).


And what is a stub function?


More information about the Digitalmars-d-learn mailing list