[fpc-devel] type x = type byte // in overloaded params with/without var

Martin lazarus at mfriebe.de
Thu Aug 6 21:26:43 CEST 2009


ah it seem 2.3.1 has a bettter implementation.

It always gives
project1.lpr(30,3) Error: Can't determine which overloaded function to call

:)

Martin wrote:
> I read up on  
> http://www.hu.freepascal.org/lists/fpc-devel/2006-October/009116.html
> I understand that assignment is still possible via := / due to 
> implicit conversion.
>
> Just a question in the example below, 3 pairs of overload procedures.
> And 3 types: Integer, t1, t2
>
> Only the one with "var" param rejects the Integer.
>
> Is this the only way do reject the integer?
> I understand I could do a record type (and overload +/-), but I also 
> whish to use bit-logig via and/or (which I believe I can not overload?)
>
>
> To make it worse(actually better): if I use "string" instead of 
> integer, byte, qword => all 3 give:
> project1.lpr(30,3) Error: Can't determine which overloaded function to 
> call
>
> Worse because it's a differnet behaviour, and hence more complicated, 
> less predictable (without even more knowledge)
> Better, because at least it rejects, what I want it to reject
>
>
> Best Regards
> Martin
>
>
> program Project1;
> {$mode objfpc}{$H+}
> type
>  t1 = type byte;
>  t2 = type qword;
>
> procedure a(x: t1);
> begin end;
> procedure a(x: t2);
> begin end;
>
> procedure b(var x: t1);
> begin end;
> procedure b(var x: t2);
> begin end;
>
> procedure c(const x: t1);
> begin end;
> procedure c(const x: t2);
> begin end;
>
> var
> v: integer;
> v1: t1;
> v2: t2;
>
> begin
>  a(v);
>  //b(v);
>  c(v);
> end.
>
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel




More information about the fpc-devel mailing list