>
>> Hi *,
>>
>> this code compiles for target Win32 but does not compile for
>> Win64/x86-64. Why? Is there workaround?
>> (Error: Can't determine which overloaded function to call)
>> Thank you
> For me, in win32 works fine

Yes in Win32 works also for me. And this is my question why it does work
in Win32 and does not work in Win64?


>
> try this
>
> r1.Offset(a-Integer(1),b-Integer(1));

does not helps


>
> or
>
> r1.Offset(Integer(a-1),Integer(b-1));

helps, but why is it not needed in Win32? Why for Win32
"integer"-"integer" is considered as "integer" so compiler can determine
which overloaded function to call and for Win64 compiler compiler can
NOT determine which overloaded function to call?

It seems to me as inconsistent?

L.

=== code sample ===

  TRec1 = record
    x,y: integer;
    function Offset(const Ax,Ay: integer): TRec1; overload;
    function Offset(const Ax,Ay: single): TRec1; overload;
  end;

function TRec1.Offset(const Ax,Ay: integer): TRec1;
begin
end;

function TRec1.Offset(const Ax,Ay: single): TRec1;
begin
end;

var
  r1: TRec1;
  a,b: integer;

begin
  r1 := r1.Offset(a-1,b-1); // HERE Error:
end.  

============================


_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to