In Delphi mode, the record type restrictions will also allow the use of simple types:
                                                                            
                                                                            
Type
 
generic TList<_T : record> = class(TObject)
 
  public
 
    Type TCompareFunc = function(const Item1, Item2: _T): Integer;
 
  Public
 
    data : _T;
 
    procedure Add(item: _T);
 
    procedure Sort(compare: TCompareFunc);
 
 end;
 
 
TIntList = TList<Integer>;