Don't sugar coat things. Rejection by large parts of the Open Source community is an indicator of failure.
C++ is superior to C in every respect except:
- transparency (or predictability)
The first can be fixed. C had *exactly* the same problem and we've managed to live through it.
The second is the fatal flaw. C programmers do not accept hidden costs. The fundamental C++ idea of hiding behaviors (constructors, destructors, operator overloading, etc.) in backwards compatible C syntax was a mistake.
Strangely, C++ does not have garbage collection because this is seen as a hidden cost. Manual storage management makes C++ tremendously unappealing to anyone but a C programmer -- but the other hidden costs makes C++ unappealing to C programmers too!
If C++ had used non-C syntax for the non-C parts of the language, I think it would have completely replaced C.