newsfilter.io
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.