Your solution to the problem is to try to kill the problem of bad developers by hiding it with the language.
It has nothing to do with "bad programmers". A programmer in one language can be expected to make the same number of errors in their code as a programmer in another. And they can be expected to have a similar spread of competence in their chosen language. It's about how many of those errors make it into the final product, the effort required to test / find / fix them, and the dangers (e.g. to safety, security) if they reach the final product.
C++ suffers from a whole class of problems that are minimal or even non existent in others - memory corruption, heap under/overflows, leaks, bad pointers. That's why languages like C# and Java took off - because companies can deliver a higher quality product in a shorter space of time.
It's also why C++ may find itself being sidelined by the likes of rust, swift etc. These languages offer comparable performance to C++ but will catch errors that C++ wouldn't even notice were errors. In particular rust has been explicitly designed to prevent pretty much every segfault that C++ could suffer from which in a safety system (e.g. running in a car) should be regarded as a good thing.