On Mon, 21 Apr 2014 09:46:18 -0400, Lars T. Kyllingstad
<[email protected]> wrote:
On Monday, 21 April 2014 at 12:45:12 UTC, Steven Schveighoffer wrote:
3. There is zero chance of a conflict with another type's similarly
named method.
How? If you have the following functions:
void foo(A a);
void foo(B b);
and you write
foo(new B);
there is also zero chance of conflict -- even if B happens to be a
subclass of A, since the most specialised function is always called.
I definitely restricted myself too much when I said "another type." Yes,
there is a very low possibility of A and B conflicting. But as I showed in
the other post, there is the possibility of confusing the compiler when
calling a UFCS method.
Essentially, the core issue is that a type provides the strongest tie to
its method overload set. The module's overload set has looser ties, so
they can be accidentally (or intentionally) overridden. It was a common
con against UFCS before it was introduced.
-Steve