Evolution

Everything related to standardization and evolution of C++

C++ is standardized in ISO/IEC 14882. This standard is developed and maintained by ISO/IEC JTC 1/SC 22/WG 21, commonly called WG21 or the C++ standards committee. Participating national standards bodies appoint experts to WG21.

Let's break it down:

  • ISO/IEC — the International Organization for Standardization and the International Electrotechnical Commission.
  • JTC 1 — their Joint Technical Committee 1, responsible for information-technology standards.
  • SC 22 — its subcommittee for programming languages, their environments, and system software interfaces.
  • WG 21 — the working group responsible for C++.

Technical work is primarily conducted through papers, which are reviewed and discussed at regular in-person meetings and telecons throughout the year. Changes are formally adopted into the working draft by plenary vote, while proposals may progress through subgroups between meetings.

WG21 consists of compiler and library implementers, users and experts from many domains alike.

Standards timeline

Key changes by language version. Drafts are public working documents close to each published edition; the ISO publications themselves may differ and are not freely distributed

  1. Not published
  2. Not published
    Enquiry

    C++26

    • Reflection
    • Contracts
    • std::execution (senders and receivers)
    • Pack indexing
    • Library hardening
    • std::inplace_vector and std::hive
    • Hazard pointers and read-copy update (RCU)
  3. October 2024
    Published as ISO/IEC 14882:2024

    C++23

    • Explicit object parameters
    • if consteval
    • Multidimensional subscript operator
    • std::expected
    • std::print
    • std::mdspan
    • std::generator and additions to the ranges library
  4. December 2020
    Published as ISO/IEC 14882:2020

    C++20

    • Concepts
    • Ranges
    • Coroutines
    • Modules
    • Three-way comparison
    • std::format, std::source_location and std::span
    • Designated initializers
  5. December 2017
    Published as ISO/IEC 14882:2017

    C++17

    • Structured bindings
    • if constexpr
    • Fold expressions
    • Class template argument deduction
    • std::filesystem
    • std::optional, std::variant, and std::any
    • Parallel algorithms
  6. December 2014
    Published as ISO/IEC 14882:2014

    C++14

    • Generic lambdas
    • Function return type deduction
    • Variable templates
    • Relaxed restrictions on constexpr functions
    • Binary literals and digit separators
    • std::make_unique
  7. September 2011
    Published as ISO/IEC 14882:2011

    C++11

    • Move semantics and rvalue references
    • Lambdas and auto
    • constexpr
    • Variadic templates
    • Range-based for
    • Smart pointers
    • Threads, atomics, and the memory model
  8. October 2003
    Published as ISO/IEC 14882:2003

    C++03

    • Value initialization
    • Core-language defect resolutions
    • Standard-library defect resolutions
  9. September 1998
    Published as ISO/IEC 14882:1998

    C++98

    • Templates
    • Standard Template Library
    • Exceptions
    • Runtime type information
    • Namespaces

Resources

Links to C++ standardization resources and documentation

Paper status

When papers progress through groups, the paper status is updated in this repository

wg21.org

A volunteer resource by the C++ Alliance with an improved mailing view

Related standards

Other standards and specifications referenced by the C++ standard or related to it