>Every new C++ article about the latest "improvements" to the language tends to confirm my belief that C++ developers are masochists. They don't seem to be interested in actually improving the language and making in better and easier at creating useful software. [...] The entire ecosystem feels like a infinite pile of new features fixing old ones, bringing new flaws in the process.
Can you give a concrete example? C++ evolution can be divided in roughly two eras: C++98, and Modern C++ (C++11 and above). This latter introduces a new philosophy, an expansion of features that make it look like a completely new language indeed. From ubiquitous type deduction, to lambdas, to compile-time computation without TMP, the language has introduced powerful new abstractions, always with the trademark "zero cost" that gives C++ its power.
>[Code snippet]
>I don't want a language with magic.
What about that snippet is magic that leaves you so appalled? You got a great (new) feature: guaranteed compile-time conditionals with the same syntax as regular if statements. Depending on whether the object has serialize or not, the code will instantiate to each of the branches, guaranteeing elision of a potentially expensive runtime check and branch.
>Show me simplicity and elegance. [...] Show me how I don't have to choose between value, reference, raw pointer, unique_ptr, shared_ptr, etc, to pass a damn parameter to your function.
Show me a language that simpler and more elegant than C++, where you don't have to worry about choosing how to pass parameters, or manage memory, and that still is as fast as C++. You simply can't, because there's no such thing. C++ delivers ZERO-COST ABSTRACTIONS, that's its power, that's its raison d'être. No other language I'm aware of that delivers this, apart from maybe Rust or D.
--
I realize it's hip to hate on C++, but please keep it rational.