I'd like to declare a type like this:

```
type
  TDynMatrix<T> = TArray<TArray<T>>;

```

The compiler rejects this with:

```

[dcc32 Error] E2508 Type parameters not allowed on this type

```

I wondered whether the issue was related to the nesting of generics. But it seems not:

```
type
  TDynArray<T> = TArray<T>;//pointless type I know, but for the sake of the Q

```

also results in the same compiler error.

The [documentation](http://docwiki.embarcadero.com/RADStudio/en/E2508_type_parameters_not_allowed_on_this_type_%28Delphi%29) for the compiler error left me knowing perhaps even less than I knew before I read it:

> 
> **E2508 type parameters not allowed on this type (Delphi)**
> 
> 
> When using class references, you cannot use generic classes directly.
>  You need to use a wrapper class to be able to use generics.
> 
> 
> 
> ```
> program E2508;
> 
> {$APPTYPE CONSOLE}
> 
> uses
>   SysUtils;
> 
> type
>   TMyClass = class
>   end;
>   TMyClassClass<T> = class of TMyClass;
> 
> begin
>    Writeln('FAIL - E2508 type parameters not allowed on this type');
> end.
> 
> ```
> 
> 

Can anyone explain why I cannot declare generic types in this way?