The ANSI and ISO Standardization Efforts
The standardization effort had groundwork before the committees began their work.
When one language gets several meanings
Imagine two companies building compilers for the same language. If each compiler interprets some details differently, a program that works with one may fail with the other. That kind of fragmentation can erode programmers’ confidence that the language has a shared meaning. The C++ Standards Committee exists to maintain and refine the language definition so implementers and users can rely on one common account of what C++ means.
Why a shared definition matters
Two companies build compilers for C++, and each quietly interprets a few language details differently. What problem can this create for programmers?
- 1Different interpretations
A program may behave as expected with one compiler but fail with the other because the compilers do not interpret the same details alike.
- 2A shared definition
A standards committee maintains and refines the language definition so implementers and users have one meaning to work from.
The committee’s work helps prevent fragmentation by maintaining a common definition of C++.
From shared drafts to an international effort
The standardization effort had groundwork before the committees began their work. AT&T Bell Labs circulated revised reference-manual drafts to implementers and other readers, including people at companies that could be considered rivals. Roughly a hundred people from dozens of organizations reviewed the drafts. Their feedback shaped the generally accepted Annotated C++ Reference Manual, or ARM, which became the base document for the ANSI standardization effort.
The committee names identify different parts of the effort. ANSI’s X3J16 committee was convened in December 1989 at Hewlett-Packard’s initiative. In June 1991, the ANSI effort became part of an ISO standardization effort, and the joint working group was named WG21. From 1990, the joint committees were the main forum for C++ evolution. The milestones continue through a public review draft in 1995, the first ISO standard in 1998, and a bug-fix release in 2003.
How proposals reach the evolution group
A language definition must be maintained, but the language also needs a way to consider proposed major changes and new features. The source describes a working group for extensions, later renamed the evolution group. That group was directly responsible for handling proposals in those areas. The joint committees served as the main forum for C++ evolution from 1990.
The 1998 standard and the 2003 release
The first ISO C++ standard was identified as ISO/IEC 14882-1998 and was ratified in 1998 by a 22–0 national vote. A bug-fix release followed in 2003. This later release is sometimes called C++03, but it is described as essentially the same language as C++98. The key distinction is that 2003 refers to a corrected release of the standard, not a newly designed language.
| Milestone | What it represents | Relationship to the language |
|---|---|---|
| 1998 | The first ISO C++ standard, ISO/IEC 14882-1998 | The standard was ratified in 1998. |
| 2003 | A bug-fix release, sometimes called C++03 | It is essentially the same language as C++98. |
The 2003 release followed the 1998 standard to correct errors, not to establish a different language.
Names and milestones to keep distinct
Common mistake Treating X3J16 and WG21 as interchangeable names.
What it looks likeCalling WG21 the ANSI committee or calling X3J16 the ISO working group.
Why it failsX3J16 names the ANSI committee; WG21 names the ISO working group that the ANSI effort joined.
Do this insteadUse X3J16 for the ANSI committee and WG21 for the joint ISO working group.
Common mistake Describing C++03 as a substantially different language from C++98.
What it looks likeAssuming the 2003 release represents a new language design.
Why it failsThe 2003 release was a bug-fix release and is described as essentially the same language as C++98.
Do this insteadDescribe it as a corrected release of the 1998 standard.
Common mistake Claiming a specific proposal approval process that is not established here.
Why it failsThe source says the evolution group handled proposals for major changes and new features, but does not set out acceptance or rejection stages.
Do this insteadState the group’s documented responsibility without adding decision steps.
When explaining standardization, separate three things: the committee names and their roles, the dates of the milestones, and what the 2003 bug-fix release means. This prevents the international working group from being confused with the earlier ANSI committee and prevents a corrected edition from being mistaken for a new language.
Check the sequence
In a few sentences, explain why C++ needed a standards committee, identify how X3J16 relates to WG21, and state what the 2003 release changed about the 1998 standard.
Hints
- Begin with the risk that different compilers interpret language details differently.
- Keep the ANSI committee name separate from the ISO working-group name.
- Describe the 2003 release as a bug-fix release and explain how it relates to C++98.
The standardization model
C++ standardization developed from widely reviewed reference-manual drafts into an ANSI effort and then a shared ISO working group. The joint committees provided a forum for language evolution, while the evolution group handled proposals for major changes and new features. The 2003 release corrected the 1998 standard without defining a substantially different language.
Key Takeaways
- A standards committee maintains and refines a language definition so implementers and users can share one meaning.
- The reviewed Annotated C++ Reference Manual became the base document for the ANSI standardization effort.
- ANSI X3J16 was convened in 1989, and the effort joined the ISO work as WG21 in 1991.
- The evolution group handled proposals for major changes and new language features.
- The 2003 bug-fix release is essentially the same language as the 1998 ISO standard.