1 <section xmlns="http://docbook.org/ns/docbook" version="5.0"
2 xml:id="status.iso.2023" xreflabel="Status C++ 2023">
3 <?dbhtml filename="status_iso_cxx2023.html"?>
5 <info><title>C++ 2023</title>
7 <keyword>ISO C++</keyword>
8 <keyword>2023</keyword>
13 In this implementation the <literal>-std=gnu++23</literal> or
14 <literal>-std=c++23</literal> flag must be used to enable language
16 features. See <link linkend="manual.intro.using.flags">dialect</link>
17 options. The pre-defined symbol
18 <constant>__cplusplus</constant> is used to check for the
19 presence of the required flag.
23 This section describes the C++23 and library TS support in
24 mainline GCC, not in any particular release.
28 The following table lists new library features that have been accepted into
29 the C++23 working draft. The "Proposal" column provides a link to the
30 ISO C++ committee proposal that describes the feature, while the "Status"
31 column indicates the first version of GCC that contains an implementation of
32 this feature (if it has been implemented).
33 A dash (—) in the status column indicates that the changes in the proposal
34 either do not affect the code in libstdc++, or the changes are not required for conformance.
35 The "SD-6 Feature Test / Notes" column shows the corresponding macro or header from
36 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">SD-6:
37 Feature-testing recommendations for C++</link> (where applicable)
38 or any notes about the implementation.
41 <table frame="all" xml:id="table.cxx23_features">
42 <title>C++ 2023 Library Features</title>
44 <tgroup cols="4" align="left" colsep="0" rowsep="1">
45 <colspec colname="c1"/>
46 <colspec colname="c2"/>
47 <colspec colname="c3"/>
48 <colspec colname="c4"/>
51 <entry>Library Feature</entry>
52 <entry>Proposal</entry>
54 <entry>SD-6 Feature Test / Notes</entry>
61 <entry namest="c1" nameend="c4" align="left">
62 <emphasis role="bold">Ranges and Views</emphasis>
67 <entry> Range constructor for std::string_view </entry>
69 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1989r2.pdf">
73 <entry align="center"> 11.1 </entry>
78 <entry> <code>join_view</code> should join all views of ranges </entry>
80 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2328r1.html">
84 <entry align="center"> 11.2 </entry>
90 <entry> Clarifying range adaptor objects </entry>
92 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2281r1.html">
96 <entry align="center"> 11.1 </entry>
101 <entry> Views should not be required to be default constructible </entry>
103 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2325r3.html">
107 <entry align="center"> 11.3 </entry>
108 <entry> <code>__cpp_lib_ranges >= 202106L</code> </entry>
112 <entry> Conditionally borrowed ranges </entry>
114 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2017r1.html">
118 <entry align="center"> 11.1 </entry>
123 <entry> Require <code>span</code> & <code>basic_string_view</code> to be Trivially Copyable </entry>
125 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2251r1.pdf">
129 <entry align="center"> Yes </entry>
134 <entry> Repairing input range adaptors and counted_iterator </entry>
136 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2259r1.html">
140 <entry align="center"> 12.1 </entry>
145 <entry> Superior String Splitting </entry>
147 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2210r2.html">
151 <entry align="center"> 12.1 </entry>
156 <entry> What is a <code>view</code>? </entry>
158 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2415r2.html">
162 <entry align="center"> 12.1 </entry>
163 <entry> <code>__cpp_lib_ranges >= 202110L</code> </entry>
167 <entry> Fix istream_view </entry>
169 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2432r1.pdf">
173 <entry align="center"> 12.1 </entry>
178 <?dbhtml bgcolor="#C8B0B0" ?>
179 <entry> <code>starts_with</code> and <code>ends_with</code> </entry>
181 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1659r3.html">
185 <entry align="center"> </entry>
186 <entry> <code>__cpp_lib_ranges_starts_ends_with >= 202106L</code> </entry>
190 <entry> <code>zip</code> </entry>
192 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2321r2.html">
196 <entry align="center"> 13.1 </entry>
197 <entry> <code>__cpp_lib_ranges_zip >= 202110L</code> </entry>
201 <entry> <code>views::repeat</code> </entry>
203 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2474r2.html">
207 <entry align="center"> 13.1 </entry>
208 <entry> <code>__cpp_lib_ranges_repeat >= 202207L</code> </entry>
212 <entry> <code>views::enumerate</code> </entry>
214 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2164r9.pdf">
218 <entry align="center"> 13.1 </entry>
219 <entry> <code>__cpp_lib_ranges_enumerate >= 202302L</code> </entry>
223 <entry> <code>views::join_with</code> </entry>
225 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2441r2.html">
229 <entry align="center"> 13.1 </entry>
230 <entry> <code>__cpp_lib_ranges_join_with >= 202202L</code> </entry>
235 Windowing range adaptors: <code>views::chunk</code>
236 and <code>views::slide</code> </entry>
238 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2442r1.html">
242 <entry align="center"> 13.1 </entry>
243 <entry> <code>__cpp_lib_ranges_slide >= 202202L</code> </entry>
247 <entry> <code>views::chunk_by</code> </entry>
249 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2443r1.html">
253 <entry align="center"> 13.1 </entry>
254 <entry> <code>__cpp_lib_ranges_chunk_by >= 202202L</code> </entry>
258 <entry> <code>views::stride</code> </entry>
260 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1899r3.html">
264 <entry align="center"> 13.1 </entry>
265 <entry> <code>__cpp_lib_ranges_stride >= 202207L</code> </entry>
269 <entry> <code>views::cartesian_product</code> </entry>
271 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2374r4.html">
275 <entry align="center"> 13.1 </entry>
276 <entry> <code>__cpp_lib_ranges_cartesian_product >= 202207L</code> </entry>
280 <entry> Empty Product for certain Views </entry>
282 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2540r1.html">
286 <entry align="center"> 13.1 </entry>
287 <entry> <code>__cpp_lib_ranges_cartesian_product >= 202207L</code> </entry>
291 <entry> <code>views::as_rvalue</code> </entry>
293 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2446r2.html">
297 <entry align="center"> 13.1 </entry>
298 <entry> <code>__cpp_lib_ranges_as_rvalue >= 202207L</code> </entry>
303 <code>cbegin</code> should always return a constant iterator
306 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2278r4.html">
310 <entry align="center"> 13.1 </entry>
311 <entry> <code>__cpp_lib_ranges_as_const >= 202207L</code> </entry>
315 <?dbhtml bgcolor="#B0B0B0" ?>
316 <entry> <code>ranges::to</code> </entry>
318 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1206r7.pdf">
322 <entry align="center"> 14.1 (<code>ranges::to</code> function) </entry>
324 <code>__cpp_lib_containers_ranges >= 202202L</code>,
325 <code>__cpp_lib_ranges_to_container >= 202202L</code>
330 <?dbhtml bgcolor="#C8B0B0" ?>
331 <entry> Ranges iterators as inputs to non-Ranges algorithms </entry>
333 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2408r5.html">
337 <entry align="center"> </entry>
339 <code>__cpp_lib_algorithm_iterator_requirements >= 202207L</code>
344 <entry> Pipe support for user-defined range adaptors </entry>
346 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2387r3.html">
350 <entry align="center"> 13.1 </entry>
352 <code>__cpp_lib_bind_pack >= 202202L</code>,
353 <code>__cpp_lib_ranges >= 202202L</code>
358 <?dbhtml bgcolor="#B0B0B0" ?>
360 <code>ranges::iota</code>, <code>ranges::shift_left</code>,
361 and <code>ranges::shift_right</code>
364 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2440r1.html">
368 <entry align="center"> 13.1 (<code>ranges::iota</code>) </entry>
370 <code>__cpp_lib_ranges_iota >= 202202L</code>,
371 <code>__cpp_lib_shift >= 202202L</code>
376 <entry> <code>ranges::find_last</code> </entry>
378 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1223r5.pdf">
382 <entry align="center"> 13.1 </entry>
383 <entry> <code>__cpp_lib_ranges_find_last >= 202207L</code> </entry>
387 <entry> <code>ranges::contains</code> </entry>
389 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2302r4.html">
393 <entry align="center"> 13.1 </entry>
394 <entry> <code>__cpp_lib_ranges_contains >= 202207L</code> </entry>
398 <?dbhtml bgcolor="#C8B0B0" ?>
399 <entry> Making multi-param constructors of views explicit </entry>
401 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2711r1.html">
405 <entry align="center"> </entry>
410 <entry> <code>ranges::fold</code> </entry>
412 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2322r6.html">
416 <entry align="center"> 13.1 </entry>
417 <entry> <code>__cpp_lib_ranges_fold >= 202207L</code> </entry>
421 <?dbhtml bgcolor="#C8B0B0" ?>
422 <entry> Relaxing Ranges Just A Smidge</entry>
424 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2609r3.html">
428 <entry align="center"> </entry>
429 <entry> <code>__cpp_lib_ranges >= 202302L</code> </entry>
433 <entry namest="c1" nameend="c4" align="left">
434 <emphasis role="bold">Compile-time programming</emphasis>
439 <entry> A proposal for a type trait to detect scoped enumerations </entry>
441 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1048r1.pdf">
445 <entry align="center"> 11.1 </entry>
446 <entry> <code>__cpp_lib_is_scoped_enum >= 202011L</code> </entry>
450 <entry> std::to_underlying for enumerations </entry>
452 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1682r3.html">
456 <entry align="center"> 11.1 </entry>
457 <entry> <code>__cpp_lib_to_underlying >= 202102L</code> </entry>
461 <entry> Missing constexpr in std::optional and std::variant </entry>
463 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2231r1.html">
467 <entry align="center">
468 <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
469 <row><entry> 11.3 (<code>optional</code>) </entry></row>
470 <row><entry> 12.1 (<code>variant</code>) </entry></row>
471 </tbody></tgroup></informaltable>
474 <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
475 <row><entry> <code>__cpp_lib_constexpr_optional >= 202106L</code> </entry></row>
476 <row><entry> <code>__cpp_lib_variant >= 202106L</code> </entry></row>
477 </tbody></tgroup></informaltable>
482 <entry> Making <code>std::unique_ptr</code> constexpr </entry>
484 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2273r3.pdf">
488 <entry align="center"> 12.1 </entry>
489 <entry> <code>__cpp_lib_constexpr_memory >= 202202L</code> </entry>
493 <entry> Making <code>std::type_info::operator==</code> constexpr </entry>
495 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1328r1.html">
499 <entry align="center"> 12.1 </entry>
500 <entry> <code>__cpp_lib_constexpr_typeinfo >= 202106L</code> </entry>
504 <?dbhtml bgcolor="#C8B0B0" ?>
505 <entry> constexpr for <code><cmath></code> and <code><cstdlib></code> </entry>
507 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0533r9.pdf">
511 <entry align="center"> </entry>
512 <entry> <code>__cpp_lib_constexpr_cmath >= 202202L</code> </entry>
516 <?dbhtml bgcolor="#C8B0B0" ?>
517 <entry> Deprecate std::aligned_storage and std::aligned_union </entry>
519 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf">
523 <entry align="center"> </entry>
528 <entry> A type trait to detect reference binding to temporary </entry>
530 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2255r2.html">
534 <entry align="center">
535 <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
536 <row><entry> 13.1 (missing changes to <code>std::tuple</code>) </entry></row>
537 <row><entry> 14.1 (complete) </entry></row>
538 </tbody></tgroup></informaltable>
540 <entry> <code>__cpp_lib_reference_from_temporary >= 202202L</code> </entry>
544 <?dbhtml bgcolor="#C8B0B0" ?>
546 Move-only types for equality_comparable_with, totally_ordered_with,
547 and three_way_comparable_with
550 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2404r3.pdf">
554 <entry align="center"> </entry>
555 <entry> <code>__cpp_lib_concepts >= 202207L</code> </entry>
559 <?dbhtml bgcolor="#C8B0B0" ?>
560 <entry> A trait for implicit lifetime types </entry>
562 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2674r1.pdf">
566 <entry align="center"> </entry>
567 <entry> <code>__cpp_lib_is_implicit_lifetime >= 202302L</code> </entry>
571 <?dbhtml bgcolor="#C8B0B0" ?>
573 <code>common_reference_t</code> of <code>reference_wrapper</code>
574 Should Be a Reference Type
577 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2655r3.html">
581 <entry align="center"> </entry>
582 <entry> <code>__cpp_lib_common_reference >= 202302L</code> </entry>
586 <?dbhtml bgcolor="#C8B0B0" ?>
587 <entry> Deprecate <code>numeric_limits::has_denorm</code> </entry>
589 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2614r2.pdf">
593 <entry align="center"> </entry>
598 <entry namest="c1" nameend="c4" align="left">
599 <emphasis role="bold">Containers</emphasis>
604 <entry> Iterator pair constructors for stack and queue </entry>
606 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1425r4.pdf">
610 <entry align="center"> 12.1 </entry>
611 <entry> <code>__cpp_lib_adaptor_iterator_pair_constructor >= 202106L</code> </entry>
615 <entry> Stop overconstraining allocators in container deduction guides </entry>
617 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1518r2.html">
621 <entry align="center"> 12.1 </entry>
626 <?dbhtml bgcolor="#C8B0B0" ?>
627 <entry> Heterogeneous erasure overloads for associative containers </entry>
629 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2077r3.html">
633 <entry align="center"> </entry>
634 <entry> <code>__cpp_lib_associative_heterogeneous_erasure >= 202110L</code> </entry>
638 <?dbhtml bgcolor="#C8B0B0" ?>
639 <entry> <code><flat_map></code> </entry>
641 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0429r9.pdf">
645 <entry align="center"> </entry>
646 <entry> <code>__cpp_lib_flat_map >= 202207L</code> </entry>
650 <?dbhtml bgcolor="#C8B0B0" ?>
651 <entry> <code><flat_set></code> </entry>
653 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1222r4.pdf">
657 <entry align="center"> </entry>
658 <entry> <code>__cpp_lib_flat_set >= 202207L</code> </entry>
662 <?dbhtml bgcolor="#C8B0B0" ?>
663 <entry> <code>mdspan</code> </entry>
665 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html">
669 <entry align="center"> </entry>
670 <entry> <code>__cpp_lib_mdspan >= 202207L</code> </entry>
674 <?dbhtml bgcolor="#C8B0B0" ?>
676 <code>index_type</code> & <code>size_type</code>
677 in <code>mdspan</code>
680 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2599r2.pdf">
684 <entry align="center"> </entry>
685 <entry> <code>__cpp_lib_mdspan >= 202207L</code> </entry>
689 <?dbhtml bgcolor="#C8B0B0" ?>
691 <code>mdspan</code>: rename <code>pointer</code> and
692 <code>contiguous</code>
695 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2604r0.html">
699 <entry align="center"> </entry>
700 <entry> <code>__cpp_lib_mdspan >= 202207L</code> </entry>
704 <?dbhtml bgcolor="#C8B0B0" ?>
705 <entry> Add the missing <code>empty</code> to <code>mdspan</code> </entry>
707 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2613r1.html">
711 <entry align="center"> </entry>
712 <entry> <code>__cpp_lib_mdspan >= 202207L</code> </entry>
716 <?dbhtml bgcolor="#C8B0B0" ?>
718 <code>layout_stride</code> static extents default constructor fix
721 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2763r1.html">
725 <entry align="center"> </entry>
730 <entry namest="c1" nameend="c4" align="left">
731 <emphasis role="bold">Strings and text</emphasis>
736 <entry> string contains function </entry>
738 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1679r3.html">
742 <entry align="center"> 11.1 </entry>
743 <entry> <code>__cpp_lib_string_contains >= 202011L</code> </entry>
747 <entry> Prohibit std::basic_string and std::basic_string_view construction from nullptr </entry>
749 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2166r1.html">
753 <entry align="center"> 12.1 </entry>
758 <entry> basic_string::resize_and_overwrite </entry>
760 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1072r10.html">
764 <entry align="center"> 12.1 </entry>
765 <entry> <code>__cpp_lib_resize_and_overwrite >= 202110L</code> </entry>
769 <entry> A strstream replacement using span<charT> as buffer </entry>
771 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0448r4.pdf">
775 <entry align="center"> 12.1 </entry>
776 <entry> <code>__cpp_lib_spanstream >= 202106L</code> </entry>
780 <?dbhtml bgcolor="#C8B0B0" ?>
781 <entry> <code> std::string::substr() && </code> </entry>
783 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2438r2.html">
787 <entry align="center"> </entry>
793 <entry> std::format improvements </entry>
795 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2216r3.html">
799 <entry align="center"> 13.1 </entry>
800 <entry> <code>__cpp_lib_format >= 202106L</code> </entry>
805 Add support for <code>std::generator</code>-like types to
806 <code>std::format</code>
809 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2418r2.html">
813 <entry align="center"> 13.1 </entry>
814 <entry> <code>__cpp_lib_format >= 202110L</code> </entry>
819 Expose <code>std::<emphasis>basic-format-string</emphasis><charT, Args...></code>
822 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2508r1.html">
826 <entry align="center"> 13.1 (feature test macro not defined)</entry>
827 <entry> <code>__cpp_lib_format >= 202207L</code> </entry>
831 <?dbhtml bgcolor="#C8B0B0" ?>
833 Clarify handling of encodings in localized formatting of chrono types
836 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2419r2.html">
840 <entry align="center"> </entry>
841 <entry> <code>__cpp_lib_format >= 202207L</code> </entry>
849 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2510r3.pdf">
853 <entry align="center"> 13.2 (feature test macro not defined)</entry>
854 <entry> <code>__cpp_lib_format >= 202207L</code> </entry>
858 <?dbhtml bgcolor="#C8B0B0" ?>
859 <entry> Formatting Ranges </entry>
861 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2286r8.html">
865 <entry align="center"> </entry>
866 <entry> <code>__cpp_lib_format_ranges >= 202207L</code> </entry>
870 <?dbhtml bgcolor="#C8B0B0" ?>
871 <entry> Improve default container formatting </entry>
873 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2585r1.html">
877 <entry align="center"> </entry>
878 <entry> <code>__cpp_lib_format_ranges >= 202207L</code> </entry>
882 <entry> Formatted output </entry>
884 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2093r14.html">
888 <entry align="center"> 14.1 </entry>
889 <entry> <code>__cpp_lib_print >= 202207L</code> </entry>
894 Should the output of std::print to a terminal be synchronized with
895 the underlying stream?
898 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2539r3.html">
902 <entry align="center"> 14.1 </entry>
908 Formatting <code>thread::id</code> and <code>stacktrace</code>
911 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2693r1.pdf">
915 <entry align="center"> 14.1 </entry>
916 <entry> <code>__cpp_lib_formatters >= 202302L</code> </entry>
921 Add Constexpr Modifiers to Functions <code>to_chars</code> and
922 <code>from_chars</code> for Integral Types in
923 <code><charconv></code> Header
926 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2291r3.pdf">
930 <entry align="center"> 13.1 </entry>
931 <entry> <code>__cpp_lib_constexpr_charconv >= 202207L</code> </entry>
935 <entry namest="c1" nameend="c4" align="left">
936 <emphasis role="bold">Miscellaneous</emphasis>
941 <entry> Inheriting from <code>std::variant</code> </entry>
943 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2162r2.html">
947 <entry align="center"> 11.3 </entry>
948 <entry> <code>__cpp_lib_variant >= 202102L</code> </entry>
952 <entry> Printing <code>volatile</code> Pointers </entry>
954 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1147r1.html">
958 <entry align="center"> 11.3 </entry>
963 <entry> A Proposal to add stacktrace library </entry>
965 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0881r7.html">
969 <entry align="center"> 12.1 </entry>
970 <entry> <code>__cpp_lib_stacktrace >= 202011L</code> </entry>
974 <entry> Add a pmr alias for std::stacktrace </entry>
976 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2301r1.html">
980 <entry align="center"> 12.1 </entry>
985 <entry> <code>std::expected</code> </entry>
987 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html">
991 <entry align="center"> 12.1 </entry>
992 <entry> <code>__cpp_lib_expected >= 202202L</code> </entry>
996 <entry> Monadic operations for std::expected </entry>
998 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2505r5.html">
1002 <entry align="center"> 13.1 </entry>
1003 <entry> <code>__cpp_lib_expected >= 202211L</code> </entry>
1007 <entry> Monadic operations for std::optional </entry>
1009 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0798r8.html">
1013 <entry align="center"> 12.1 </entry>
1014 <entry> <code>__cpp_lib_optional >= 202110L</code> </entry>
1019 Compatibility between <code>tuple</code>, <code>pair</code>
1020 and <emphasis>tuple-like</emphasis> objects </entry>
1022 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2165r4.pdf">
1026 <entry align="center"> 14.1 </entry>
1027 <entry> <code>__cpp_lib_tuple_like >= 202207L</code> </entry>
1032 Default Arguments for <code>pair</code>'s Forwarding Constructor
1035 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1951r1.html">
1039 <entry align="center"> 14.1 </entry>
1044 <entry> <code>move_only_function</code> </entry>
1046 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0288r9.html">
1050 <entry align="center"> 12.1 </entry>
1051 <entry> <code>__cpp_lib_move_only_function >= 202110L</code> </entry>
1055 <entry> <code>invoke_r</code> </entry>
1057 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2136r3.html">
1061 <entry align="center"> 12.1 </entry>
1062 <entry> <code>__cpp_lib_invoke_r >= 202106L</code> </entry>
1066 <entry> Byteswapping for fun&&nuf </entry>
1068 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1272r4.html">
1072 <entry align="center"> 12.1 </entry>
1073 <entry> <code>__cpp_lib_byteswap >= 202110L</code> </entry>
1077 <entry> Function to mark unreachable code </entry>
1079 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0627r6.pdf">
1083 <entry align="center"> 12.1 </entry>
1084 <entry> <code>__cpp_lib_unreachable >= 202202L</code> </entry>
1088 <entry> Add a conditional noexcept specification to std::exchange </entry>
1090 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2401r0.html">
1094 <entry align="center"> 12.1 </entry>
1099 <entry> A more constexpr bitset </entry>
1101 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2417r2.pdf">
1105 <entry align="center"> 13.1 </entry>
1106 <entry> <code>__cpp_lib_constexpr_bitset >= 202207L</code> </entry>
1110 <entry> Extended floating-point types and standard names </entry>
1112 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1467r9.html">
1116 <entry align="center"> 13.1 </entry>
1121 <entry> Support C atomics in C++ </entry>
1123 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0943r6.html">
1127 <entry align="center"> 12.1 </entry>
1128 <entry> <code>__cpp_lib_stdatomic_h >= 202011L</code> </entry>
1132 <entry> Clarifying the status of the "C headers" </entry>
1134 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2340r1.html">
1138 <entry align="center"> Yes </entry>
1143 <entry> Relax Requirements for time_point::clock </entry>
1145 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2212r2.html">
1149 <entry align="center"> Yes </entry>
1154 <entry> Removing Garbage Collection Support </entry>
1156 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2186r2.html">
1160 <entry align="center"> 12.1 </entry>
1165 <entry> Easy [utilities], [ranges], and [iterators] </entry>
1167 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1642r11.html">
1171 <entry align="center"> 13.1 </entry>
1176 <?dbhtml bgcolor="#C8B0B0" ?>
1177 <entry> Providing size feedback in the Allocator interface </entry>
1179 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0401r6.html">
1183 <entry align="center"> </entry>
1184 <entry> <code>__cpp_lib_allocate_at_least >= 202306L</code> </entry>
1188 <?dbhtml bgcolor="#C8B0B0" ?>
1190 Disallow User Specialization of <code>allocator_traits</code>
1193 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2652r2.html">
1197 <entry align="center"> </entry>
1202 <?dbhtml bgcolor="#C8B0B0" ?>
1203 <entry> Explicit lifetime management </entry>
1205 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2590r2.pdf">
1209 <entry align="center"> </entry>
1210 <entry> <code>__cpp_lib_start_lifetime_as >= 202207L</code> </entry>
1214 <?dbhtml bgcolor="#C8B0B0" ?>
1216 Fixing <code>std::start_lifetime_as</code> and
1217 <code>std::start_lifetime_as_array</code>
1220 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2679r2.pdf">
1224 <entry align="center"> </entry>
1229 <entry> out_ptr - a scalable output pointer abstraction </entry>
1231 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1132r8.html">
1235 <entry align="center"> 14.1 </entry>
1236 <entry> <code>__cpp_lib_out_ptr >= 202106L</code> </entry>
1240 <?dbhtml bgcolor="#C8B0B0" ?>
1241 <entry> <code>barrier</code>'s phase completion guarantees </entry>
1243 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2588r3.html">
1247 <entry align="center"> </entry>
1248 <entry> <code>__cpp_lib_barrier >= 202302L</code> </entry>
1252 <?dbhtml bgcolor="#C8B0B0" ?>
1254 Standard Library Modules <code>std</code> and <code>std.compat</code>
1257 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2465r3.pdf">
1261 <entry align="center"> </entry>
1262 <entry> <code>__cpp_lib_modules >= 202207L</code> </entry>