Рассмотрим эту программу:
type
TMyClass<T: class> = class
public type
TClassOfT = class of T;
end;
begin
end.
Это не удается скомпилировать при объявлении TClassOfT с сообщением об ошибке:
E2021 Class type required
Может ли кто-нибудь объяснить, почему это так? Если бы я должен был создать экземпляр этого класса, например TMyClass<TObject>, то, безусловно, class of TObject был бы значимым. Я ограничил общий параметр как класс. Итак, как объект-компилятор, который T не является типом класса?