[fpc-devel] generics defy scoping rules -- Intended?

Martin Frb lazarus at mfriebe.de
Tue Nov 25 15:55:46 CET 2025


On 25/11/2025 14:19, Sven Barth via fpc-devel wrote:
>
>
> Yes, because in fact they don't have the same name. The name of a 
> generic with a single parameter is essentially "TFoo<>" while that of 
> a generic with two parameters is "TFoo<,>".
>
> The amount of generic parameters is part of the type or routine name.
>

Thanks, which just for confirmation brings up a follow up question. (I 
haven't used generic function much yet, so maybe I miss something)

           function  Foo   (aParam: Integer): integer;
   generic function  Foo<T>(aParam: t)      : integer;


Those are 2 different function too? (not an overload? because "T" could 
be integer in same cases)

Do you then always have to call the generic using
   specialize Foo<integer>(1)
?

I seem to remember a discussion about adding automatic specialization?
But then
   foo('abc') // would be clear, to specialize with string
but
   foo(1)  // could be either
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20251125/0a06b43c/attachment.htm>


More information about the fpc-devel mailing list