Commercially, C++ is already on life support: it's no longer a general applications language but rather a niche language. Microsoft supports it in Visual Studio for the game industry and Intel supports it for the same as well as the HPC market. For all the rhetoric over C++ (it will either save or destroy C++ depending on who you talk to) its unlikely to make a big difference either way.
I think D is pretty cool, but it has a lot farther to go with regards to standardization as well as implementation. There is a current reddit thread going over its shortcomings:
Whether it wants to be or not, D is now in the same niche as C++, but without either the maturity or commercial support that a niche language needs to thrive. And that probably won't change now that the larger software world has moved on.
Qt and hundreds of KDE apps built on it are hardly niche. What about VLC? Gecko? WebKit? LLVM? All niche projects?
I don't know about the commercial application space, but in FOSS C++ is alive and well. And it isn't going anywhere for a long, long time.
For a new project, C++ is a much better choice than C, even if you don't use all features of the language. The compilers are faster and better than ever, and the libraries are great.
<UNRELATED>
I, for one, have never seen a decent quality desktop application written in Java. C# has better apps because C# programmers seem to prefer using Windows.Forms on Windows and GTK# on Linux. But nothing beats the speed and responsiveness of an application running on the bare metal.
</UNRELATED>
Well C++ is used in console video games, but without RTTI & exceptions, even in large cases without new/delete (but inplace new). Templates are welcome, but if overused would produce bloat.
Almost no virtual functions, or at least forbidden at many levels, STL here and there, or custom STL (EASTL for example, etc.).
The C++ that we use in our studio (for runtime code, not tools) is more like "C" - Using RAII here and here, templates, and rarely classes (mainly for RAII debuging constructs), and using just POD structures (this helps a bit when deserializing objects, especially if they need to be streamed - as in a open-world game).
> no longer a general applications language but rather a niche language
If by "niche" you mean "anywhere code has to run fast or in a small space." C++ is displacing C in embedded applications. The JIT compilers in Java and MS CLR are in C++. C++ is only growing for use in simulations, which remains a rapidly growing field.
C++ remains a good choice for GUI development, which is hardly niche.
I think it's fair to call that a "niche." C++ is a systems programming language with rich support for data abstraction, object-oriented and generic programming. Most applications don't require the kind of control over resources and the level of abstractions that C++ has.
This is progress - it used to be that the majority of programs had to consider processor and memory utilization as a primary concern.
The examples you gave are excellent examples of where it makes sense to use C++, but that's not what the majority of programming is now.
I think it really depends which lens you're looking through and which communities you're a part of. C++ is still one of the most popular languages around:
It's naturally de-emphasized in the web world, but there's still a huge amount of C++ being written. Most desktop and a large percentage of systems, mobile, scientific and embedded code is written C++. There's just relatively little cross-pollination between those worlds and the web world.
I think D is pretty cool, but it has a lot farther to go with regards to standardization as well as implementation. There is a current reddit thread going over its shortcomings:
http://www.reddit.com/r/programming/comments/93jh5/ask_progg...
Whether it wants to be or not, D is now in the same niche as C++, but without either the maturity or commercial support that a niche language needs to thrive. And that probably won't change now that the larger software world has moved on.