One of them is that "the closest match" is chosen i.e. for f(a, 3) a free standing function would be preferred, and, if there isn't one, members of A are checked for match.
Which would basically mean to pile on the ever so problematic partial inference of types, and as you said add yet another level of complexity for the programmer. One of the big critiques about C++ is it's implicit conversion (I suppose inherited through C) and this "unified call" syntax just makes that ever more implicit.
but apparently (fortunately) that would break too much code out there.
Thank god for small favors ... :)
I really don't like all this, but to be entirely fair, members are really no different from free functions and "this" injection is just a syntax sugar.
Sure, however the purpose of having members is to have the "this" injection. Otherwise we'd all write functions that operate on POD structures ... oh, well, we used to do it so why would be so reluctant to do it again ...?
On some level it would make sense... i guess... ugh, no, I still don't like it :P
I'm with you, Chris, sadly I don't get to vote!