na irgendwie muss man doch dann doch prüfen, welcher Datentyp da dann übergeben wurde ?
im Fall von TFoo<String>.Create
in etwa so: IF Type = String THEN ...
also ich seh da keinen echten Mehrwert.
Du willst ja gerade etwas machen, das für mehrere Datentypen gilt. Zum Beispiel eine Liste TList<Integer> oder TList<TForm>. Darin unterscheidest du aber nicht die ganzen konkreten Typen.
Dann hätte das wirklich keinen Mehrwert.