I want to access the type of the enclosing struct in in a shared static initializer.. How do I do that? The following code will not compile:

mixin template MsgMixin(T ...) {
  static string getName(this M)() {
    return M.stringof;
  }
  shared static this() {
    import std.stdio;
    writeln("register " ~ getName());
  }
}

struct MsgTestMsg {
  mixin MsgMixin!();
}

I get the following error messages:

src/main.d(40): Error: template main.MsgTestMsg.MsgMixin!().getName does not match any function template declaration src/main.d(40): Error: template main.MsgTestMsg.MsgMixin!().getName(this M) cannot deduce template function from argument types !()()

If not possible, just getting the name of the enclosing struct would help a lot!

-Øivind

Reply via email to