I find it fascinating that programmers working in C++ seem to spend a lot of time thinking about language design.
There is a lot of responsibility on the shoulders of language designers. There is the notion of technical debt that we all deal with as programmers, but the meta-debt the language designer accumulates is astounding.
Let's meditate a while. As we read this, some young, well meaning C++ programmer is writing another String class.
I don't even know if talking about Tony Hoare's NULL story is really that relevant. After all, that's a single feature of a programming language. In the context of C++, talking about NULLs at the language level is like arguing about the colour of your Edsel.