Achso ja, wenn du eine Variable deklarierst, dann müssen natürlich auch alle Typen aufgelöst werden,
denn "T" kennt der Compiler "zufällig" nicht und an dieser Stelle möchte er ja gern die Klasse erstellen, wofür er nunmal der fertig/vollständig deklarierten Typ benötigt ... z.B. für die spätere Speicherverwaltung und Dergleichen.
Witzig wäre es für dich geworden, wenn rein zufällig irgendein Typ mit dem Namen "T" an dieser Stelle existiert hätte.