This must have been asked before, but I couldn't find any details.
My question is about having an untyped const param vs a normal typed param.
program Project1;{$mode objfpc}{$H+}
procedure Foo(P1: Integer; const P2); overload;
begin writeln('const ', P1); end;
procedure Foo(P1: Integer; P2: byte); overload;
begin writeln('byte ', P1); end;
var aByte: byte; aWord: word; aString: string;
begin
Foo(11, 1); // byte
Foo(21, aByte); // byte
Foo(22, aWord); // byte
Foo(31, aString); // const
readln;
end.
It looks like the compiler prefers the "P2: byte" for all
signed/unsigned int types?
Or in general terms:
A typed param (to which the argument can be converted) is *always*
preferred over an untyped param?
Is that something that can be trusted upon?
Is it documented somewhere (I could not find it)?
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel