take symbol as parameter

Marc jckj33 at gmail.com
Sun Dec 31 22:50:12 UTC 2017


On Saturday, 30 December 2017 at 23:30:02 UTC, rjframe wrote:
> 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));

it doesn't work for me:

> Error: template instance nameof!(v) cannot use local 'v' as 
> parameter to non-global template nameof(alias S)


More information about the Digitalmars-d-learn mailing list