On Saturday, 20 July 2019 at 03:58:36 UTC, Adam D. Ruppe wrote:
You should never actually need that! What is your use case?
In most cases I see people doing .stringof, the correct
solution is to simply... not. Use the local name directly.
If you do need the name - and the only cases for this ought to
be declaring a new item for public consumption or for
interfacing with users - the correct way to get an identifier
is `__traits(identifier, T)`... but again, more often than not,
you do NOT need this and it is wrong to try!
.stringof should almost never be used except for debugging, and
string concatenation in string mixings is actually only
necessary for new declaration names.
OK:
mixin("int " ~ name ~ " = T;");
Wrong:
mixin("int " ~ name ~ " = " ~ T.stringof ~ ";");
Thanks very much, __traits(identifier, Fn) is what I need.
I may not fully understand why I can done it without
identifier.stringof, I also need this string mixin for code and
debug. so I just go with __traits(identifier, Fn) right now.