As shown in this article, one can define in C#:
public class MyTreeNode<T> where T: MyTreeNode<T>
{
}
In Delphi, however, the following code does not compile and complains "E2003 Undeclared identifier: 'MyTreeNode<>'":
type
TMyTreeNode<T: TMyTreeNode<T>> = class
end;
The formal terminology seems to be "self-referencing generics constraint". I wonder how to do this in Delphi ?
PS:
Another useful article as David pointed out.
Relevent SO post regarding Delphi and covariance / contravariance.