C++0x, the long awaited final draft of the next version has been agreed which means the final standard should be with us by the summer. What's in it for the average C++ programmer?
The ISO C++ committee has reached the final draft stage of the next version of the C++ language, known as C++0x. The only remaining step is to update the final draft and submission to the ITTF which means that the standard should be ready to go some time in the summer of 2011.
As with all language standard, the major compilers GCC and Visual C++ already include most of the major features, but now with the standard complete they can finish the job. The last C++ standard was issued in 2003 and it has taken eight, some would say long, years to complete the latest.
So what is C++0x all about?
There are a few technical enhancements that make it possible to do things that you probably never noticed you couldn't do in earlier versions such as Rvalue reference and move semantics and constant expressions. Then there are the more obvious headline grabbers such as: Initializer lists, type inference, a for each loop, lambda functions and expressions, and strongly typed enumerations. Of these the availablity of lambda functions is likely to bring about the biggest change in programming style but who knows?
There are also lots of other minor improvement - not so minor if they represent a solution to your pet C++ hate - but in general the changes are intended to make the language features work better together rather than introduce "programmer candy".
However looking at the new features in C++0x you cannot help but compare it to C# which has acquired most of the new features in C++0x in a fraction of the time. Is this the overhead of designing languages by committee?
Bjarne Stroustrup's FAQ
ISO C++ committee's website