It would not be an exaggeration to say that most of the C++ you use today is about the same age as Rust.
It would not be an exaggeration to say that most of the C++ you use today is about the same age as Rust.
- Most C++ projects are not greenfield, and C++ programmers are often working with 10-20 years of cruft in their codebases.
- Most of those codebases are also somewhat object-oriented, and thereby tained with "enterprise Javaness."
- C++ has a number of high-profile detractors who are well-liked in the programming world, like Linus Torvalds and (in this sphere) Bryan Cantrill. Most of these detractors haven't touched C++ in 15-20 years and are still railing against the monstrosity that was C++03 and the thickness of the C++ spec (without actually using it).
- C++ is widely used, and often not in places where it is appropriate or useful. When people use something, they see its rough edges.
- C++ isn't "cool" in programming spheres.
Keep in mind that C++ standard is backwards compatible, so every monstrosity added is still there. You might not use it, but your (ex-)colleagues might have, and you might end up maintaining such code. Let's just say it doesn't exactly make it more appealing.
Now, I am not a C++ dev, but how much effort would it be for a team to pick up C++ 20 if they only had worked with was C++ 11?
The functional programming parts and expansion of compile-time metaprogramming (constexpr/templates) are probably the biggest new features, but you probably aren't going to use the more complex parts.
IMO the biggest changes in ergonomics for application writers are:
* better iterator-based algorithms and iterators becoming more powerful than indexes and pointers
* new helper objects like string_view that let you work more efficiently
* functional programming and passing lambdas around is possible
* "override void foo() const noexcept { ... }" - all the extra keywords (override, const, and noexcept) help you with correctness