On 01.07.2012 17:39, JC Chu wrote:
In Delphi mode, each custom operator has to be associated with a
record type, and must take or return such a record.  It seems that the
OBJFPC mode doesn’t have this restriction; for example, the Math unit
exports a custom ** on Int64, which is a simple type.

Global operator declarations were forbidden for mode Delphi as Delphi does not support them either (you can use them in Delphi modes though even if they were declared in non-Delphi modes). Global operators existed in FPC before Delphi introduced their operators in records concept.

However, I’ve been unable to define operators other than ** for
non-record types, even if they do not conflict with the default
interpretation.  Examples include OPERATOR MOD (x, m: Double): Double
and OPERATOR AND (x, y: Tristate): Tristate, where Tristate is an
enumeration type.

Is this a bug, or is there any explanation for this?

Some parameter combinations are not allowed, because certain inline operators are already in place. I don't know their exact rulings, but ordinals (Integer values, floating point values), enums and sets are a bit restricted regarding overload (especially if it is a binary operator where left and right is of such a type).

It's best you simply try whether it's supported and if not you need to look for a different method... (or ask on the list why it's not allowed)

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to