Delphi 为什么泛型类型中不允许使用T类?

Delphi 为什么泛型类型中不允许使用T类?,delphi,Delphi,考虑一下这个计划: type TMyClass<T: class> = class public type TClassOfT = class of T; end; begin end. 有人能解释为什么会这样吗?如果我用例如TMyClass实例化这个类,那么TObject的类肯定是有意义的。我将泛型参数约束为类。那么,编译器对象T不是类类型怎么可能呢?据我所知,编译器没有理由拒绝这段代码。因此,我认为这是一个设计缺陷,我已经提交了。看起来像是编译器中的一个疏

考虑一下这个计划:

type
  TMyClass<T: class> = class
  public type
    TClassOfT = class of T;
  end;

begin
end.

有人能解释为什么会这样吗?如果我用例如
TMyClass
实例化这个类,那么TObject的
类肯定是有意义的。我将泛型参数约束为类。那么,编译器对象
T
不是类类型怎么可能呢?

据我所知,编译器没有理由拒绝这段代码。因此,我认为这是一个设计缺陷,我已经提交了。

看起来像是编译器中的一个疏忽。@uwerabe让我对提交质量控制报告有点犹豫的是,我得到了一个正确的编译器错误,而不是ICE。我仍然会提交质量控制报告。他们所能做的最糟糕的事情就是用“按设计”来关闭它。在泛型系统中,有很多事情您所放置的约束的含义还没有完全考虑清楚。这看起来像是其中之一。@MartynA在我看来,这是一个明显的语法错误。在任何情况下,您肯定会编写它,但这永远不会起作用。您必须定义一个类或记录。 E2021 Class type required