Interview
Bjarne Stroustrup: C++ Standards - C++03, C++11, C++14, C++17, C++20
ISO Standardization Context
- C++ is standardized under ISO rules via an open, transparent process initiated in late 1989 following pressure from IBM and HP executives.
- The drive for standardization was motivated by corporate needs to avoid reliance on a single vendor (Bjarne Stroustrup) whose organization could be acquired or dominated by competitors.
- The process operates under ANSI/ISO rules where any entity can join by paying a minimal fee (approximately $1,280), requiring no specific education or experience.
- Governance follows a "one organization, one vote" model to prevent corporate dominance, even if an organization has many delegates physically present.
- The committee currently holds three one-week meetings annually across 15–20 active national standards bodies, with additional 15–20 countries observing.
- Decision-making relies on consensus rather than majority voting to prevent language fragmentation and dialect proliferation.
Standardization Timeline and Evolution
- The first meeting occurred in late 1989 in Washington D.C. (ANSI), expanding to a global ISO framework a few years later.
- The initial C++ standard was developed between 1990 and 1998 (8 years), voted out internationally, and remained the primary reference until roughly C++11.
- C++11 took approximately 13 years to complete; the timeline exceeded expectations due to the "second system effect," where increased ambition and confidence led to scope creep.
- The standardization process faced delays from late-stage additions, such as the successful inclusion of the Standard Template Library (STL), which was critical to C++'s survival and utility.
- Subsequent standards after C++11 adopted a strict three-year release cycle (C++14, C++17, C++20) to mitigate delays and reduce the "slip" window for feature additions.
- C++14 and C++17 were shipped on schedule, with C++20 also committed to on-time delivery.
Adoption and Implementation Trends
- Compiler and library implementation speed has improved significantly with shorter cycles: C++11 took two years for widespread compiler maturity, whereas C++14 saw better adoption in one year.
- C++17 achieved near-universal compiler support by its release date, and C++20 is expected to have similar comprehensive support (with some features already shipping in 2019).
- The shift to predictable, short release cycles has allowed implementers to target specific delivery dates, reducing the risk of long-term obsolescence.
- The current goal is to ensure that "almost everybody ships almost everything" within one year of a standard's official release.