There are some unsolved problems of generics in free pascal: 1. See wiki: http://www.freepascal.org/wiki/index.php/Generics#Notes The generic should not use private parts of a unit:
interface generictype declar implementation procedure helper; begin end constructor generictype.create begin helper end end. IMO this can be allowed. But maybe it is a problem for the compiler? 2. Circle dependencies: unit a; interface generictypeA implementation uses B end. unit b; interface uses a implemenation begin generictypeA<integer>.create end. Same: a problem for the compiler? 3. Name space. The unit, where the template is defined, has different uses clauses, than the unit, where the template is declared. In which order are the units searched? a) Ignore uses clause of template unit b) First uses clause of template unit, then uses clause of using unit. c) ? 4. Automatic generic parameters: var List: TGenericList<integer>; begin List:=TGenericList.Create; // Note: ^ missing <integer> end; I'm against automatic generic parameters. I don't even like the generic declaration without a type name. I would only allow named types: type TListOfInteger = TGenericList<integer>; Mattias _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel