> If you never use "naked pointers" and always use std::unique_ptr and std::shared_ptr, will it not reduce nearly all memory related bugs?
It will, as long as the code uses them correctly all the time, including when refactoring. In the end, that's still manual memory management.