13 minutes ago, Gnollrunner said:
I've programmed in C++ since the late 80s ...... Now again, what specific "language features" are you referring to? Can we pin this down a bit?
Don't know which specific features @LorenzoGatti meant, but the current standard offers a lot of benefits. I won't go so far to say, that there are really obsolete language features, but there are certainly a lot of features that are not that important anymore. And some of these features, like raw pointers, can get you into trouble really fast if you don't know what exactly you are doing.
Current standard allows you to write code that is syntactically easier to understand. Think of the new 'for each' loop notation or the using keyword instead of typedef. The std::function is much easier to use than the weird function pointer syntax. If you start with templates, 'constexpr' will remove so much code bloat. The auto keyword will also help to make the code more readable, which is so important for beginners. No more:
std::map<int,std::vector<MyClassWithAVeryLongNameWhichIsAlsoATemplate<bool>>>::iterator = myMap.begin();
Though I have to admit, that excessive use of auto is also not such a good idea.
Then you have static_cast, dynamic_cast, etc instead of C-style casts. There are a lot of articles, why you should avoid c-style casts. I always forget why exactly but it convinced me, So just google it ?
Another nice C++17 feature to reduce code bloat is structured bindings.
As I said in the beginning, I don't see any real obsolete language feature. But in my point of view, the current standard and tutorials/books that teach it will make learning C++ much easier and less error-prone.
Greetings