Подтвердить что ты не робот

Почему класс T не разрешен в родовом типе?

Рассмотрим эту программу:

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 не является типом класса?

4b9b3361

Ответ 1

Насколько я могу судить, для компилятора нет причин отклонять этот код. Таким образом, я считаю, что это ошибка дизайна и отправили QС# 121178.