On 10/3/17 3:25 PM, Walter Bright wrote:
This is specifically designed to prevent nasty surprises. C++ has a big
problem with ADL in that overloading is not encapsulated and any
#included header can inadvertently add more overloads that may be
entirely unrelated. Any .h can crack open any namespace and insert more
overloads into it. It's completely unhygienic and uncontrollable.
One thing I would like to have control over is how 'this' is passed.
A nice thing about UFCS is I can use it to pass-by-value the faux 'this'
parameter, whereas I cannot do this with a member function. It makes a
difference in some cases, especially with const functions.
It also can be cheaper to pass a small struct by value.
None of this is possible with operator overloading. A way out could
possibly be to alias a non-member function for the operator.
-Steve