Your argument makes no sense. The C++ compiler stack is part of GCC, and the C++ portions of
the compiler make up such a small percentage of the complexity of the rest of the stack as to
be not worthy of mentioning. Plus, I'm fairly sure (might be wrong) that the current versions
of GCC have merged the C and C++ parsers.
The complexity of C++ does not mean that you get huge, unwieldly compilers. It just means
that you have trouble implementing the spec 100% accurately. It's no different some a
protocol like HTTP. HTTP (esp v1.1) is actually pretty hard to get fully implemented
correctly. A lot of HTTP servers get it wrong, as do a lot of clients, and thus there are
certain combinations of HTTP server and client that just don't work together. Despite this, a
fully correct HTTP server or client implementation is still pretty short, sweet, and easy to
read. HTTP doesn't force ugly code, it's just not as simple a protocol as one might think it
is. You can think of C++ the same way. It doesn't require that much extra effort on top of C
to write a compiler for, but it trying to make sure you cover 100% of the spec is harder than
you might think given how very little C++ adds to the C language.