Automated garbage collection? when? at what CPU context? at what stack context? who gets to decide it? the compiler?
If you ever found STL to be almost-impossible-to-debug in user-land, trying debugging it by looking at asm callstacks.
Take the new allocator. Which memory does it use? user? kernel? with or without sleep? At which memory range?
In many ways the Linux kernel developers managed to achieve C++ like OO design *without* sacrificing the strict control on code generation.
Trying to achieve the same using C++ would have far more difficult.
EDIT: Really, take the same to do some reading about the Linux kernel. Once you're done, come back and tell me that C isn't the right tool for the job.