The C++11 Standard Library Additions
A language standard does not reliably finish on the schedule its early planning suggests; the source explicitly notes that overly optimistic completion dates are common in large projects.
Predicting How Long a Standard Takes
Many learners picture a programming language standard as a document written in one focused effort, given a release year, and then simply published. Under that picture, a project that begins in one year should finish within a predictable and fairly short window. This article tests that belief against the history of C++ standardization, because the history shows a different pattern.
What do you think happens?
Work on the revised standard that became C++11 began in 2002, and the standard was formally approved in 2011. How many years did that process take?
Reveal answer
About 9 years (2011 minus 2002).
A standard that starts in one year and is approved nearly a decade later is not following the short, predictable window the naive picture suggests. Keep this gap in mind as you read the rest of the timeline.
Why Completion Dates Slip
A language standard does not reliably finish on the schedule its early planning suggests. The source explicitly notes that overly optimistic completion dates are common in large projects. In the C++ case, the revision was set a completion date during its development period, and that date was too optimistic.
Tracing the Dated Milestones
The standardization history can be read as an ordered list of dated events. It starts with the 1998 ISO C++ standard. In 2002, work on a revised standard began, and the colloquial name for that revision was C++0x. In 2003, a bug fix revision of the ISO C++ standard was issued. In 2006, an ISO C++ Technical Report on Performance was issued. Later, C++11 was formally approved in 2011. In 2012, work on future ISO C++ standards, referred to as C++14 and C++17, started. In 2013, the first complete C++11 implementations emerged.
Measuring the Gap Between Start and Approval
How many years separate the start of work on the revised standard from its formal approval?
- 1Find the start
Work on the revised standard began in 2002.
- 2Find the approval
C++11 was formally approved in 2011.
- 3Subtract
2011 minus 2002 gives 9.
The revision took about 9 years from start of work to formal approval. Notice that the 2003 and 2006 outputs fall inside this window, so the standardization effort produced several dated results before the final approval.
From C++0x to C++11
C++0x and C++11 are not two separate languages that happen to be related. C++0x was the colloquial working name used while the revised standard was being developed, beginning in 2002. Once the standard was formally approved in 2011, the final name became C++11. The development name and the final name therefore refer to the same effort, viewed at two different stages.
Technical Reports as Side Outputs
The standardization history includes more than the revised standard itself. Technical Reports are separate outputs connected to the standardization work. They address specific concerns or introduce specific pieces of work, and they are not the revised standard itself. The two Technical Reports named in the source show two different roles.
The diagram groups the outputs by kind. The full revised standard is the main result. Technical Reports sit alongside it as separate outputs, and the source describes them as lighter-weight routes for particular work. Because the 2003 report's components were later absorbed into C++0x, that report came first and fed into the revision.
Mistakes When Reading the Timeline
Common mistake Assuming a standard finishes shortly after its work begins
What it looks likeReading that work began in 2002 and expecting approval within a year or two.
Why it failsThe revision was approved in 2011, about nine years after work began, and the source says early completion dates are often overly optimistic in large projects.
Do this insteadRead the start and finish dates together, and treat early schedules as estimates that can slip.
Common mistake Treating C++0x and C++11 as two different languages
What it looks likeLooking for a C++0x language reference separate from C++11.
Why it failsC++0x was the working name for the revision during development, and C++11 is the final name for that same revision.
Do this insteadMap C++0x to the revision as it stood before approval, and C++11 to the same revision after approval.
Common mistake Treating every dated output as the revised standard
What it looks likeCounting the 2006 performance report as a version of C++11.
Why it failsTechnical Reports are separate outputs connected to the standardization work, and the 2006 report addressed cost, predictability, and techniques rather than being the revised standard.
Do this insteadClassify each dated item as either the revised standard or a separate Technical Report before comparing them.
Common mistake Confusing the 2013 implementations with the 2011 approval; approval fixed the standard, and implementations appeared later.
Recording the Revisions Side by Side
Revisions are easier to keep straight when you compare what the source actually records about each one. The table lists only the facts the source gives, so you can see where the record is detailed and where it is silent.
| Year | Output or event | Kind | Name used |
|---|---|---|---|
| 1998 | ISO C++ standard | Standard | ISO C++ |
| 2002 | Work on revised standard begins | Development | C++0x |
| 2003 | Bug fix revision of ISO C++ standard | Standard revision | ISO C++ |
| 2003 | Library components Technical Report | Technical Report | Introduced regular expressions, hash tables, resource management pointers |
| 2006 | Performance Technical Report | Technical Report | Cost, predictability, techniques |
| 2011 | Revised standard formally approved | Standard | C++11 |
| 2012 | Work on future standards starts | Development | C++14 and C++17 |
| 2013 | First complete C++11 implementations | Adoption | C++11 |
Dated revisions and outputs as recorded in the source. Blank or missing details reflect what the source does not state.
Practice Reading the Timeline
Using only the milestones in this article, list which dated items are the revised standard itself and which are separate Technical Reports. Then state how many years passed between the start of work on C++0x and the 2011 approval, and explain why the approval date does not tell you the original planned completion date.
Hints
- Sort items by whether they are the revised standard, a bug fix revision, or a Technical Report.
- Subtract the 2002 start year from the 2011 approval year.
- The source says the completion date was too optimistic but does not record the original planned date.
Key Takeaways
- A language standard does not reliably finish on the schedule its early planning suggests, and overly optimistic completion dates are common in large projects.
- The C++ standardization history runs from the 1998 ISO C++ standard through the 2013 implementations of C++11, with work starting on the revision in 2002 and approval arriving in 2011.
- C++0x was the working name for the revision during development, and C++11 is the final name for the same effort after formal approval.
- Technical Reports are separate, lighter-weight outputs connected to the standardization work, such as the 2003 library report and the 2006 performance report, and they are not the revised standard itself.