Right now this gives an error because you can’t add normal functions AFTER generic functions with the same name in the same scope. I can’t find the bug report but I think Sven fixed this recently or gave a better error at least.
generic function DoThis<T>(a: T): T; overload; begin end; generic function DoThis<T,U>(a: T): U; overload; begin end; // overloaded identifier "DoThis" isn't a function function DoThis(a : integer): integer; overload; begin end; ======================== That bug aside the rule is that non-generic overloads always win over generics. I remember this was discussed at length if we can find the old thread. {$mode objfpc} {$modeswitch implicitfunctionspecialization} program timpfuncspez14; type TMyClass = class end; procedure DoThis(msg: TObject); begin writeln('DoThis:',msg.ClassName); end; generic procedure DoThis<T>(msg: T); begin writeln('DoThis<T>:',msg.ClassName); end; begin DoThis(TMyClass.Create); DoThis(TObject.Create); end. prints: DoThis:TMyClass DoThis:TObject > On Oct 7, 2019, at 8:37 AM, Michael Van Canneyt <mich...@freepascal.org> > wrote: > > I think sven means if you have e.g. 3 functions: > > generic function DoThis<T>(a: T): T; overload; > begin end; > > generic function DoThis<T,U>(a: T): U; overload; > begin end; > > function DoThis(aInt : Integer) : Integer; > > begin > end; Regards, Ryan Joseph _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal