This is a personal opinion, but one based on experiences since the first C++ compiler became available.
C++ was originally and continues to be a a programming language for research. It has been and is the test bed for new concepts and ways of implementing them. In the real world, the behavior of C++ programs is very compiler and platform dependent, unlike what happens with C.
The findings from the research in C++ are readily incorporated into other mainstream languages in less risky ways, and C++ (STL, BOOT) remains an experimental, hard to learn, and hard to scale programming languange.
Bjarne Stroustrup, the creator of C++, has stated that C++ was an experiment in designing a better C with OO support [reference needed]. The standardization effort for C++ was a long and painful one, with a result that satisfied none of the parties involved.
The introduction of generics through macro replacement in a statically-typed and compiled language was one of the largest mistakes made in the design of C++. It took years of errors, and the STL effort to have a generics library that was somewhat usable, and it still takes years of study to become productive with the standard library. Problems that had been theoretically and practically solved in languages like Eiffel and ML were reinvented for C++ only to spend years trying implement solutions over ill-born designs. The experience of having hundreds of errors being reported for a missing colon in a generic class declaration is one that any programmer can spare.
To ultimately judge C++, its role, and it's future, one would have to consider Objective-C, which is everything C++ was supposed to be, but without the history of traumas.
Delivering projects over C++ continues to be so painful that the benefits attributed to the language gets eclipsed into irrelevance, more so when one can always resource to old, tried, and trusted plain C.