From cppreference.com
* - hover over a cell marked with the star * to see additional pop-up notes.
DRnn - the number nn after "DR" denotes target C++ revision the Defect Report is applied to, e.g., DR20 → C++20.
C++20 core language features
C++20 featurePaper(s)GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Allow
[=,this]
8 6 19.22*10.0.0*5.1 2021.1 20.7 12.0 11.0
8 (partial)*
10 (partial)*
12 9 19.25*11.0.3*5.1 2021.1 20.7 12.0 11.0
(
)*
4.7 (partial)*
8 3.0 (partial)*
10 19.21*12.0.0*5.1 2021.1 20.7 12.0 11.0
template-parameter-list for generic lambdas
(
)*
8 9 19.22*11.0.0*5.1 2021.1 20.7 12.0 11.0
Default member initializers for bit-fields
8 6 19.25*10.0.0*5.1 2021.1 20.7 12.0 11.0 Initializer list constructors in class template argument deduction
8 6 19.14*Yes 5.0 2021.1 20.7 12.0 11.0 const&-qualified pointers to members
8 6 19.0 (2015)*10.0.0*5.1 2021.1 20.7 12.0 11.0
(
)*
5*
10 10 19.23*(partial)*
19.30*12.0.0* (partial) 6.1 2023.1*20.11 12.0 11.0
Lambdas in unevaluated contexts
9 13 (partial)*
14 (partial)*
17 19.28 (16.8)*13.1.6* (partial) 6.2 2023.1 (partial)
2024.0 20.7 12.0
operator (
)*
10 8 (partial)
10 19.20*12.0.0*5.1 2021.1 20.7 12.0 11.0 DR11: Simplifying implicit lambda capture
8 19.24*5.1 2021.1 20.7 12.0
init-statements for range-based for
9 8 19.25*11.0.0*6.0 2021.7 20.11 12.0 11.0 Default constructible and assignable stateless
9 8 19.22*10.0.1*5.1 2021.1 20.7 12.0 11.0 Type mismatch of defaulted special member functions
9 (partial)*8 19.0 (2015)*(partial)*10.0.1*5.1 2021.1 20.7 12.0 11.0 Access checking on specializations
Yes 8 (partial)
14 19.26*14.0.0*5.1 2021.1 20.7 12.0 ADL and function templates that are not visible
9 9 19.21*11.0.3*5.1 2021.1 20.7 12.0 11.0 DR11: Specify when constexpr function definitions are
needed for constant evaluation
(
)*
5.2 (partial)*
9 8 19.27* (partial)*
19.31**11.0.0*(partial) 12.0 11.0 Attributes [[
]] and [[
]]
9 12 19.26*13.0.0*5.1 2021.7 20.7 12.0 Make
more optional
9 16 19.29 (16.10)*16.0.0*5.1 2023.1 20.7 12.0
in
(
)*
9 9 19.22*11.0.3*6.1 2021.7 20.11 12.0 11.0 Attribute [[
]]
9 9 19.28 (16.9)**11.0.3*5.1 2021.1 20.7 12.0 11.0 Conditionally trivial special member functions (
)*
10 16 19.28 (16.8)*6.1 2021.7 20.11 12.0 DR17: Relaxing the
customization point finding rules
8 8 19.20*10.0.1*5.1 2021.1 20.7 12.0 11.0 DR11: Relaxing the
loop customization point finding rules
8 8 19.25*11.0.0*5.1 2021.1 20.7 12.0 11.0 DR17: Allow structured bindings to accessible members
8 8 19.20*10.0.1*5.1 2021.1 20.7 12.0 11.0
(
)*
9 6 19.27*10.0.0*6.1 2023.1 20.11 12.0 11.0 Class types in
9 12 (partial) 19.26*(partial)*
19.28 (16.9)*13.0.0* (partial) 6.2 2023.1 (partial) 21.3 12.0 Deprecate implicit
of this via [=]
9 7 19.22*10.0.1*5.1 20.7 12.0 11.0
(
)*
9 9 19.24*11.0.3*5.1 2021.1 20.7 12.0 11.0 Integrating
5 3.4 19.15* (partial)
19.20*Yes 5.0 2021.1 20.7 12.0 11.0 Prohibit aggregates with user-declared constructors
9 8 19.20*10.0.1*5.1 2021.1 20.7 12.0 11.0 constexpr
(
)*
9 9 19.28 (16.9)*11.0.3*5.1 2021.1 20.7 12.0 11.0 Consistency improvements for comparisons
10 8 (partial)
10 19.22*12.0.0*5.1 2023.1 20.7 12.0 11.0
(
)*
9 7*19.22*10.0.0*5.1 2021.1 20.7 12.0 11.0
(
)*
9 9 19.25*11.0.3*5.1 19.1 21.1 12.0 11.0 constexprtry-catch blocks
9 8 19.25*10.0.1*5.1 2023.1 20.7 12.0 11.0
(consteval) (
)*
10 (partial)*
11 11 (partial)
14 (partial)*
17 19.28 (16.8)*
(partial)*
19.29 (16.10)*11.0.3* (partial)
15.0.0*5.1 2021.1 20.7 12.0
9 8 19.27*10.0.1*5.1 2021.1 20.7 12.0 11.0 Yet another approach for
10 10 19.26* (partial)
19.28 (16.9)*12.0.5*6.1 2023.1 20.11 12.0 11.0 Signed integers are two's complement
9 9 Yes 11.0.3*N/A2023.1*yes*12.0 11.0
and polymorphic
in
10 9 19.28 (16.9)*11.0.3*5.1 2021.1 20.7 12.0 11.0 Changing the active member of a union inside constexpr (
)*
9 9 19.10*11.0.3*5.1 2021.1 20.7 12.0 11.0
(
)* (
)*
10 8 (partial)
17 (partial)*19.0 (2015)* (partial)
19.10**
19.28 (16.8)*10.0.1* (partial) 5.1 2021.1 23.3*12.0 (host code only) Parenthesized
(
)*
10 16 19.28 (16.8)*16.0.0*5.1 2021.1 20.7 12.0 DR11: Array size deduction in
11 9 19.27*11.0.3*5.1 2021.1 20.7 12.0 11.0
(
)*
11 (partial) 8 (partial) 19.0 (2015)* (partial)
19.10**
19.28 (16.8)*10.0.1* (partial) 2023.1 (partial) Stronger Unicode requirements
10 Yes 19.0 (2015)**
19.26**Yes N/A2023.1*Yes 12.0 11.0 <=> != ==
10 10 19.22*12.0.0*5.1 2021.1 20.7 12.0 11.0 DR11: Explicitly defaulted functions with different exception specifications
10 9 19.28 (16.8)*11.0.3*5.1 2021.1 20.7 12.0 11.0 Lambda capture and storage class specifiers of structured bindings
10 8 (partial)
16 19.11**
19.24**16.0.0*5.1 2021.1 20.7 12.0 Permit conversions to arrays of unknown bound
10 14 19.27*14.0.0*6.0 2021.5 20.11 12.0 constexpr container operations (
)*
10 10 19.28 (16.9)*12.0.0*6.0 2021.5 20.11 12.0 11.0 Deprecating some uses of
10 10 19.27*12.0.0*6.0 2021.5 20.11 12.0 11.0
(
)*
10 10 19.29 (16.10)*12.0.0*6.1 2021.7 20.11 12.0 11.0
Deprecate comma operator in subscripts
10 9 19.25*11.0.3*6.0 2021.7 20.11 12.0 11.0 [[
]] with message
10 9 19.25*11.0.3*6.0 2021.5 20.11 12.0 11.0 Trivial default initialization in constexpr functions
10 10 19.27*12.0.0*6.1 2021.7 20.11 12.0 11.0 Unevaluated asm-declaration in constexpr functions
10 10 19.28 (16.9)*12.0.0*6.1 2021.7 20.11 12.0 11.0
(
)*
11 13 19.24*13.1.6*6.3 2023.1 22.5 12.0 Synthesizing
for specified comparison category
11 10 19.24*12.0.0*6.0 2021.5 20.11 12.0 11.0 DR17: [[
]] for constructors
10 9 19.24*11.0.3*6.0 2021.5 20.11 12.0 11.0
class template argument deduction
for alias templates (
)*
10 19 19.27*6.5 23.9 12.0
class template argument deduction
for aggregates (
)*
10*
11*17 19.27*6.3 2023.1 (partial)*
2024.1 23.3 12.0 DR11:
for more local objects and rvalue references
11*13 19.24*13.1.6*6.0 2021.5 20.11 12.0 Allow defaulting comparisons by value
10 10 19.25*12.0.0*6.1 2021.7 20.11 12.0 11.0 Remove std::weak_equality and std::strong_equality
10 10 19.25*12.0.0*6.1 2021.7 20.11 12.0 11.0 Inconsistencies with non-type template parameters (
)*
10 (partial)
11 18 (partial)*19.26*13.1.6* (partial) 6.2 2023.1 (partial) 21.3 12.0 DR98: Pseudo-destructors end object lifetimes
11 11 Yes 12.0.5*N/A2023.1*Yes 12.0 11.0 DR11: Converting from T* to bool should be considered narrowing
10*
11*11 19.27*12.0.5*6.1 12.0 11.0 C++20 feature
Paper(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
C++20 library features
C++20 featurePaper(s)GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
(
)*
8 7 19.22*10.0.0*Extending
to support arrays (
)*
12 15 19.27*14.0.3*
(
)*
10 18 19.22*16.0.0*
(
) (
)*
11 18 19.29 (16.10)*constexpr for
and
(
)*
10 8 (partial)
12 19.26*10.0.1* (partial)
13.0.0*More constexpr for
(
)*
9 7 (partial)
16 19.27*10.0.0* (partial)
15.0.0*Make
a scoped enumeration
9 9 19.25*11.0.3*
and
checking:
/
(
)*
9 6 19.21*10.0.0*Library support for
(
)*
10 7 (partial)
12 (partial)*
17 19.20* (partial)
19.28 (16.9)*13.0.0*
(
)*
9 6 19.20*10.0.0*[[
]] in the
9 7 (partial)
16 19.13* (partial)
19.22*10.0.0* (partial)
15.0.0*Using
in
9 12 19.23*13.0.0*
to convert a pointer to a raw pointer (
)*
8 6 19.22*Yes Atomic
and
(
)*
12 19.27*
(
)*
10 7 19.26*10.0.0*
and
(
)*
11 (partial)*
13 (partial)*
14 7 (partial)
19 (
)*19.29 (16.10)*10.0.0* (partial)
9 7 19.22*10.0.0*Comparing unordered containers
Yes Yes 16.0*Yes
requirements (
)* (
)*
9 12 19.11*13.0.0*
should not shrink
11 8 19.25*10.0.1*
with padding bits
13 19.28 (16.8)*
(
)*
10 19 19.28 (16.8)*16.0.0*contains() member function of associative containers, e.g.
9 13 19.21*13.1.6*DR11: Guaranteed copy elision for
9 Yes 19.29 (16.10)*Yes
(
)*
11 14 19.27*14.0.3*
Integral power-of-2 operations
:
,
,
,
(
)*
9*
10*9*
12*19.25**
19.27**
19.28 (16.8)*11.0.3**
13.0.0**Improving the return value of erase-like algorithms (
)*
9 10 19.21*12.0.0*
(
)*
9 9 19.27*11.0.3*
(
)*
9 9 19.23*11.0.3*Add
to
(
)*
10 12 (partial)*19.21*13.0.0*(partial)*Constexpr for
and swap related functions
10 13 19.26*13.1.6*
(
)*
9 8 19.21*10.0.1*
(
)*
10 13 19.23*13.1.6*constexpr
for
10 8 19.27*10.0.1*
std::unwrap_ref_decay and std::unwrap_reference
(
)*
9 8 19.21*10.0.1*
(
)*
9 13 19.25*13.1.6*
for incomplete types
9 8 19.26*10.0.1*Fixing
operator>>(basic_istream&, CharT*)
11 8 19.23*10.0.1*Library support for
(
)*
9 8 (partial)
16 19.22*10.0.1* (partial)
15.0.0*
to implement
9 16 19.29 (16.10)*15.0.0*DR17:
and
should propagate copy/move triviality
8.3 8 19.11*10.0.1*DR17: A sane
converting constructor
10 9 19.29 (16.10)**
19.42**11.0.3*
's move constructor should be
7.2 6 19.22*Yes The
(
)*
10 13 (partial)
15*19.29 (16.10)*14.0.3*Heterogeneous lookup for
unordered associative containers
(
)*
11 12 19.23* (P0919R3)
19.25* (P1690R1) 13.0.0*
zero(), min(), and max() should be
9 8 19.14*10.0.1*constexpr in
(
)*
9 8 19.26*10.0.1*
(
)*
9*
11 15 19.28 (16.9)*14.0.3*Smart pointer creation with default initialization (e.g.
) (
)*
11*
12*16 19.28 (16.9)*15.0.0*Misc constexpr bits (
)* (
)* (
)* (
)* (
)* (
)*
10 13 19.28 (16.8)*13.1.6*Remove comparison operators of
10 8 19.26*10.0.1*Make stateful allocator propagation more consistent for
10 15 19.26*14.0.3*Consistent container erasure, e.g.
, or
(
)*
9*
10*8*
11*19.25**
19.27**10.0.1**
12.0.5**Standard library header units
11 19.29 (16.10)*
as a vocabulary type (
)*
9 16 19.28 (16.9)*15.0.0*
(
)*
9 17 19.28 (16.8)*
and
(
)*
9 9 19.23* (partial)
19.28 (16.8)*11.0.3*Usability enhancements for
10 9*
14 19.26*11.0.3*DR17: Make
intuitive
8.3 12 19.20*13.0.0*
and unsigned extent for
(
)*
10 9 19.25*11.0.3*Traits for (
)
arrays (
)*
9 9 19.25*11.0.3*
(
)*
10 10 19.25*12.0.0*Efficient access to
’s buffer
11 17 19.29 (16.10)*15.0.0*
-
and
-
traits (
)* (
)*
12 19.29 (16.10)**
: std::
,
,
,
,
,
,
(
)*
9 9 19.25**
19.28 (16.8)*11.0.3*
(
)*
10 11 19.25*12.0.5*
(
)*
13 14**
17 19.29 (16.10)*15.0.0*
and
(
)*
10 17
(partial)*
20*19.28 (16.9)*constexpr
and related utilities (
)*
10 12 19.29 (16.10)*13.0.0*constexpr
(
)*
12 15 19.29 (16.10)*
19.30**14.0.3*constexpr
(
)*
12 15 19.29 (16.10)*
19.30**14.0.3*Input
10 16 19.29 (16.10)*15.0.0*constexpr
and related utilities
10 12 19.28 (16.8)*13.0.0*Atomic waiting and notifying,
,
and
(
)* (
)* (
)* (
)* (
)* (
)*
11 11 19.28 (16.9)*13.1.6*
(
)*
11 15*
(partial)
16 19.29 (16.10)*15.0.0*Adding
to the standard library
10 14*
(partial)
17*
(partial)
19 19.29 (16.10)*13.1.6* (partial) constexpr default constructor of
and
(
)*
10 13 19.26*13.1.6*constexpr for
(
)*
10 12 19.26*13.0.0*
(
)*
10 13 19.27*13.1.6* C++20 feature
Paper(s)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*