Yesterday, on March 25, 2011, the C++ standards committee signed off on the final draft of C++0x, the upcoming major revision to C++.
After a month or so of editorial changes, proofreading and integration of the last changes into the draft, it will be sent off for all the national bodies of ISO to vote on, and then we will officially have a much-needed refresh of C++. Barring any major surprises, the process should finish later this year, officially turning C++0x into C++11.
Of course, many new features of C++0x are already available in various compilers, but later this year, all of them will become official.
I don’t have much more to add, other than to say a big thank you to the brilliant people who have spent an awful lot of their time over the last 11 – 12 years to make this happen. Of course, there have been a lot of casualties along the way (three “core” features were originally envisioned for C++0x: an optional garbage collector, concepts, and language-level support for threading. Of those, only the third survived, although the two others may still make it into future revisions), but overall, C++0x is a huge improvement to the language. Just a few of the features I am excited about:
- lambda expressions
- threading support
- rvalue references/move semantics
- variadic templates
- static assertions
- and of course, all the library additions: hash tables, regular expressions, type traits, tuples and many others.