Beware of those. They are the source of much evil. You must use them with care.
Originally Posted by -EquinoX-
Saving a function isn't enough. They cause all sorts of problems.
I don't think the reason for this is technical at all. I think it's fairly easy: you can't assume that a*b == b*a. That is, not all multiplications are commutative. Sure, the multiplication of two integers is, but matrix multiplication is not, for instance. So let's say we have operator*(Matrix1Type, Matrix2Type) and the operator* of the two reversed is called, we get unexpected results, which are probably fairly hard to debug as well.
Originally Posted by Elysia
That is kind of what I meant by technical. The compiler cannot assume that the two will do the same thing.