Hi folks,

In preparation for my upcoming talk at DConf 2013, I'm working on a compile-time dependency injection prototype for D.

I'd like part of public interface for this system to take a module at compile time, and return a list of the classes in that module. Something like:

string GetMembers(T)() {
  auto members = [__traits(allMembers, T)];
  return join(result, ", ");
}

If I pass a module to __traits(allMembers, foo.bar) outside a template parameter list, it works great, but as soon as I pass it through a template parameter list, I get an odd error:

Error: template instance GetMembers!(std) GetMembers!(std) does not match template declaration GetMembers(T)()

Here's the code I'm working on. Any thoughts on whether this is possible, and if so, what I'm doing wrong?

http://pastebin.com/BgZ67h8P

Thanks,

Ben

Reply via email to