3 ms·
If you want a C-level sharp knife, and you want to work with abstraction (not just OO and abstract data types, but also generics and metaprogramming), then C++
by RossBencina 10y ago
If you want a C-level sharp knife, and you want to work with abstraction (not just OO and abstract data types, but also generics and metaprogramming), then C++ is one of the few choices. D is maybe another option (if you can live with GC). Maybe in the future also Rust, but my impression is that the Rust generics and metaprogramming story is not quite there yet. C++ is mature, so it's a safe choice in that respect: large installed base, ISO standardised, mature tooling with multiple vendors.
If you don't need the C-level sharp knife, then there are a lot of options -- and a lot of reasons to choose them over C or C++.
Personally, I value that C++ is multi-paradigm (I can use classes when they are a good fit, generics when they are a good fit, asm when it's a good fit, etc.), also: trivial interop with C and assembler, no GC, runs directly on the metal. These are reasons to use C++, but not necessarily reasons to "continue to bow into it."
Did I mention generics and metaprogramming? Even if you don't use these directly, their availability makes for flexible and powerful libraries. The STL container library is the obvious example, but modern C++ metaprogramming goes way beyond that.[0]
[0] For example, see Hana: CppCon 2015: https://www.youtube.com/watch?v=cg1wOINjV9U https://www.youtube.com/watch?v=cg1wOINjV9U https://github.com/boostorg/hana https://github.com/boostorg/hana