Spec-Zone.ru › C++

C++23

The current revision of the C++ standard.

New language features

  • New language feature testing macros
  • Explicit object parameter, explicit object member functions, a.k.a. "deducing this" (P0847R7)
  • Multidimensional subscript operator (e.g. v[1, 3, 7] = 42;) (P2128R6)
  • static operator[] (P2589R1), static operator(), and static lambdas (P1169R4)
  • auto(x) and auto{x}: decay-copy in the language (P0849R8)
  • Assumptions via new attribute [[assume(expression)]] (P1774R8)
  • Attributes on lambda-expressions (P2173R1)
  • Optional extended floating-point types: std::float{16|32|64|128}_t, and std::bfloat16_t (P1467R9)
  • New preprocessor directives: #elifdef, #elifndef (P2334R1), and #warning (P2437R1)
  • Literal suffix 'Z'/'z' for (signed) std::size_t literals (P0330R8), e.g. auto ouz = 0uz;
  • White-spaces trimming before line splicing. (P2223R2)
  • Simpler implicit move (P2266R3)
  • Extending the lifetime of temporaries in range-based for loop initializer (P2718R0)
  • CTAD from inherited constructors (P2582R1)
  • Labels at the end of compound statements (P2324R2), e.g.
void f(int& x){if (x)goto END;x = 42;END:}
  • Alias declarations (using) in init-statements (P2360R0), e.g.
for (using T = int; T e : v)/* ... */
  • Make () more optional for lambda expressions (P1102R2)
  • Narrowing contextual conversions to bool in static_assert and ifconstexpr (P1401R5)
  • Make declaration order layout (of non-static class data members) mandated (P1847R4)
  • Text encoding changes:
    • Character sets and encodings (P2314R4)
    • Consistent character literal encoding (P2316R2)
    • Named universal character escapes, e.g. "\N{CAT FACE}" for "🐱" (P2071R2)
    • Delimited escape sequences, e.g. "\o{7777}", "\x{C0DE}", "\u{CAFE}" (P2290R3)
    • Support for UTF-8 as a portable source file encoding (P2295R6)
  • if consteval / if not consteval (P1938R3)
  • constexpr changes:
    • Non-literal variables, labels, and gotos in constexpr functions (P2242R3)
    • Permitting static and thread_local variables in constant expressions in constexpr functions (P2647R1)
    • constexpr function does not need its return type and parameter types to be literal type (P2448R2)
    • constexpr function for which no invocation satisfies the requirements of a core constant expression (P2448R2)

New library features

  • New library feature testing macros

New modules

  • std and std.compat (P2465R3)

New headers

  • <expected>
  • <flat_map>
  • <flat_set>
  • <generator>
  • <mdspan>
  • <print>
  • <spanstream>
  • <stacktrace>
  • <stdfloat>

C compatibility headers:

  • <stdatomic.h> (P0943R6)

Library features

General Utilities
  • std::expected: a new vocabulary type to return a function's result (<expected>) (P0323R12, P2549R1)
  • std::move_only_function: a move-only callable wrapper (P0288R9)
  • std::bind_back: a call wrapper (P2387R3)
  • std::byteswap: reverses the bytes (P1272R4)
  • std::forward_like (P2445R1)
  • std::invoke_r: invokes a Callable object (P2136R3)
  • std::to_underlying: a utility function to get the underlying value of enum (P1682R3)
  • std::unreachable: a function to mark unreachable code (P0627R6)
  • Monadic operations (transform, or_else, and and_then) for std::optional (P0798R8) and std::expected (P2505R5)
  • std::tuple is compatible with other tuple-like objects (P2165R4)
  • Adding default arguments for std::pair's forwarding constructor (P2718R0)
  • std::basic_common_reference specialization for std::reference_wrapper yielding reference types (P2655R3)
Coroutine Library
  • std::generator: synchronous coroutine generator for ranges (P2502R2, P2787R0)
Diagnostic
  • Stacktrace library (P0881R7)
