take symbol as parameter

rjframe dlang at ryanjframe.com
Sat Dec 30 23:30:02 UTC 2017


On Sat, 30 Dec 2017 13:07:49 +0000, Marc wrote:

> how do I take a symbol as parameter?
> 
> for example:
> 
>> template nameof(alias S) {
>>	import std.array : split;
>>	enum nameof = S.stringof.split(".")[$-1];
>>}
> 
> Works fine for say a enum member such nameof!(myEnum.X) but this:
> 
>>	struct S { int v; }
>>	S s;
>>	writefln(nameof!(s.v)); // should return "v"
> 
> return the following error:
> 
>> Error: template instance nameof!(v) cannot use local 'v' as parameter
>> to > non-global template nameof(alias S)

You can use the name of the struct rather than the instance.

    writefln(nameof!(S.v));


More information about the Digitalmars-d-learn mailing list