On Monday, 11 June 2018 at 12:59:01 UTC, Mike Franklin wrote:
On Monday, 11 June 2018 at 12:38:33 UTC, Luís Marques wrote:
Just to check. If you have a piece of code like "foo.bar.baz", you can get the full hierarchy, for instance with stringof:


     static assert(foo.bar.baz.stringof == "foo.bar.bar");


Are you looking for this: https://dlang.org/phobos/std_traits.html#fullyQualifiedName ?

That only works for modules and types - Luís mentioned that __traits(identifier) only returns the type, not the identifier. Consider:

module foo;
import std.traits;

struct S { int n; }

unittest {
    S s;
    // Prints "s.n"
    pragma(msg, s.n.stringof);
    // Prints "foo.S.n".
    pragma(msg, fullyQualifiedName!(s.n));
}

As for getting the name s.n inside a template, I don't think that's currently possible.

--
  Simen

Reply via email to