https://issues.dlang.org/show_bug.cgi?id=16075
--- Comment #2 from Max Samukha <maxsamu...@gmail.com> --- (In reply to b2.temp from comment #1) > > Hi, there is an error in your code, the correct way to write your template > is: > > > > mixin template Foo(A...) > { > static if (A.length) > { > void foo(A[0] a) {} > static if (A.length > 1) // here !! > { > mixin Foo!(A[1..$]) F; > alias foo = F.foo; > } > } > } > > mixin Foo!(int,string,bool); > > void main() {} > > > > otherwise the instanciation continues endlessly with an empty A. No. The base case is when A.length is zero. Remove the alias, and the example will compile. --