But part of me also wants to put C++ on life support, and simply devote all time to the improvement of D (akin to temporarily moving Python 2.x forward until Python 3 is more mature).
But part of me also wants to put C++ on life support, and simply devote all time to the improvement of D (akin to temporarily moving Python 2.x forward until Python 3 is more mature).
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.
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.
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.
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.
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).
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>
I hear eclipse is pretty decent.
Microsoft supports C++ in Visual Studio because it's what Windows and all of its applications are written in.