not exactly a bug but this is a little weird. void Foo(alias Tfn)() { Tfn!()[2] x = void; pragma(msg,typeof(x).stringof); x[0] = Tfn!().init; } template Bob() { alias T!(int, uint, char) Bob; } template Joe() { alias int Joe; } template T(t...){alias t T;} alias Foo!(Bob) fig; alias Foo!(Joe) fig; void main(){}