Yep, C++ is unnecessarily complex, suffers from bloated syntax, and is almost as hard to read for a compiler as it is for a human. The point the author has missed is that it's fundamentally not that flawed as a C replacement for projects where C outgrows its usefulness.<p>Okay, so it's essentially destroying itself as a general-purpose language with the complexity and idiosyncracy of some of the additions; a decently standardised ABI would help for embedded stuff. <i>But on the whole I'd rather use std::vector<> than malloc() and free()</i> when it's impossible or exceedingly impractical to use my favourite Lisp, or Ruby if I'm feeling imperative, or Java/C# if someone's forcing me.<p>Yes, you need to know what's going on under the hood, but it can save you a lot of micro-management that slows you down in C. I've come to realise that you have to treat C++ as exactly what the name suggests: a step up from C. If you treat it as anything more, you end up building template empires. Been there, done that, realised it was a bad idea. I'd still pick it over C though.