Algorithm, Iterators, and Ranges
  • New range adaptors:
    • views::adjacent and views::adjacent_transform (P2321R2)
    • views::as_const (P2278R4)
    • views::as_rvalue (P2446R2)
    • views::cartesian_product (P2374R4)
    • views::chunk_by (P2443R1)
    • views::chunk (P2442R1)
    • views::enumerate (P2164R9)
    • views::join_with (P2441R2)
    • views::repeat (P2474R2)
    • views::slide (P2442R1)
    • views::stride (P1899R3)
    • views::zip, views::zip_transform (P2321R2)
  • ranges::range_adaptor_closure: a helper for program-defined range adaptor closures (P2387R3)
  • ranges::to: a range conversion function (P1206R7)
  • New constrained ranges algorithm:
    • ranges::starts_with and ranges::ends_with (P1659R3)
    • ranges::contains and ranges::contains_subrange (P2302R4)
    • ranges::find_last, ranges::find_last_if, and ranges::find_last_if_not (P1223R5)
    • ranges::iota, ranges::shift_left, and ranges::shift_right: rangified versions of non-constrained algorithms (P2440R1)
    • ranges::fold_left etc.: range fold algorithms (P2322R6)
  • Rectifying constant iterators, sentinels, and ranges, that is, ranges::cbegin and other similar utilities returning constant iterators should be fully guaranteed even for shallow-const views (such as std::span) (P2278R4)
  • Making multi-param constructors of some views explicit (P2711R1)
  • Ranges iterators as inputs to non-ranges algorithms (P2408R5)
  • Relaxing range adaptors to allow for move-only types (P2494R2)
Containers
  • std::mdspan: a non-owning multidimensional array reference (P0009R18, P2599R2, P2604R0, P2613R1, P2763R1)
  • Constructibility and assignability of containers from other compatible ranges (P1206R7)
  • std::flat_set, std::flat_multiset (P1222R4), std::flat_map, std::flat_multimap (P0429R9): flat sets and flat maps - container adaptors wrapping underlying sorted random-access containers
  • Allowing iterator pair construction in std::stack and std::queue (P1425R4)
  • Heterogeneous erasure overloads for associative containers (P2077R2)
  • Non-deduction context for allocators in container deduction guides (P1518R2)
  • Requiring std::span and std::basic_string_view to be trivially copyable (P2251R1)
Compile-time support
  • constexpr support for:
    • std::bitset (P2417R2)
    • std::unique_ptr (P2273R3)
    • std::type_info::operator== (P1328R1)
    • Some <cmath> functions (P0533R9)
    • Integral overloads of std::to_chars and std::from_chars (P2291R3)
  • Metaprogramming utilities:
    • Adding move-only types support for comparison concepts (P2404R3)
    • Type traits:
      • std::is_scoped_enum (P1048R1)
      • std::is_implicit_lifetime (P2674R1)
      • std::reference_constructs_from_temporary, and std::reference_converts_from_temporary (P2255R2)
Memory Management
  • std::out_ptr and std::inout_ptr: smart pointer adaptors for C interoperability (P1132R7)
  • std::allocate_at_least and std::allocator::allocate_at_least (P0401R6)
  • std::start_lifetime_as: an explicit lifetime management function for implicit-lifetime types (P2590R2)
  • Disallowing user specialization of std::allocator_traits (P2652R2)
String and Text Processing
  • New member functions and changes in string types:
    • std::basic_string::contains and std::basic_string_view::contains (P1679R3)
    • Disabling construction from nullptr for std::basic_string and std::basic_string_view (P2166R1)
    • Explicit range constructor for std::basic_string_view (P1989R2)
    • std::basic_string::resize_and_overwrite (P1072R10)
    • Rvalue reference overload of std::basic_string::substr for efficient slicing (P2438R2)
  • Formatting ranges, tuples, escaped presentation of characters and strings, std::thread::id, and stacktraces. (P2286R8) (P2585R1) (P2693R1)
I/O and print
  • Formatted output functions std::print and std::println provided in header <print> (P2093R14)
  • spanstream library (std::span-based string stream) provided in header <spanstream> (P0448R4)
  • Support exclusive mode in std::fstreams (P2467R1)
  • Support of printing volatile T*: std::basic_ostream::operator<<(const volatile void*) (P1147R1)

Obsolete features

