These days I don't write much C++ code (regressed to largely C), and when someone asks me how proficient I place myself at a 4 out of 10, and then explain how the spec has changed faster than I think most people can actually absorb it unless its their full time job to sit on the standards committee. So I don't believe anyone who gives a themselves a score over 6 unless their job actually required a deep level of standards understanding (ex: compiler developers).
OTOH, all that doesn't mean my actual C++ style has changed much. I still use C++ as a C with objects, only now some of the restrictions of the past have reasonable workarounds. So the idea that only beginners treat it as a C with objects language is a misleading statement. Sure I can create all kinds of fancy language constructs, but I only use things like template meta programming in toy projects or various other features, but the results are frequently setup as "C" language extensions (aka here is a matrix class where the matrix T can be a bignum/etc) which happen to look more like a C compiler with some extra features for manipulating matrix's.
A lot of the problems (ex threading is hard) come from the fact that its far to easy to dig a comprehension hole that even the initial programmer cannot get themselves out of. Hence projects like firefox/thunderbird from ~15 years ago where the C++ code was hacked together in a style that needed to be cleaned up but never was, leading to piles of hidden bugs, and problems where newer/stricter compilers would simply refuse to compile the code due to undefined behavior on ever 10th line.