I both like and hate C++. I like it because it is a great teaching tool to understand how programming languages are implemented. I hate it because as a user you must know so many implementation details to use it effectively !

Looking around on the web I read people saying that you have to find the right sub-set of C++ that fits you. I think it is a good idea but it is valid in any general purpose language. Myself I do not use every feature I know of Python for example.

I think the problem is more about language design. I tend to learn rather quickly languages designed by a benevolent dictator. C++ however is specified by a large international committee. Maybe the result of this organisation is that you have a bunch of great ideas that get piled on top of each other.

Which brings me to the cocktail metaphor. Suppose you mix the most delightful drinks, like a venerable Calvados and a nutty Savagnin. It does not mean the result of the mix is going to be drinkable. And what’s more, once you reach that point no amount of stuff you pour into your mixer is going to save your cocktail. Sometimes you just have to let go, throw the contents in the sink and start over again !