leledumbo wrote:
works if I change the operator header to:

operator + (const r: r_; const a: t1) s: integer;

from gdb bt, the problem seems to be assignment from shortint to variant:

#0  0x00000000 in ?? ()
#1  0x08057205 in SYSTEM_$$_assign$SHORTINT$$VARIANT ()
#2  0x0806bf94 in U_$SYSTEM_$$_OUTPUT ()
#3  0x0804816f in plus (R=..., A=0xb7ff7068) at x.pas:30
#4  0x080482ef in main () at x.pas:47

[Digs] Thanks, you're right :-) Also, if the array elements are variants then there's no error.

So in other words, it might turn out to be safer to have separate operators returning integer, double and so on.

I appreciate that I'm abusing the language here, but /should/ the original implicit conversion have worked?

Doesn't work without tuple support

a1 := t1.create(1,2,3,4,5);

Noted. What happens in this case if

a1 := t1.create(1,2,3,4,5);
..
a1 := t1.create(6,7,8,9);

Does there have to be an explicit destroy or similar?

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to