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)

Stacktrace library (FTM)*

P0881R7
P2301R1

12 (partial)*
14*

19.34*

<stdatomic.h> (FTM)*

P0943R6

12

15

19.31*

14.0.3*

std::is_scoped_enum (FTM)*

P1048R1

11

12

19.30*

13.0.0*

std::basic_string::contains(), std::basic_string_view::contains() (FTM)*

P1679R3

11

12

19.30*

13.0.0*

std::to_underlying (FTM)*

P1682R3

11

13

19.30*

13.1.6*

Relaxing requirements for time_point<>::clock

P2212R2

N/A

N/A

N/A

N/A

Providing size feedback in the Allocator interface (FTM)*

P0401R6

15

19.30*

14.0.3*

: string-stream with std::span-based buffer (FTM)*

P0448R4

12

19.31*

std::out_ptr(), std::inout_ptr() (FTM)*

P1132R8

14

19

19.30*

constexpr type_info::operator==() (FTM)*

P1328R1

12

17

19.33**
19.34*

15.0.0*

Iterator pair constructors for std::stack and std::queue (FTM)*

P1425R4

12

14

19.31*

14.0.3*

Non-deduction context for allocators in container deduction guides

P1518R2

12*

13*

19.31**

13.1.6**

ranges::starts_with() and ranges::ends_with() (FTM)*

P1659R3

17 (partial)*
18

19.31*

16.0.0*

Prohibiting std::basic_string and std::basic_string_view construction from nullptr

P2166R1

12

13

19.30*

13.1.6*

std::invoke_r() (FTM)*

P2136R3

12

17

19.31*

15.0.0*

Range constructor for std::basic_string_view

P1989R2

11

14

19.30*

14.0.3*

Default template arguments for std::pair's forwarding constructor

P1951R1

14

14

19.30*

14.0.3*

Remove Garbage Collection and Reachability-Based Leak Detection (library support)

P2186R2

12

14

19.30*

14.0.3*

zip: views::zip, views::zip_transform, views::adjacent, and views::adjacent_transform (FTM)*

P2321R2

13

15 (partial)*

19.33*(partial)***
19.37*

14.0.3*

Heterogeneous erasure overloads for associative containers (FTM)*

P2077R3

19.32*

std::byteswap() (FTM)*

P1272R4

12

14

19.31*

14.0.3*

Printing volatile T*

P1147R1

11.3

14

19.31*

14.0.3*

basic_string::resize_and_overwrite() (FTM)*

P1072R10

12

14

19.31*

14.0.3*

Monadic operations for std::optional (FTM)*

P0798R8

12

14

19.32*

14.0.3*

std::move_only_function (FTM)*

P0288R9

12

19.32*

Add a conditional noexcept specification to std::exchange

P2401R0

12

14

19.25*

14.0.3*

Require std::span & std::basic_string_view to be TriviallyCopyable

P2251R1

Yes

Yes

Yes

Yes

Clarifying the status of the “C headers”

P2340R1

Yes

Yes

Yes

Yes

(FTM)*

P0323R12
P2549R1

12

16

19.33*

15.0.0*

constexpr for and (FTM)*

P0533R9

4.6 (partial)*

std::unreachable() (FTM)*

P0627R6

12

15

19.32*

14.0.3*

Deprecating std::aligned_storage and std::aligned_union

P1413R3

13

16

19.33*

std::reference_constructs_from_temporary & std::reference_converts_from_temporary (FTM)*

P2255R2

13 (partial)*
14

21 (partial)*

constexpr std::unique_ptr (FTM)*

P2273R3

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)*

P1206R7

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)*

P2387R3

13 (partial)*
14

19

19.34*

ranges::iota(), ranges::shift_left(), and ranges::shift_right() (FTM)* (FTM)*

P2440R1

13 (partial)*

19.34*

views::join_with (FTM)*

P2441R2

13

19.34*

views::chunk and views::slide (FTM)* (FTM)*

P2442R1

13

19.33*

views::chunk_by (FTM)*

P2443R1

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)*

P0429R9

15

20

<flat_set> (FTM)*

P1222R4

15

21

ranges::find_last(), ranges::find_last_if(), and ranges::find_last_if_not() (FTM)*

P1223R5

13

19

19.36*

Freestanding Library: Easy , , and

P1642R11

13*

N/A

views::stride (FTM)*

P1899R3

13

19.34*

Compatibility between std::tuple and tuple-like objects (FTM)*

P2165R4

14

2.9 (partial)*

19.36* (partial)*
19.37*

partial*

Rectifying constant iterators, sentinels, and ranges. views::as_const (FTM)*

P2278R4

13

19.35* (partial)*
19.36*

Formatting Ranges (FTM)*

P2286R8

15 (partial)*
15.2

16

19.37*(partial)*
19.39*(partial)*
19.41*(partial)*
19.42*

15.0.0*

Improve default container formatting (FTM)*

P2585R1

15

16 (partial)*
17

19.42*

15.0.0*

Formatted output library (FTM)*

P2093R14
P2539R4

14

17 (partial)*
18

19.37*

15.0.0**
16.0.0*

Formatting std::thread::id and std::stacktrace (FTM)*

P2693R1

14

17 (partial)*

19.38*

15.0.0*

constexpr for integral overloads of std::to_chars() and std::from_chars() (FTM)*

