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)