If it keeps going in its new direction, soon they'll just be able to name it javascript. :)
I think the issue he was speaking to was that if many of the new features require doing things in a new way then it really is something new. But your point is well taken as well. C++ is still C++ whether you use standard templates or not.
The GCC C++ parser is over a megabyte of ASCII text. Think about it: it takes over a million characters to figure out how to parse C++ code. This complexity is partially because there are so many ways to do the same thing.
All auto parameters, or make it a template? `if constexpr` or `std::enable_if_t`? Macros for generic programming or variadic variadic template templates? Overloading or specialization?
I love C++, and backwards compatibility is something that's been valuable for it, but it certainly comes with its challenges.
Firstly, nothing requires you to do things in a new way.
Secondly, if “you could already do that” implies “not really something new” for a programming language, updates to the syntax of programming languages can never count as “really something new”.
I'd much rather see type erasure fixed, as that messes up every single language based on JVM. But that would be like "the incompatible change" of a decade...
What? Type erasure is one of the main reasons why the JVM is targeted by so many languages (Java, Clojure, Kotlin, Scala, Groovy, JRuby, etc.). Had the JVM gone the way of the CLR the programming language landscape would probably look a lot different than it does today.
Perhaps you mean lack of support for value types? That does affect every language running on the JVM.
As someone who grapples with erasure as well, I haven't heard this argument before. Could you explain that?
Learning from other peoples' code is not generally considered harmful.