"Just use the parts you need". (sounds prosaic, but actually well put).
I've used C++ over the years off-and-on (depending on what the clients required). You don't really need to use every 'exotic' feature in order to be productive. If you need something low-level with great compilers and a lot of great lib support, it's actually a nice language. All these new languages are nice, but Go and Rust just chisel off the 'ugly' in favor of some different 'ugly', IMO.
The problem is that other people's code might use the 'exotic' features. Unless you're the only one working on the code, or you have control over what subset of the language is used (including libraries), you have to deal with the whole language.
Is that a problem though? Wouldn't you be happier knowing that portion of the language, despite the difficulty in learning and understanding it to begin with?
Ah yes good point. I suppose C++ is one of those languages that is pretty massive. You can probably get by with only knowing a small bit but it does seem like a never-ending journey with knowing it fully in and out.
I wonder if it was designed to accommodate the way some real clever boffins think so that they could properly express their thoughts and designs in a language?
I've used C++ over the years off-and-on (depending on what the clients required). You don't really need to use every 'exotic' feature in order to be productive. If you need something low-level with great compilers and a lot of great lib support, it's actually a nice language. All these new languages are nice, but Go and Rust just chisel off the 'ugly' in favor of some different 'ugly', IMO.