I've been programming in C++ since 1991, and the language / standard library are now so complex that it's hard to be 100% confident that I understand the meaning of any non-trivial code.
I've been programming in C++ since 1991, and the language / standard library are now so complex that it's hard to be 100% confident that I understand the meaning of any non-trivial code.
Modern C++ with RAII, smart pointers, constexpr, concepts, and heavy instrumentation is so much easier to reason about. It's actually close to Alexander Stepanov's idealised C++.
A lot of the modern stuff isn't like that. There's a thousand different rules governing ten thousand different constructs that interact in fun and dangerous ways.
IIUC, you're referring to codebases which limit themselves to what's often called "modern C++".
I'm working with codebases that draw from a gnarly combination of older and newer parts of the current language spec.
So in my experience, very few C++ programmers are familiar with every part of the current language spec that has relevance to these codebases.
I.e., their code isn't obviously correct regarding many aspects of correctness, including memory safety.