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
- Not publishedIn development
C++29
The version of C++ currently being worked on by the committee
- Not publishedEnquiry
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)
- October 2024Published 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
- December 2020Published as ISO/IEC 14882:2020
C++20
- Concepts
- Ranges
- Coroutines
- Modules
- Three-way comparison
- std::format, std::source_location and std::span
- Designated initializers
- December 2017Published 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
- December 2014Published 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
- September 2011Published 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
- October 2003Published as ISO/IEC 14882:2003
C++03
- Value initialization
- Core-language defect resolutions
- Standard-library defect resolutions
- September 1998Published as ISO/IEC 14882:1998
C++98
- Templates
- Standard Template Library
- Exceptions
- Runtime type information
- Namespaces
Resources
Links to C++ standardization resources and documentation
C++ Standard Working Draft
Latest draft standard LaTeX sources
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
ISO C working group (WG14)
Documents and papers of WG14, the C committee