Removed features
  • Garbage collection support and reachability-based leak detection. (P2186R2)
  • Mixed wide string literals concatenation support, e.g., const auto* no = u"q" U"p" is ill-formed. (P2201R1)
  • Non-encodable wide character literals and multicharacter wide character literals, e.g. wchar_t x = 'db' is ill-formed. (P2362R3)
Deprecated features
  • std::aligned_storage and std::aligned_union (P1413R3)
  • std::numeric_limits::has_denorm (P2614R2)
Reverted deprecations
  • The operator, (comma operator) in subscript expressions (but the semantics has been changed to support overloadable multidimensional subscript operator[]).
  • Some C headers (the corresponding <*.h> headers for compatibility with C) (P2340R1)

Defect reports

Compiler support

Main Article: C++23 compiler support

C++23 core language features

C++23 feature

Paper(s)

GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
Literal suffix for (signed) size_t (FTM)* P0330R8 11 13 19.43* 13.1.6* 6.5 2022.2 23.9
Make () more optional for lambdas P1102R2 11 13 19.44* 13.1.6* 6.3 2022.2 22.5
if consteval (FTM)* P1938R3 12 14 19.44* 14.0.0* 6.3 2022.2 24.1
Removing Garbage Collection Support P2186R2 12 N/A 19.30* N/A N/A
Narrowing contextual conversions in static_assert and constexpr if P1401R5 9 13 (partial)*
14
19.44* 14.0.0* N/A 2022.2 20.7
Trimming whitespaces before line splicing P2223R2 Yes Yes 19.50* Yes 6.7 2022.2 Yes
Make declaration order layout mandated P1847R4 Yes Yes 19.30* Yes 6.8 2022.2 Yes
Removing mixed wide string literal concatenation P2201R1 Yes Yes 19.44* Yes Yes Yes Yes
Explicit object member functions (deducing this) (FTM)* P0847R7 14 18
19*
19.32*
(partial)*
19.43*
6.3 22.5
auto(x) and auto{x} (FTM)* P0849R8 12 15 19.50* 14.0.3* 6.4 2022.2 23.3
#elifdef and #elifndef P2334R1 12 13 19.40* 13.1.6* 6.5 2022.2 23.9
Non-literal variables (and labels and gotos) in constexpr functions (FTM)* P2242R3 12 15 19.43* 14.0.3* 6.3 2022.2 22.5
Consistent character literal encoding P2316R2 Yes Yes 19.30* Yes Yes 2022.2 Yes
Character sets and encodings P2314R4 10 Yes 19.51* Yes Yes 2022.2 Yes
Extend init-statement (of for loop) to allow alias-declaration P2360R0 12 14 19.50* 14.0.0* 6.8 2022.2
Multidimensional subscript operator (FTM)* P2128R6 12 15 19.42* 14.0.3* 6.8 2022.2
Attributes on lambdas P2173R1 9 13 19.44* 13.1.6* 6.6 2022.2 22.5
#warning P2437R1 Yes* Yes 19.50* 15.0.0* 6.5 2023.2 Yes
Remove non-encodable wide character literals and multicharacter wide character literals P2362R3 13 14 19.51* 15.0.0* 6.7 2023.2
Labels at the end of compound statements P2324R2 13 16 19.51* 16.0.0* 6.5 2023.2 23.9
Delimited escape sequences P2290R3 13 15 19.50* 15.0.0* 6.7 2023.2
Named universal character escapes (FTM)* P2071R2 13 15 19.51* 15.0.0* 6.7 2023.2
Relaxing some constexpr restrictions (FTM)* P2448R2 13 17 (partial)
19
19.51* 6.9 2024.0 (partial)
Simpler implicit move (FTM)* P2266R3 13 13 19.50* 6.7 2022.2
static operator() (FTM)* P1169R4 13 16 19.44* 16.0.0* 6.7 2023.2
Requirements for optional extended floating-point types P1467R9 13 N/A 6.4
Class template argument deduction from inherited constructors P2582R1 14 19.51* 6.9
Attribute [[assume]] P1774R8 13 19 19.51* 6.8
Support for UTF-8 as a portable source file encoding P2295R6 13* 15* 19.0 (Update 2)** 15.0.0* N/A 2023.2
static operator[] (FTM)* P2589R1 13 16 19.44* 16.0.0* 6.7 2023.2
Permitting static constexpr variables in constexpr functions (FTM)* P2647R1 13 16 19.51* 16.0.0* 6.8 2023.2
Extending the lifetime of temporaries in range-based for loop initializer (FTM)* P2644R1
P2718R0
CWG2659
15 19 19.51* 6.8
DR11: Change scope of lambda trailing-return-type P2036R3
P2579R0
16 17 19.50* 6.8 2023.2
DR20: Meaningful exports P2615R1 15 17 (partial) 19.28 (16.8)*
DR20: consteval needs to propagate up (FTM)* P2564R3 14 17 19.52* 16.0.0* 6.7 2024.0
DR98: C++ Identifier Syntax using Unicode Standard Annex 31 P1949R7 12 14 19.50* 14.0.0* 6.4 2022.2
DR11: Allow duplicate attributes P2156R1 11 13 19.50* 13.1.6* 6.5 23.9
DR20: Adjusting the value of feature-test macro __cpp_concepts P2493R0 12 19.50* 6.4 23.3
DR98: Relax requirements on wchar_t to match existing practices P2460R2 Yes Yes 19.44* 15.0.0* N/A 2023.2
DR11: Using unknown pointers and references in constant expressions P2280R4 14 20* 19.50*
DR20: The Equality Operator You Are Looking For P2468R2 13 16 19.36* 16.0.0* 2023.2
DR20: char8_t Compatibility and Portability Fix (FTM)* P2513R4 13 16 19.34* 16.0.0* 6.8 2023.2
DR98/11: Clarify reporting of diagnostic directives and allow static_assert of non-value-dependent expressions in a template context CWG2518 13 17 16.0*
(partial)*
19.40*
6.7


