What is the difference between C++0x and C++11?
I see mixed usage of these two terms here on SO.
Wikipedia says
C++11, also formerly known as C++0x ...
but I am not sure why.
- Why was it first called C++0x and then C++11?
- Also, what does the x stand for? My guess - like a variable?
C++ and C Standards are usually named after the year they are published in, which makes it easier to remember by.
For example, in C++, the original Standard was published in 1998, so we talk about C++98, and when we refer to its first correction, published in 2003, we talk about C++03.
It had been purported that the next Standard after would be done for 2008, but since it was uncertain, it was dubbed C++0x, where the x
stood for either 8 or 9. In practice though, as we all know, the planning shifted and so we end-up with C++11.
Still, for the next version (C++1x), Bjarne Stroustrup stated his intent to do it in 5 years (so about 2016). For now, there are changes envisionned to the core language (concepts, modules and garbage collection), and the focus seems to be more on extending the library (filesystem for example), but it's still early so who knows!
C++0x was the name for the standard before it was released / finalized. Once it was finalized (in the year 2011), we were able to name it properly. That is, C++11.
Because the standard was planned to be released / approved in 200x
, but actually was approved in 2011
.
When work began on the new standard, in 1998 or so, no-one knew which year it would be finalised in - so the "x" stood for an unknown year, and a hope that it would be finalised within ten years or so.
In the end, it was finalised in 2011, and so the standard is now known colloquially as C++11, and officially as ISO/IEC 14882:2011.
Now that that standard is official, work is continuing on the next; again, no-one knows when that will be done, but it's hoped that it will take less than a decade, and so it's colloquially known as C++1x.