https://issues.dlang.org/show_bug.cgi?id=17870
Issue ID: 17870 Summary: recursive template "T is nested in both" Product: D Version: D2 Hardware: x86 OS: Windows Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: nicolas.jincher...@gmail.com class B { int a; } class D1 : B { int b; } class D2 : D1 { int c; } template TupleOf(Classes...) { static if(Classes.length > 1) alias TupleOf = AliasSeq!(Classes[0].tupleof, TupleOf!(Classes[1..$])); else static if(Classes.length == 1) alias TupleOf = AliasSeq!(Classes[0].tupleof); else alias TupleOf = AliasSeq!(); } int main(string[] argv) { alias allClasses = AliasSeq!(D2, BaseClassesTuple!D2); alias allFields = TupleOf!allClasses; return 0; } Error: template instance AliasSeq!(b, a) AliasSeq!(b, a) is nested in both D1 and B Error: template instance main.TupleOf!(D1, B, Object) error instantiating instantiated from here: TupleOf!(D2, D1, B, Object) --