https://issues.dlang.org/show_bug.cgi?id=18915
--- Comment #2 from Simen Kjaeraas <simen.kja...@gmail.com> --- I'd prefer it to work. This is essentially the use case: interface A { import std.traits; static foreach (e; __traits(derivedMembers, B)) { static foreach (fn; MemberFunctionsTuple!(B, e)) { mixin("@(__traits(getAttributes, fn)) ReturnType!fn "~e~"(Parameters!fn);"); } } } class B : A { void foo() { } } That is, we generate an interface based on a type, and derive that type from said interface. Since derivedMembers doesn't look at base classes and interfaces, this could possibly be made to work. Related forum discussion: https://forum.dlang.org/post/dgzojfdiwsssflbnk...@forum.dlang.org --