Compiler support for C++23 - cppreference.com (original) (raw)
* - hover over a cell marked with the star * to see additional pop-up notes.
DR_nn_ - the number nn after "DR" denotes target C++ revision the Defect Report is applied to, e.g., DR20 → C++20.
C++23 feature
Paper(s)
12 (partial)*
14*
19.34*
<stdatomic.h> (FTM)*
12
15
19.31*
14.0.3*
11
12
19.30*
13.0.0*
std::basic_string::contains(), std::basic_string_view::contains() (FTM)*
11
12
19.30*
13.0.0*
11
13
19.30*
13.1.6*
Relaxing requirements for time_point<>::clock
N/A
N/A
N/A
N/A
Providing size feedback in the Allocator interface (FTM)*
15
19.30*
14.0.3*
: string-stream with std::span-based buffer (FTM)*
12
19.31*
std::out_ptr(), std::inout_ptr() (FTM)*
14
19
19.30*
constexpr type_info::operator==() (FTM)*
12
17
19.33**
19.34*
15.0.0*
Iterator pair constructors for std::stack and std::queue (FTM)*
12
14
19.31*
14.0.3*
Non-deduction context for allocators in container deduction guides
12*
13*
19.31**
13.1.6**
ranges::starts_with() and ranges::ends_with() (FTM)*
17 (partial)*
18
19.31*
16.0.0*
Prohibiting std::basic_string and std::basic_string_view construction from nullptr
12
13
19.30*
13.1.6*
12
17
19.31*
15.0.0*
Range constructor for std::basic_string_view
11
14
19.30*
14.0.3*
Default template arguments for std::pair's forwarding constructor
14
14
19.30*
14.0.3*
Remove Garbage Collection and Reachability-Based Leak Detection (library support)
12
14
19.30*
14.0.3*
zip: views::zip, views::zip_transform, views::adjacent, and views::adjacent_transform (FTM)*
13
15 (partial)*
19.33*(partial)***
19.37*
14.0.3*
Heterogeneous erasure overloads for associative containers (FTM)*
19.32*
12
14
19.31*
14.0.3*
Printing volatile T*
11.3
14
19.31*
14.0.3*
basic_string::resize_and_overwrite() (FTM)*
12
14
19.31*
14.0.3*
Monadic operations for std::optional (FTM)*
12
14
19.32*
14.0.3*
std::move_only_function (FTM)*
12
19.32*
Add a conditional noexcept specification to std::exchange
12
14
19.25*
14.0.3*
Require std::span & std::basic_string_view to be TriviallyCopyable
Yes
Yes
Yes
Yes
Clarifying the status of the “C headers”
Yes
Yes
Yes
Yes
(FTM)*
12
16
19.33*
15.0.0*
constexpr for and (FTM)*
4.6 (partial)*
12
15
19.32*
14.0.3*
Deprecating std::aligned_storage and std::aligned_union
13
16
19.33*
std::reference_constructs_from_temporary & std::reference_converts_from_temporary (FTM)*
13 (partial)*
14
21 (partial)*
constexpr std::unique_ptr (FTM)*
12
16
19.33*
15.0.0*
Constructing containers and strings from ranges with ranges::to(), tagged constructors, insert and assign member functions (FTM)* (FTM)*
14 (partial)*
15
17
19.34*
15.0.0*
Pipe support for user-defined range adaptors (ranges::range_adaptor_closure, std::bind_back) (FTM)* (FTM)*
13 (partial)*
14
19
19.34*
ranges::iota(), ranges::shift_left(), and ranges::shift_right() (FTM)* (FTM)*
13 (partial)*
19.34*
13
19.34*
views::chunk and views::slide (FTM)* (FTM)*
13
19.33*
13
18
19.33*
16.0.0*
std::mdspan: a non-owning multidimensional array reference (FTM)*
P0009R18
P2599R2
P2604R0
P2613R1
P2763R1
17 (partial)*
18
19.39*
15.0.0*
<flat_map> (FTM)*
15
20
<flat_set> (FTM)*
15
21
ranges::find_last(), ranges::find_last_if(), and ranges::find_last_if_not() (FTM)*
13
19
19.36*
Freestanding Library: Easy , , and
13*
N/A
views::stride (FTM)*
13
19.34*
Compatibility between std::tuple and tuple-like objects (FTM)*
14
2.9 (partial)*
19.36* (partial)*
19.37*
partial*
Rectifying constant iterators, sentinels, and ranges. views::as_const (FTM)*
13
19.35* (partial)*
19.36*
Formatting Ranges (FTM)*
15 (partial)*
15.2
16
19.37*(partial)*
19.39*(partial)*
19.41*(partial)*
19.42*
15.0.0*
Improve default container formatting (FTM)*
15
16 (partial)*
17
19.42*
15.0.0*
Formatted output library (FTM)*
14
17 (partial)*
18
19.37*
15.0.0**
16.0.0*
Formatting std::thread::id and std::stacktrace (FTM)*
14
17 (partial)*
19.38*
15.0.0*
constexpr for integral overloads of std::to_chars() and std::from_chars() (FTM)*
13
16
19.34*
15.0.0*
ranges::contains() and ranges::contains_subrange() (FTM)*
13
18 (partial)*
19
19.34*
16.0.0**
13
19.35*
views::cartesian_product (FTM)*
13
19.37*
Adding move-only types support for comparison concepts (equality_comparable, totally_ordered, three_way_comparable) (FTM)*
19.36*
Ranges iterators as inputs to non-ranges algorithms (FTM)*
19.34*
constexpr std::bitset (FTM)*
13
16
19.34*
15.0.0*
16
19.34*
15.0.0*
13
16
19.34*
15.0.0*
Standard Library Modules (FTM)*
15*
17 (partial)*
19.35*
(partial)*
19.36*
14
16
19.34*
15.0.0*
Support exclusive mode for std::fstream (FTM)*
12
18
19.36*
16.0.0*
views::repeat (FTM)*
13
17
19.36*
15.0.0*
Relaxing range adaptors to allow for move-only types (FTM)*
14
17
19.34*
15.0.0*
std::basic_string_view range constructor should be explicit
12.2
16
19.34*
15.0.0*
std::generator: synchronous coroutine generator for ranges (FTM)*
14
19.43*
Add a conditional noexcept specification to std::apply
10
18
19.34*
16.0.0*
Explicit lifetime management (std::start_lifetime_as) (FTM)*
Clarify handling of encodings in localized formatting of chrono types (FTM)*
15*
19.34**
std::move_iterator should not always be input_iterator (FTM)*
12.3*
17*
19.34**
15.0.0*
Deduction guides update for explicit object parameter call operators
14
19.34*
Deduction guides update for static operator()
13
16
19.39*
15.0.0*
Standard names and library support for extended floating-point types
13
19.37**
Monadic operations for std::expected (FTM)*
13
17
19.36*
15.0.0*
13
19.37*
std::is_implicit_lifetime (FTM)*
20
std::common_reference_t of std::reference_wrapper should be a reference type (FTM)* (FTM)*
19.37*
Disallowing user specialization of std::allocator_traits
19
19.37*
Deprecating std::numeric_limits::has_denorm
18
19.37*
16.0.0*
Making Multi-Param Constructors Of views explicit
17 (partial)*
19.36**
15.0.0*
DR20: Relaxing Ranges Just A Smidge (FTM)*
15
20
19.37*
DR20: Stashing Stashing Iterators For Proper Flattening
14
18
19.37*
DR17: std::visit() for classes derived from std::variant (FTM)*
11.3
13
19.20**
19.30*
13.1.6*
DR20: Conditionally borrowed ranges
11
16
19.30*
DR20: Repairing input range adaptors and std::counted_iterator
12
19.30*(partial)*
19.31*
DR20: views::join should join all views of ranges
11.2
15
19.30*
14.0.3*
DR20: view does not require default_initializable (FTM)*
11.3
16
19.30*
15.0.0*
DR20: Range adaptor objects bind arguments by value
11
14
19.29 (16.10)*
(partial)*
19.31*
14.0.3*
DR20: constexpr for std::optional and std::variant (FTM)* (FTM)*
11.3 (partial)*
12
13 (partial)*
19
19.31*
13.1.6* (partial)
DR20: views::lazy_split and redesigned views::split
12
16
19.31*
15.0.0*
DR20: Fix ranges::istream_view
12
16
19.31*
15.0.0*
DR20: view with ownership (FTM)*
12
14
19.31*
14.0.3*
DR20: Fixing locale handling in chrono formatters (FTM)*
13
19.31*
DR20: Cleaning up integer-class types
19.32*
DR20: Compile-time format string checks; Reducing binary code size of std::format() family (FTM)*
13
14 (partial)*
15
19.32*
14.0.3*
DR20: Add support for non-const-formattable types to std::format
13
15
19.32*
14.0.3*
DR20: std::basic_format_string
13
15
19.35*
14.0.3*
DR20: Poison Pills are Too Toxic (FTM)*
14
19
19.36*
DR20: std::format fill character allowances
14
17
19.37*
DR20: Improving std::format's width estimation
14
17
19.38*
DR20: std::barrier's phase completion guarantees (FTM)*
19.28 (16.8)**
19.36*
C++23 feature
Paper(s)