C++23 feature


Paper(s)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray

C++23 library features

C++23 feature

Paper(s)

GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
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 16 15 19.30* 14.0.3*
<spanstream>: 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 16 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)*
22
19.33*(partial)***
19.37*
14.0.3*
Heterogeneous erasure overloads for associative containers (FTM)* P2077R3 16 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.31* 14.0.3*
Require std::span & std::basic_string_view to be TriviallyCopyable P2251R1 Yes Yes 19.31* Yes
Clarifying the status of the “C headers” P2340R1 Yes Yes Yes Yes
<expected> (FTM)* P0323R12
P2549R1
12 16 19.33* 15.0.0*
constexpr for <cmath> and <cstdlib> (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)* 19.51*
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)*
16
23 19.34*
views::join_with (FTM)* P2441R2 13 21 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
16 17 (partial)*
18
19.39* 15.0.0*
<flat_map> (FTM)* P0429R9 15 20 19.51*
<flat_set> (FTM)* P1222R4 15 21 19.51*
ranges::find_last(), ranges::find_last_if(), and ranges::find_last_if_not() (FTM)* P1223R5 13 19 19.36*
Freestanding Library: Easy <utility>, <ranges>, and <iterator> P1642R11 13* 19.38*
views::stride (FTM)* P1899R3 13 23 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 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 <print> (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 19 19.34* 16.0.0**
Ranges fold algorithms (FTM)* P2322R6 13 23
18 (partial)*
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 16 22 19.36*
Ranges iterators as inputs to non-ranges algorithms (FTM)* P2408R5 16 19.34*
constexpr std::bitset (FTM)* P2417R2 13 16 19.34* 15.0.0*
basic_string::substr() && P2438R2 16 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
16 19.51*
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 23 19.37*
std::is_implicit_lifetime (FTM)* P2674R1 16 20 19.51*
std::common_reference_t of std::reference_wrapper should be a reference type (FTM)* (FTM)* P2655R3 16 21* 19.37*
Disallowing user specialization of std::allocator_traits P2652R2 19 19.37*
Deprecating std::numeric_limits::has_denorm P2614R2 17 18 19.37* 16.0.0*
Making Multi-Param Constructors Of views explicit P2711R1 16 21
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 21
18 (partial)
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)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*

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

External links

1. C++23 - Wikipedia

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/23

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API