&gt; GCC, for example, uses only destructors and templates, and is otherwise just C.<p>Well, to be fair, that&#x27;s because the GCC codebase was written in C and later switched to bootstrap in &quot;C++ mode&quot;. Introducing C++ features in to an existing production-ready, 30 year old, C codebase is not going to happen quickly. Both Clang and LLVM, on the other hand, use C++ features pretty readily.<p>&gt;  It&#x27;s not clear that C++ is an improvement over C in terms of ease of use or maintainability. Projects written in C++ tend to develop complexity faster than those written in C.<p>Complex projects can grow complex because they&#x27;re... well,  inherently complex. So maybe inherently large, complex projects just require the  power of C++?<p>We both clearly have a personal bias one way or the other. Personally, I despise C. As well as a lot of the things I like, pretty much everything I hate about C++ comes from C (header files, implicit integer narrowing, and undefined behaviour wrt signed types, for example.). Cs lack of power and expressiveness has also lead to pervasively poor, lazy API design (libc and most of the POSIX APIs, for instance, are total garbage).