> On Apr 6, 2021, at 12:57 PM, Sven Barth <pascaldra...@googlemail.com> wrote: > > In this specific case the two functions also are *not* ambigous, because for > the non-generic Test the parameter requires an implicit conversion, but the > implicit specialization does not. For example if there would be a "Test(aArg: > LongInt)" instead of the generic the compiler would pick that instead of the > string one. So if you move the check for generic vs. non-generic to the end > of is_better_candidate all the other rules to determine this will take > precedence.
So the root of the problem is that we have no way to choose the generic function via explicit casting? That makes sense and presumably I can use the final result of is_better_candidate to determine this? In your example: Writeln(Test('Hello World')); // is_better_candidate res = -1 Writeln(Test(42)); // is_better_candidate res = 1 Writeln(Test(String(42))); // is_better_candidate res = -1 I'm struggling to see how the operator influenced the result. Res is -1 in both cases so how do we know which Test we want to call? Regards, Ryan Joseph _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel