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(){}