In trunk it is even easier since last week, mantis 33414:
{$mode objfpc}{$H+}
uses Classes, SysUtils;
type
generic TFoo<SomeEnum> = class
m: array[SomeEnum] of integer;
end;
TEnum = (e0, e1);
var
a: specialize TFoo<TEnum>;
begin
end.
But it needs trunk revision 38532 or higher. No need for typinfo.
It doesn't need a class. It also works for TArray<T>
Cleaned up code in proper syntax:
{$mode delphi}
type
TFoo<SomeEnum> = class
m: array[SomeEnum] of integer;
end;
TEnum = (e0, e1);
var
a: TFoo<TEnum>;
begin
end.