"Timon Gehr" wrote in message news:mjvvq2$19hd$1...@digitalmars.com...
> As operator overloading is defined in terms of lowering to function
> calls, I think it's reasonable to decide the order of evaluation after
> the lowering. This will still be consistent across compilers and
> platforms.
But almost entirely arbitrary.
Yes. I don't think this is particularly important, as depending on
evaluation order is highly discouraged.
> Preserving the original order would require added complexity
> that I don't think is warranted.
The compiler would just need to introduce some temporary variables for the
two lowerings. Why wouldn't this be warranted to make overloaded operators
consistent with built-in ones? If anything, I think it is desirable to
have opBinary(B) on type A and opBinaryRight(A) on type B interchangeable.
What complexity are you worried about?
Introducing temporary variables is added complexity. It affects all sorts
of other parts of the compiler.