I don’t really understand the desire for unified calls. In general, I want clarity in the code I read. Something looking like a free call and being a method call gets in the way of that. Anyone willing to explain this to me?
I can see that one would want to abstract over the distinction, and in particular be able to define a template in terms of one style and have it work for both.
This is why programming in C++ is miserable. The language is already too difficult for humans to program, and is renowned for its godawful compile times. So we’re adding compiler magic to spare us from the occasional one line function.
This is a fairly contrived example, but I can imagine deleting a function and having all the call sites start calling some other method with the same name, as opposed to breaking the build so I can delete them too.
I imagine there are other fun subtleties that can come of it, but I can’t even begin to enumerate all of the possibilities in my head because the language is so big. Fortunately, someone much smarter than me has done that already, and discovered that it’s not such a big deal after all:
such problems will be rare
we have lived happily with equivalent problems for decades (see section 6)
implementations can warn
we will learn not to patch interfaces in an ad hoc and non-obvious manner
And even if it doesn’t end up working out, we can just get rid o
Stability – backwards compatibility – is an important feature, overruling my desire for perfection.
We have to put up with it forever.