P2291R3

13

16

19.34*

15.0.0*

ranges::contains() and ranges::contains_subrange() (FTM)*

P2302R4

13

18 (partial)*
19

19.34*

16.0.0**

Ranges fold algorithms (FTM)*

P2322R6

13

19.35*

views::cartesian_product (FTM)*

P2374R4
P2540R1

13

19.37*

Adding move-only types support for comparison concepts (equality_comparable, totally_ordered, three_way_comparable) (FTM)*

P2404R3

19.36*

Ranges iterators as inputs to non-ranges algorithms (FTM)*

P2408R5

19.34*

constexpr std::bitset (FTM)*

P2417R2

13

16

19.34*

15.0.0*

basic_string::substr() &&

P2438R2

16

19.34*

15.0.0*

views::as_rvalue (FTM)*

P2446R2

13

16

19.34*

15.0.0*

Standard Library Modules (FTM)*

P2465R3

15*

17 (partial)*

19.35*
(partial)*
19.36*

std::forward_like() (FTM)*

P2445R1

14

16

19.34*

15.0.0*

Support exclusive mode for std::fstream (FTM)*

P2467R1

12

18

19.36*

16.0.0*

views::repeat (FTM)*

P2474R2

13

17

19.36*

15.0.0*

Relaxing range adaptors to allow for move-only types (FTM)*

P2494R2

14

17

19.34*

15.0.0*

std::basic_string_view range constructor should be explicit

P2499R0

12.2

16

19.34*

15.0.0*

std::generator: synchronous coroutine generator for ranges (FTM)*

P2502R2
P2787R0

14

19.43*

Add a conditional noexcept specification to std::apply

P2517R1

10

18

19.34*

16.0.0*

Explicit lifetime management (std::start_lifetime_as) (FTM)*

P2590R2
P2679R2

Clarify handling of encodings in localized formatting of chrono types (FTM)*

P2419R2

15*

19.34**

std::move_iterator should not always be input_iterator (FTM)*

P2520R0

12.3*

17*

19.34**

15.0.0*

Deduction guides update for explicit object parameter call operators

LWG3617

14

19.34*

Deduction guides update for static operator()

P1169R4

13

16

19.39*

15.0.0*

Standard names and library support for extended floating-point types

P1467R9

13

19.37**

Monadic operations for std::expected (FTM)*

P2505R5

13

17

19.36*

15.0.0*

views::enumerate (FTM)*

P2164R9

13

19.37*

std::is_implicit_lifetime (FTM)*

P2674R1

20

std::common_reference_t of std::reference_wrapper should be a reference type (FTM)* (FTM)*

P2655R3

19.37*

Disallowing user specialization of std::allocator_traits

P2652R2

19

19.37*

Deprecating std::numeric_limits::has_denorm

P2614R2

18

19.37*

16.0.0*

Making Multi-Param Constructors Of views explicit

P2711R1

17 (partial)*

19.36**

15.0.0*

DR20: Relaxing Ranges Just A Smidge (FTM)*

P2609R3

15

20

19.37*

DR20: Stashing Stashing Iterators For Proper Flattening

P2770R0

14

18

19.37*

DR17: std::visit() for classes derived from std::variant (FTM)*

P2162R2

11.3

13

19.20**
19.30*

13.1.6*

DR20: Conditionally borrowed ranges

P2017R1

11

16

19.30*

DR20: Repairing input range adaptors and std::counted_iterator

P2259R1

12

19.30*(partial)*
19.31*

DR20: views::join should join all views of ranges

P2328R1

11.2

15

19.30*

14.0.3*

DR20: view does not require default_initializable (FTM)*

P2325R3

11.3

16

19.30*

15.0.0*

DR20: Range adaptor objects bind arguments by value

P2281R1

11

14

19.29 (16.10)*
(partial)*
19.31*

14.0.3*

DR20: constexpr for std::optional and std::variant (FTM)* (FTM)*

P2231R1

11.3 (partial)*
12

13 (partial)*
19

19.31*

13.1.6* (partial)

DR20: views::lazy_split and redesigned views::split

P2210R2

12

16

19.31*

15.0.0*

DR20: Fix ranges::istream_view

P2432R1

12

16

19.31*

15.0.0*

DR20: view with ownership (FTM)*

P2415R2

12

14

19.31*

14.0.3*

DR20: Fixing locale handling in chrono formatters (FTM)*

P2372R3
P2418R2

13

19.31*

DR20: Cleaning up integer-class types

P2393R1

19.32*

DR20: Compile-time format string checks; Reducing binary code size of std::format() family (FTM)*

P2216R3

13

14 (partial)*
15

19.32*

14.0.3*

DR20: Add support for non-const-formattable types to std::format

P2418R2

13

15

19.32*

14.0.3*

DR20: std::basic_format_string

P2508R1

13

15

19.35*

14.0.3*

DR20: Poison Pills are Too Toxic (FTM)*

P2602R2

14

19

19.36*

DR20: std::format fill character allowances

P2572R1

14

17

19.37*

DR20: Improving std::format's width estimation

P2675R1

14

17

19.38*

DR20: std::barrier's phase completion guarantees (FTM)*

P2588R3

19.28 (16.8)**
19.36*

C++23 feature

Paper(s)