This works only so long as you can pass the problem on to another function that handles arbitrary types (like `std::cout`). If you want to handle it yourself then you have to use object overloads, templates, etc, etc.
Then the answer is yes. We haven't advanced to the point where the compiler can guess that you want. If you can give me an actual example of when it would be an insurmountable task to do so, please let me know.
That, and that it should be that hard, and the provided features for doing so should be better, is the entire point of the article.
>We haven't advanced to the point where the compiler can guess that you want.
That's not some case of magic compilers. This is just bad design.
>of when it would be an insurmountable task to do so, please let me know.
Whoooosh. The whole point is not that it is insurmountable, but that it's much worse than it should be.