Am 21.04.2021 um 16:54 schrieb Ryan Joseph via fpc-devel:

On Apr 18, 2021, at 1:37 AM, Sven Barth <pascaldra...@googlemail.com> wrote:

It has been decided back when operator overloads were introduced that they do 
not replace existing, built in operators. This decision still stands. And we 
see no reason to change that. This way a user can *rely* on what a certain 
operator means based on the language reference guide. This is more important 
than some convenience for certain use cases.

We still have some inconsistencies though because of the many other comparison 
operators which can already be overloaded but simply lack a class operator 
syntax and thus are not available to classes.

// impossible overload
operator = (left: TObject; right: TObject): boolean;

// possible overload
operator = (left: TObject; right: integer): boolean;

// possible overload
operator < (left: TObject; right: TObject): boolean;

In fact other binary operators that don't have side effects (i.e. don't return 
the class type) are safe and could be allowed in generic classes also.

// only way to overload + for TSomeClass<T>
operator + (left, right: TSomeClass<T>): String;

So it's really just about a number of inconsistencies with classes and that's 
why I wanted to fix it. Same with Objects as Benito has just pointed out again.

You miss the point. The point is that the way it is now *always* guarantees that e.g. TObject = TObject *always* behaves the same no matter what unit one includes. Same for e.g. String + String, String > String, Integer < Integer, etc. And *that* is the consistency that is important, *not* that every operator can be overloaded for each combination of types. The set of overloadable operators is essentially different for each pair of types. This will not change, because the base rules of the language take higher precedence and that would even be something that we likely wouldn't copy from Delphi if they'd introduce that.

Regards,
Sven
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to