On 25/11/2025 16:14, Hairy Pixels via fpc-devel wrote:
On Nov 25, 2025 at 9:55:46 PM, Martin Frb via fpc-devel <[email protected]> wrote:
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;




yes those are two different functions. The generic function is just a template which includes the parsed tokens and is named with $X where X is the number of generic parameters. Only at the time of specialization is the code generated, until the it's just an array of tokens.

there is a {$modeswitch implicitfunctionspecialization} mode switch ( my work so I apologize for the bugs 😂) which infers the parameter type so that foo('abc') becomes foo<String>('String').


So then with that switch, what will
  foo(1)

resolve to?

- Always the non generic
- Always the generic
- Which every is first in scope
?
_______________________________________________
fpc-devel maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to