1<section xmlns="http://docbook.org/ns/docbook" version="5.0"
2   xml:id="status.iso.2020" xreflabel="Status C++ 2020">
3<?dbhtml filename="status_iso_cxx2020.html"?>
4
5<info><title>C++ 2020</title>
6  <keywordset>
7    <keyword>ISO C++</keyword>
8    <keyword>2020</keyword>
9  </keywordset>
10</info>
11
12<para>
13In this implementation the <literal>-std=gnu++20</literal> or
14<literal>-std=c++20</literal> flag must be used to enable language
15and library
16features. See <link linkend="manual.intro.using.flags">dialect</link>
17options. The pre-defined symbol
18<constant>__cplusplus</constant> is used to check for the
19presence of the required flag.
20</para>
21
22<para>
23This section describes the C++20 and library TS support in the GCC 12 release series,
24not in any particular release.
25</para>
26
27<para>
28The following table lists new library features that are included in
29the C++20 standard. The "Proposal" column provides a link to the
30ISO C++ committee proposal that describes the feature, while the "Status"
31column indicates the first version of GCC that contains an implementation of
32this feature (if it has been implemented).
33A dash (&#x2014;) in the status column indicates that the changes in the proposal
34either do not affect the code in libstdc++, or the changes are not required for conformance.
35The "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:
37Feature-testing recommendations for C++</link> (where applicable)
38or any notes about the implementation.
39</para>
40
41<table frame="all" xml:id="table.cxx20_features">
42<title>C++ 2020 Library Features</title>
43
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"/>
49  <thead>
50    <row>
51      <entry>Library Feature</entry>
52      <entry>Proposal</entry>
53      <entry>Status</entry>
54      <entry>SD-6 Feature Test / Notes</entry>
55    </row>
56  </thead>
57
58  <tbody>
59
60    <row>
61      <entry namest="c1" nameend="c4" align="left">
62        <emphasis role="bold">Compile-time programming</emphasis>
63      </entry>
64    </row>
65
66    <row>
67      <entry>  Add constexpr modifiers to functions in <code>&lt;algorithm&gt;</code> and <code>&lt;utility&gt;</code> Headers </entry>
68      <entry>
69        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0202r3.html">
70        P0202R3 </link>
71      </entry>
72      <entry align="center"> 10.1 </entry>
73      <entry> <code>__cpp_lib_constexpr_algorithms &gt;= 201703L</code> </entry>
74    </row>
75
76    <row>
77      <entry>  Constexpr for <code>swap</code> and swap related functions </entry>
78      <entry>
79        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0879r0.html">
80        P0879R0 </link>
81      </entry>
82      <entry align="center"> 10.1 </entry>
83      <entry> <code>__cpp_lib_constexpr_algorithms &gt;= 201806L</code> </entry>
84    </row>
85
86    <row>
87      <entry>  Constexpr for <code>std::complex</code> </entry>
88      <entry>
89        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0415r1.html">
90        P0415R1 </link>
91      </entry>
92      <entry align="center"> 9.1 </entry>
93      <entry> <code>__cpp_lib_constexpr_complex &gt;= 201711L</code> (since 9.4, see Note 1) </entry>
94    </row>
95
96    <row>
97      <entry>  P0595R2 <code>std::is_constant_evaluated()</code> </entry>
98      <entry>
99        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0595r2.html">
100        P0595R2 </link>
101      </entry>
102      <entry align="center"> 9.1 </entry>
103      <entry> <code>__cpp_lib_is_constant_evaluated &gt;= 201811L</code> </entry>
104    </row>
105
106    <row>
107      <entry>  More constexpr containers </entry>
108      <entry>
109        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0784r7.html">
110        P0784R7 </link>
111      </entry>
112      <entry align="center"> 10.1 </entry>
113      <entry> <code>__cpp_lib_constexpr_dynamic_alloc &gt;= 201907L</code> </entry>
114    </row>
115
116    <row>
117      <entry>  Making <code>std::string</code> constexpr </entry>
118      <entry>
119        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0980r1.pdf">
120        P0980R1 </link>
121      </entry>
122      <entry align="center"> 12.1 </entry>
123      <entry> <code>__cpp_lib_constexpr_string &gt;= 201907L</code> </entry>
124    </row>
125
126    <row>
127      <entry>  Making <code>std::vector</code> constexpr </entry>
128      <entry>
129        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1004r2.pdf">
130        P1004R2 </link>
131      </entry>
132      <entry align="center"> 12.1 </entry>
133      <entry> <code>__cpp_lib_constexpr_vector &gt;= 201907L</code> </entry>
134    </row>
135
136    <row>
137      <entry>  Constexpr in <code>std::pointer_traits</code> </entry>
138      <entry>
139        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1006r1.pdf">
140        P1006R1 </link>
141      </entry>
142      <entry align="center"> 9.1 </entry>
143      <entry> <code>__cpp_lib_constexpr_memory &gt;= 201811L</code> (since 9.4, see Note 1) </entry>
144    </row>
145
146    <row>
147      <entry>  constexpr for <code>&lt;numeric&gt;</code> algorithms </entry>
148      <entry>
149        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1645r1.html">
150        P1645R1 </link>
151      </entry>
152      <entry align="center"> 10.1 </entry>
153      <entry> <code>__cpp_lib_constexpr_numeric &gt;= 201911L</code> </entry>
154    </row>
155
156    <row>
157      <entry>  Constexpr iterator requirements </entry>
158      <entry>
159        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0858r0.html">
160        P0858R0 </link>
161      </entry>
162      <entry align="center"> 9.1 </entry>
163      <entry>
164        <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
165        <row><entry> <code>__cpp_lib_array_constexpr &gt;= 201803L</code> </entry></row>
166        <row><entry> <code>__cpp_lib_string_view &gt;= 201803L</code> </entry></row>
167        <row><entry> (both since 9.4, see Note 1) </entry></row>
168        </tbody></tgroup></informaltable>
169      </entry>
170    </row>
171
172    <row>
173      <entry>  <code>constexpr</code> comparison operators for <code>std::array</code> </entry>
174      <entry>
175        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1023r0.pdf">
176        P1023R0 </link>
177      </entry>
178      <entry align="center"> 10.1 </entry>
179      <entry> <code>__cpp_lib_array_constexpr &gt;= 201806</code> </entry>
180    </row>
181
182    <row>
183      <entry>  Misc constexpr bits </entry>
184      <entry>
185        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1032r1.html">
186        P1032R1 </link>
187      </entry>
188      <entry align="center"> 10.1 </entry>
189      <entry>
190        <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
191        <row><entry> <code>__cpp_lib_array_constexpr &gt;= 201811L</code> </entry></row>
192        <row><entry> <code>__cpp_lib_constexpr_functional &gt;= 201811L</code> </entry></row>
193        <row><entry> <code>__cpp_lib_constexpr_iterator &gt;= 201811L</code> </entry></row>
194        <row><entry> <code>__cpp_lib_constexpr_string_view &gt;= 201811L</code> </entry></row>
195        <row><entry> <code>__cpp_lib_constexpr_tuple &gt;= 201811L</code> </entry></row>
196        <row><entry> <code>__cpp_lib_constexpr_utility &gt;= 201811L</code> </entry></row>
197        </tbody></tgroup></informaltable>
198      </entry>
199    </row>
200
201    <row>
202      <entry>  <code>constexpr <emphasis>INVOKE</emphasis></code> </entry>
203      <entry>
204        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1065r2.html">
205        P1065R2 </link>
206      </entry>
207      <entry align="center"> 10.1 </entry>
208      <entry> <code>__cpp_lib_constexpr_functional &gt;= 201907L</code> </entry>
209    </row>
210
211
212    <row>
213      <entry>  Transformation Trait <code>remove_cvref</code> </entry>
214      <entry>
215        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0550r2.pdf">
216        P0550R2 </link>
217      </entry>
218      <entry align="center"> 9.1 </entry>
219      <entry> <code>__cpp_lib_remove_cvref &gt;= 201711L</code> (since 9.4, see Note 1) </entry>
220    </row>
221
222    <row>
223      <entry>  Implicit conversion traits and utility functions </entry>
224      <entry>
225        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0758r1.html">
226        P0758R1 </link>
227      </entry>
228      <entry align="center"> 9.1 </entry>
229      <entry> <code>__cpp_lib_is_nothrow_convertible &gt;= 201806L</code>  (since 9.4, see Note 1) </entry>
230    </row>
231
232    <row>
233      <entry>  The <code>identity</code> metafunction </entry>
234      <entry>
235        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0887r1.pdf">
236        P0887R1 </link>
237      </entry>
238      <entry align="center"> 9.1 </entry>
239      <entry> <code>__cpp_lib_type_identity &gt;= 201806L</code> (since 9.4, see Note 1) </entry>
240    </row>
241
242
243    <row>
244      <entry>  <code>unwrap_ref_decay</code> and <code>unwrap_reference</code> </entry>
245      <entry>
246        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0318r1.pdf">
247        P0318R1 </link>
248      </entry>
249      <entry align="center"> 9.1 </entry>
250      <entry> <code>__cpp_lib_unwrap_ref &gt;= 201811L</code> (since 9.4, see Note 1) </entry>
251    </row>
252
253    <row>
254      <?dbhtml bgcolor="#B0B0B0" ?>
255      <entry>  Improving Completeness Requirements for Type Traits </entry>
256      <entry>
257        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1285r0.pdf">
258        P1285R0 </link>
259      </entry>
260      <entry align="center"> Partial </entry>
261      <entry />
262    </row>
263
264    <row>
265      <entry>  Missing feature test macros </entry>
266      <entry>
267        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1353r0.html">
268        P1353R0 </link>
269      </entry>
270      <entry align="center"> 9.1 </entry>
271      <entry />
272    </row>
273
274    <row>
275      <entry> Making std::underlying_type SFINAE-friendly </entry>
276      <entry>
277        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0340r3.html">
278        P0340R3 </link>
279      </entry>
280      <entry align="center"> 9.1 </entry>
281      <entry />
282    </row>
283
284    <row>
285      <entry> Traits for [Un]bounded Arrays </entry>
286      <entry>
287        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1357r1.pdf">
288        P1357R1 </link>
289      </entry>
290      <entry align="center"> 9.1 </entry>
291      <entry> <code>__cpp_lib_bounded_array_traits &gt;= 201902L</code> </entry>
292    </row>
293
294    <row>
295      <entry> Layout-compatibility and pointer-interconvertibility traits </entry>
296      <entry>
297        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0466r5.pdf">
298        P0466R5 </link>
299      </entry>
300      <entry align="center"> 12.1 </entry>
301      <entry>
302        <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
303        <row><entry> <code>__cpp_lib_is_layout_compatible &gt;= 201907L</code> </entry></row>
304        <row><entry> <code>__cpp_lib_is_pointer_interconvertible &gt;= 201907L</code> </entry></row>
305        </tbody></tgroup></informaltable>
306      </entry>
307    </row>
308
309    <row>
310      <entry>  Integrating feature-test macros into the C++ WD </entry>
311      <entry>
312        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0941r2.html">
313        P0941R2 </link>
314      </entry>
315      <entry align="center"> 5.1 </entry>
316      <entry />
317    </row>
318
319    <row>
320      <entry>  <code>&lt;version&gt;</code> </entry>
321      <entry>
322        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0754r2.pdf">
323        P0754R2 </link>
324      </entry>
325      <entry align="center"> 9.1 </entry>
326      <entry> <code>__has_include(&lt;version&gt;)</code> </entry>
327    </row>
328
329
330    <row>
331      <entry namest="c1" nameend="c4" align="left">
332        <emphasis role="bold">Synchronization</emphasis>
333      </entry>
334    </row>
335
336    <row>
337      <entry>  Atomic Ref </entry>
338      <entry>
339        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0019r8.html">
340        P0019R8 </link>
341      </entry>
342      <entry align="center"> 10.1 </entry>
343      <entry> <code>__cpp_lib_atomic_ref &gt;= 201806L</code> </entry>
344    </row>
345
346    <row>
347      <entry>  Floating Point Atomic </entry>
348      <entry>
349        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0020r6.html">
350        P0020R6 </link>
351      </entry>
352      <entry align="center"> 10.1 </entry>
353      <entry> <code>__cpp_lib_atomic_float &gt;= 201711L</code> </entry>
354    </row>
355
356    <row>
357      <entry>  C++ Synchronized Buffered Ostream </entry>
358      <entry>
359        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0053r7.pdf">
360        P0053R7 </link>
361      </entry>
362      <entry align="center"> 11.1 </entry>
363      <entry> <code>__cpp_lib_syncbuf &gt;= 201711L</code> </entry>
364    </row>
365
366    <row>
367      <entry>  Manipulators for C++ Synchronized Buffered Ostream </entry>
368      <entry>
369        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0753r2.pdf">
370        P0753R2 </link>
371      </entry>
372      <entry align="center"> 11.1 </entry>
373      <entry> <code>__cpp_lib_syncbuf &gt;= 201803L</code> </entry>
374    </row>
375
376    <row>
377      <entry>  Make <code>std::memory_order</code> a scoped enumeration </entry>
378      <entry>
379        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0439r0.html">
380        P0439R0 </link>
381      </entry>
382      <entry align="center"> 9.1 </entry>
383      <entry />
384    </row>
385
386    <row>
387      <?dbhtml bgcolor="#C8B0B0" ?>
388      <entry>  The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange </entry>
389      <entry>
390        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0528r3.html">
391        P0528R3 </link>
392      </entry>
393      <entry align="center"> </entry>
394      <entry />
395    </row>
396
397    <row>
398      <entry>  Atomic <code>shared_ptr</code> </entry>
399      <entry>
400        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html">
401        P0718R2 </link>
402      </entry>
403      <entry align="center"> 12.1 </entry>
404      <entry> <code> __cpp_lib_atomic_shared_ptr &gt;= 201711L</code> </entry>
405    </row>
406
407    <row>
408      <entry> std::stop_token and std::jthread </entry>
409      <entry>
410        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0660r10.pdf">
411        P0660R10 </link>
412      </entry>
413      <entry align="center"> 10.1 </entry>
414      <entry> <code>__cpp_lib_jthread &gt;= 201907L</code> </entry>
415    </row>
416
417    <row>
418      <entry> Rename <code>condition_variable_any</code> interruptible wait methods </entry>
419      <entry>
420        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1869r1.html">
421        P1869R1 </link>
422      </entry>
423      <entry align="center"> 10.1 </entry>
424      <entry> <code>__cpp_lib_jthread &gt;= 201911L</code> </entry>
425    </row>
426
427    <row>
428      <entry> Atomic waiting and notifying, std::semaphore, std::latch and std::barrier </entry>
429      <entry>
430        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1135r6.html">
431        P1135R6 </link>
432      </entry>
433      <entry align="center"> 11.1 </entry>
434      <entry>
435        <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
436        <row><entry> <code>__cpp_lib_atomic_lock_free_type_aliases &gt;= 201907L</code> </entry></row>
437        <row><entry> <code>__cpp_lib_atomic_flag_test &gt;= 201907L</code> </entry></row>
438        <row><entry> <code>__cpp_lib_atomic_wait &gt;= 201907L</code> </entry></row>
439        <row><entry> <code>__cpp_lib_semaphore &gt;= 201907L</code> </entry></row>
440        <row><entry> <code>__cpp_lib_latch &gt;= 201907L</code> </entry></row>
441        <row><entry> <code>__cpp_lib_barrier &gt;= 201907L</code> </entry></row>
442        </tbody></tgroup></informaltable>
443      </entry>
444    </row>
445
446    <row>
447      <entry> Fixing Atomic Initialization </entry>
448      <entry>
449        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0883r2.pdf">
450        P0883R2 </link>
451      </entry>
452      <entry align="center"> 10.1 </entry>
453      <entry> <code>__cpp_lib_atomic_value_initialization &gt;= 201911L</code> </entry>
454    </row>
455
456
457
458    <row>
459      <entry namest="c1" nameend="c4" align="left">
460        <emphasis role="bold">Ranges and Concepts</emphasis>
461      </entry>
462    </row>
463
464    <row>
465      <entry>  Standard Library Concepts </entry>
466      <entry>
467        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0898r3.pdf">
468        P0898R3 </link>
469      </entry>
470      <entry align="center"> 10.1 </entry>
471      <entry> <code>__cpp_lib_concepts &gt;= 201806L</code> </entry>
472    </row>
473
474    <row>
475      <entry>  Rename concepts to standard_case for C++20, while we still can </entry>
476      <entry>
477        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1754r1.pdf">
478        P1754R1 </link>
479      </entry>
480      <entry align="center"> 10.1 </entry>
481      <entry> <code>__cpp_lib_concepts &gt;= 201907L</code> </entry>
482    </row>
483
484    <row>
485      <entry>  Wording for <emphasis><code>boolean-testable</code></emphasis> </entry>
486      <entry>
487        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1964r2.html">
488        P1964R2 </link>
489      </entry>
490      <entry align="center"> 10.1 </entry>
491      <entry> <code>__cpp_lib_concepts &gt;= 202002L</code> </entry>
492    </row>
493
494    <row>
495      <entry>  The One Ranges Proposal </entry>
496      <entry>
497        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r4.pdf">
498        P0896R4 </link>
499      </entry>
500      <entry align="center"> 10.1 </entry>
501      <entry> <code>__cpp_lib_ranges &gt;= 201811L</code> </entry>
502    </row>
503
504    <row>
505      <entry>  Input Range Adaptors </entry>
506      <entry>
507        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1035r7.pdf">
508        P1035R7 </link>
509      </entry>
510      <entry align="center"> 10.1 </entry>
511      <entry> <code>__cpp_lib_ranges &gt;= 201907L</code> </entry>
512    </row>
513
514    <row>
515      <entry>  <code>ranges</code> compare algorithm are over-constrained </entry>
516      <entry>
517        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1716r3.html">
518        P1716R3 </link>
519      </entry>
520      <entry align="center"> 10.1 </entry>
521      <entry> <code>__cpp_lib_ranges &gt;= 201911L</code> </entry>
522    </row>
523
524    <row>
525      <entry>  Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) </entry>
526      <entry>
527        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1248r1.html">
528        P1248R1 </link>
529      </entry>
530      <entry align="center"> 10.1 </entry>
531      <entry />
532    </row>
533
534    <row>
535      <entry> Ranges Design Cleanup </entry>
536      <entry>
537        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1252r2.pdf">
538        P1252R2 </link>
539      </entry>
540      <entry align="center"> 10.1 </entry>
541      <entry />
542    </row>
543
544    <row>
545      <?dbhtml bgcolor="#C8B0B0" ?>
546      <entry> Avoid template bloat for <code>safe_ranges</code> in combination with ���subrange-y��� view adaptors.</entry>
547      <entry>
548        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1739r4.html">
549        P1739R4 </link>
550      </entry>
551      <entry align="center"> </entry>
552      <entry />
553    </row>
554
555
556    <row>
557      <entry namest="c1" nameend="c4" align="left">
558        <emphasis role="bold">Time, dates, calendars, time zones</emphasis>
559      </entry>
560    </row>
561
562    <row>
563      <?dbhtml bgcolor="#C8B0B0" ?>
564      <entry>  Extending chrono to Calendars and Time Zones </entry>
565      <entry>
566        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html">
567        P0355R7 </link>
568      </entry>
569      <entry/>
570      <entry> <code>__cpp_lib_chrono &gt;= 201803L</code> </entry>
571    </row>
572
573    <row>
574      <?dbhtml bgcolor="#C8B0B0" ?>
575      <entry> Miscellaneous minor fixes for chrono </entry>
576      <entry>
577        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1466r3.html">
578        P1466R3 </link>
579      </entry>
580      <entry/>
581      <entry> <code>__cpp_lib_chrono &gt;= 201907L</code> </entry>
582    </row>
583
584    <row>
585      <entry>  <code>&lt;chrono&gt;</code> <code>zero()</code>, <code>min()</code>, and <code>max()</code> should be <code>noexcept</code> </entry>
586      <entry>
587        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0972r0.pdf">
588        P0972R0 </link>
589      </entry>
590      <entry align="center"> 9.1 </entry>
591      <entry />
592    </row>
593
594
595    <row>
596      <entry namest="c1" nameend="c4" align="left">
597        <emphasis role="bold">Three-way comparison</emphasis>
598      </entry>
599    </row>
600
601    <row>
602      <entry>  Library Support for the Spaceship (Comparison) Operator </entry>
603      <entry>
604        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0768r1.pdf">
605        P0768R1 </link>
606      </entry>
607      <entry align="center"> 10.1 </entry>
608      <entry> <code>__cpp_lib_three_way_comparison &gt;= 201711L</code> </entry>
609    </row>
610
611    <row>
612      <entry>  Symmetry for spaceship </entry>
613      <entry>
614        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0905r1.html">
615        P0905R1 </link>
616      </entry>
617      <entry align="center"> 10.1 </entry>
618      <entry />
619    </row>
620
621    <row>
622      <entry> Adding &lt;=&gt; to the standard library </entry>
623      <entry>
624        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1614r2.html">
625        P1614R2 </link>
626      </entry>
627      <entry align="center"> 10.1 </entry>
628      <entry>
629        <code>__cpp_lib_three_way_comparison &gt;= 201907L</code>
630      </entry>
631    </row>
632
633
634    <row>
635      <entry namest="c1" nameend="c4" align="left">
636        <emphasis role="bold">Strings and text</emphasis>
637      </entry>
638    </row>
639
640    <row>
641      <entry>  <code>string::reserve</code> Should Not Shrink </entry>
642      <entry>
643        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0966r1.html">
644        P0966R1 </link>
645      </entry>
646      <entry align="center"> 11.1 </entry>
647      <entry />
648    </row>
649
650    <row>
651      <entry>  <code>char8_t</code>: A type for UTF-8 characters and strings </entry>
652      <entry>
653        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0482r6.html">
654        P0482R6 </link>
655      </entry>
656      <entry align="center"> 9.1 </entry>
657      <entry> <code>__cpp_lib_char8_t &gt;= 201811L</code> </entry>
658    </row>
659
660    <row>
661      <entry>  <code>char8_t</code> backward compatibility remediation </entry>
662      <entry>
663        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1423r3.html">
664        P1423R3 </link>
665      </entry>
666      <entry align="center"> 10.1 </entry>
667      <entry> <code>__cpp_lib_char8_t &gt;= 201907L</code> </entry>
668    </row>
669
670    <row>
671      <?dbhtml bgcolor="#C8B0B0" ?>
672      <entry> Text formatting </entry>
673      <entry>
674        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r10.html">
675        P0645R10 </link>
676      </entry>
677      <entry align="center"> </entry>
678      <entry>
679        <code>__cpp_lib_format &gt;= 201907L</code>
680      </entry>
681    </row>
682
683    <row>
684      <?dbhtml bgcolor="#C8B0B0" ?>
685      <entry> Integration of chrono with text formatting </entry>
686      <entry>
687        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1361r2.pdf">
688        P1361R2 </link>
689      </entry>
690      <entry align="center"> </entry>
691      <entry>
692        <code>__cpp_lib_format &gt;= 201907L</code>
693      </entry>
694    </row>
695
696    <row>
697      <?dbhtml bgcolor="#C8B0B0" ?>
698      <entry> Printf corner cases in <code>std::format</code> </entry>
699      <entry>
700        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1652r1.html">
701        P1652R1 </link>
702      </entry>
703      <entry align="center"> </entry>
704      <entry>
705        <code>__cpp_lib_format &gt;= 201907L</code>
706      </entry>
707    </row>
708
709    <row>
710      <entry>  String Prefix and Suffix Checking </entry>
711      <entry>
712        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0457r2.html">
713        P0457R2 </link>
714      </entry>
715      <entry align="center"> 9.1 </entry>
716      <entry> <code>__cpp_lib_starts_ends_with &gt;= 201711L</code> (since 9.4, see Note 1) </entry>
717    </row>
718
719    <row>
720      <?dbhtml bgcolor="#C8B0B0" ?>
721      <entry>  Update The Reference To The Unicode Standard </entry>
722      <entry>
723        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1025r1.html">
724        P1025R1 </link>
725      </entry>
726      <entry align="center"> </entry>
727      <entry />
728    </row>
729
730
731    <row>
732      <entry namest="c1" nameend="c4" align="left">
733        <emphasis role="bold">Containers</emphasis>
734      </entry>
735    </row>
736
737    <row>
738      <entry> span: bounds-safe views for sequences of objects </entry>
739      <entry>
740        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0122r7.pdf">
741        P0122R7 </link>
742      </entry>
743      <entry align="center"> 10.1 </entry>
744      <entry> <code>__cpp_lib_span &gt;= 201803L</code> </entry>
745    </row>
746
747    <row>
748      <entry>
749        Usability Enhancements for <classname>std::span</classname>
750      </entry>
751      <entry>
752        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1024r3.pdf">
753        P1024R3 </link>
754      </entry>
755      <entry align="center"> 10.1 </entry>
756      <entry> <code>__cpp_lib_span &gt;= 201902L</code> </entry>
757    </row>
758
759    <row>
760      <entry>  Should Span be Regular? </entry>
761      <entry>
762        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1085r2.md">
763        P1085R2 </link>
764      </entry>
765      <entry align="center"> 10.1 </entry>
766      <entry/>
767    </row>
768
769    <row>
770      <entry> Fixed-size <code>&lt;span&gt;</code> construction from dynamic range </entry>
771      <entry>
772        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1976r2.html">
773        P1976R2 </link>
774      </entry>
775      <entry align="center"> 10.1 </entry>
776      <entry> <code>__cpp_lib_span &gt;= 202002L</code> </entry>
777    </row>
778
779    <row>
780      <entry> <code>std::to_array</code> </entry>
781      <entry>
782        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0325r4.html">
783        P0325R4 </link>
784      </entry>
785      <entry align="center"> 10.1 </entry>
786      <entry> <code>__cpp_lib_to_array &gt;= 201907L</code> </entry>
787    </row>
788
789    <row>
790      <entry>  Checking for Existence of an Element in Associative Containers </entry>
791      <entry>
792        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0458r2.html">
793        P0458R2 </link>
794      </entry>
795      <entry align="center"> 9.1 </entry>
796      <entry />
797    </row>
798
799    <row>
800      <?dbhtml bgcolor="#C8B0B0" ?>
801      <entry>  Comparing Unordered Containers </entry>
802      <entry>
803        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0809r0.pdf">
804        P0809R0 </link>
805      </entry>
806      <entry align="center"> </entry>
807      <entry />
808    </row>
809
810    <row>
811      <entry>  Heterogeneous lookup for unordered containers </entry>
812      <entry>
813        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0919r3.html">
814        P0919R3 </link>
815      </entry>
816      <entry align="center"> 11.1 </entry>
817      <entry> <code>__cpp_lib_generic_unordered_lookup &gt;= 201811</code> </entry>
818    </row>
819
820    <row>
821      <entry> Refinement Proposal for P0919 </entry>
822      <entry>
823        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1690r1.html">
824        P1690R1 </link>
825      </entry>
826      <entry align="center"> 11.1 </entry>
827      <entry/>
828    </row>
829
830    <row>
831      <entry>  Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 </entry>
832      <entry>
833        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html">
834        P1209R0 </link>
835      </entry>
836      <entry align="center"> 9.1 </entry>
837      <entry> <code>__cpp_lib_erase_if &gt;= 201811L</code> </entry>
838    </row>
839
840    <row>
841      <entry>  Improving the Return Value of Erase-Like Algorithms </entry>
842      <entry>
843        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0646r1.pdf">
844        P0646R1 </link>
845      </entry>
846      <entry align="center"> 9.1 </entry>
847      <entry> <code>__cpp_lib_list_remove_return_type &gt;= 201806L</code> </entry>
848    </row>
849
850    <row>
851      <entry>  Improving the Return Value of Erase-Like Algorithms II: Free <code>erase</code>/<code>erase_if</code> </entry>
852      <entry>
853        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf">
854        P1115R3 </link>
855      </entry>
856      <entry align="center"> 9.1 </entry>
857      <entry>
858        <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
859        <row><entry> <code>__cpp_lib_erase_if &gt;= 202002L</code> </entry></row>
860        <row><entry> (defined to <code>201900L</code> for GCC 9.1 and 9.2 so use <code>&gt; 201811L</code>) </entry></row>
861        </tbody></tgroup></informaltable>
862      </entry>
863    </row>
864
865    <row>
866      <entry> Signed ssize() functions, unsigned size() functions </entry>
867      <entry>
868        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1227r2.html">
869        P1227R2 </link>
870      </entry>
871      <entry align="center"> 10.1 </entry>
872      <entry> <code>__cpp_lib_ssize &gt;= 201902L</code> </entry>
873    </row>
874
875
876    <row>
877      <entry namest="c1" nameend="c4" align="left">
878        <emphasis role="bold">Memory management</emphasis>
879      </entry>
880    </row>
881
882    <row>
883      <entry>  Utility to convert a pointer to a raw pointer </entry>
884      <entry>
885        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r2.html">
886        P0653R2 </link>
887      </entry>
888      <entry align="center"> 8.1 </entry>
889      <entry> <code>__cpp_lib_to_address &gt;= 201711L</code> (since 9.4, see Note 1) </entry>
890    </row>
891
892    <row>
893      <entry>  Extending <code>make_shared</code> to Support Arrays </entry>
894      <entry>
895        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html">
896        P0674R1 </link>
897      </entry>
898      <entry align="center"> 12.1 </entry>
899      <entry> <code>__cpp_lib_shared_ptr_arrays &gt;= 201707L</code> </entry>
900    </row>
901
902    <row>
903      <entry>  Efficient sized delete for variable sized classes </entry>
904      <entry>
905        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0722r3.html">
906        P0722R3 </link>
907      </entry>
908      <entry align="center"> 9.1 </entry>
909      <entry> <code>__cpp_lib_destroying_delete &gt;= 201806L</code> </entry>
910    </row>
911
912    <row>
913      <entry>  Utility functions to implement uses-allocator construction </entry>
914      <entry>
915        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0591r4.pdf">
916        P0591R4 </link>
917      </entry>
918      <entry align="center"> 9.1 </entry>
919      <entry>
920        <code>std::scoped_allocator_adaptor</code> changes missing in 9.1.0
921      </entry>
922    </row>
923
924    <row>
925      <entry>  <code>std::assume_aligned</code> </entry>
926      <entry>
927        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1007r3.pdf">
928        P1007R3 </link>
929      </entry>
930      <entry align="center"> 9.1 </entry>
931      <entry> <code>__cpp_lib_assume_aligned &gt;= 201811L</code> (since 9.4, see Note 1) </entry>
932    </row>
933
934    <row>
935      <entry>  Smart pointer creation with default initialization </entry>
936      <entry>
937        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1020r1.html">
938        P1020R1 </link>
939      </entry>
940      <entry align="center"> 12.1 </entry>
941      <entry> <code>__cpp_lib_smart_ptr_for_overwrite &gt;= 201811L</code> </entry>
942    </row>
943
944    <row>
945      <entry>  Make stateful allocator propagation more consistent for <code>operator+(basic_string)</code> </entry>
946      <entry>
947        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1165r1.html">
948        P1165R1 </link>
949      </entry>
950      <entry align="center"> 10.1 </entry>
951      <entry />
952    </row>
953
954    <row>
955      <entry>
956        <classname>polymorphic_allocator&lt;&gt;</classname> as a vocabulary type
957      </entry>
958      <entry>
959        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0339r6.pdf">
960        P0339R6 </link>
961      </entry>
962      <entry align="center"> 9.1 </entry>
963      <entry>
964      <code>__cpp_lib_polymorphic_allocator &gt;= 201902L</code> (since 9.4, see Note 1)
965      </entry>
966    </row>
967
968    <row>
969      <entry>  LWG 2511: guaranteed copy elision for piecewise construction </entry>
970      <entry>
971        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0475r1.html">
972        P0475R1 </link>
973      </entry>
974      <entry align="center"> 7.1 </entry>
975      <entry />
976    </row>
977
978
979    <row>
980      <entry namest="c1" nameend="c4" align="left">
981        <emphasis role="bold">Miscellaneous</emphasis>
982      </entry>
983    </row>
984
985    <row>
986      <entry>  <code>nodiscard</code> in the Library </entry>
987      <entry>
988        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0600r1.pdf">
989        P0600R1 </link>
990      </entry>
991      <entry align="center"> 9.1 </entry>
992      <entry />
993    </row>
994
995    <row>
996      <entry>  de-pessimize legacy algorithms with <code>std::move</code> </entry>
997      <entry>
998        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0616r0.pdf">
999        P0616R0 </link>
1000      </entry>
1001      <entry align="center"> 9.1 </entry>
1002      <entry />
1003    </row>
1004
1005    <row>
1006      <entry>  Deprecate POD </entry>
1007      <entry>
1008        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0767r1.html">
1009        P0767R1 </link>
1010      </entry>
1011      <entry align="center"> 10.1 </entry>
1012      <entry />
1013    </row>
1014
1015    <row>
1016      <entry>  Treating Unnecessary <code>decay</code> </entry>
1017      <entry>
1018        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0777r1.pdf">
1019        P0777R1 </link>
1020      </entry>
1021      <entry align="center"> 9.1 </entry>
1022      <entry />
1023    </row>
1024
1025    <row>
1026      <?dbhtml bgcolor="#C8B0B0" ?>
1027      <entry>  Thou Shalt Not Specialize std Function Templates! </entry>
1028      <entry>
1029        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0551r3.pdf">
1030        P0551R3 </link>
1031      </entry>
1032      <entry align="center"> </entry>
1033      <entry />
1034    </row>
1035
1036    <row>
1037      <entry>  Bit-casting object representations </entry>
1038      <entry>
1039        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0476r2.html">
1040        P0476R2 </link>
1041      </entry>
1042      <entry align="center"> 11.1 </entry>
1043      <entry> <code>__cpp_lib_bit_cast &gt;= 201806L</code> </entry>
1044    </row>
1045
1046    <row>
1047      <entry>  Integral power-of-2 operations </entry>
1048      <entry>
1049        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0556r3.html">
1050        P0556R3 </link>
1051      </entry>
1052      <entry align="center"> 9.1 </entry>
1053      <entry> <code>__cpp_lib_int_pow2 &gt;= 201806L</code> (since 9.4, see Note 1) </entry>
1054    </row>
1055
1056    <row>
1057      <entry> On the names of low-level bit manipulation functions </entry>
1058      <entry>
1059        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1956r1.pdf">
1060        P1956R1 </link>
1061      </entry>
1062      <entry align="center"> 10.1 </entry>
1063      <entry> <code>__cpp_lib_int_pow2 &gt;= 202002L</code> </entry>
1064    </row>
1065
1066    <row>
1067      <entry> Safe integral comparisons </entry>
1068      <entry>
1069        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0586r2.html">
1070        P0586R2 </link>
1071      </entry>
1072      <entry align="center"> 10.1 </entry>
1073      <entry> <code>__cpp_lib_integer_comparison_functions &gt;= 202002L</code> </entry>
1074    </row>
1075
1076    <row>
1077      <entry>  Reviewing Deprecated Facilities of C++17 for C++20 </entry>
1078      <entry>
1079        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r4.html">
1080        P0619R4 </link>
1081      </entry>
1082      <entry align="center"> 12.1 </entry>
1083      <entry />
1084    </row>
1085
1086    <row>
1087      <entry>  <code>fpos</code> Requirements </entry>
1088      <entry>
1089        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0759r1.html">
1090        P0759R1 </link>
1091      </entry>
1092      <entry align="center"> &#x2014; </entry>
1093      <entry />
1094    </row>
1095
1096    <row>
1097      <entry>  Add <code>shift</code> to <code>&lt;algorithm&gt;</code> </entry>
1098      <entry>
1099        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0769r2.pdf">
1100        P0769R2 </link>
1101      </entry>
1102      <entry align="center"> 10.1 </entry>
1103      <entry> <code>__cpp_lib_shift &gt;= 201806L</code> </entry>
1104    </row>
1105
1106    <row>
1107      <?dbhtml bgcolor="#C8B0B0" ?>
1108      <entry>  Standard Library Specification in a Concepts and Contracts World </entry>
1109      <entry>
1110        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0788r3.pdf">
1111        P0788R3 </link>
1112      </entry>
1113      <entry align="center"> </entry>
1114      <entry />
1115    </row>
1116
1117    <row>
1118      <entry>  <code>explicit(bool)</code> </entry>
1119      <entry>
1120        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html">
1121        P0892R2 </link>
1122      </entry>
1123      <entry align="center"> &#x2014; </entry>
1124      <entry />
1125    </row>
1126
1127    <row>
1128      <entry>  Eradicating unnecessarily explicit default constructors from the standard library </entry>
1129      <entry>
1130        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0935r0.html">
1131        P0935R0 </link>
1132      </entry>
1133      <entry align="center"> 9.1 </entry>
1134      <entry />
1135    </row>
1136
1137    <row>
1138      <entry>  <code>std::function</code> move constructor should be <code>noexcept</code> </entry>
1139      <entry>
1140        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0771r1.pdf">
1141        P0771R1 </link>
1142      </entry>
1143      <entry align="center"> 7.2 </entry>
1144      <entry />
1145    </row>
1146
1147    <row>
1148      <entry>  Simplified partial function application </entry>
1149      <entry>
1150        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0356r5.html">
1151        P0356R5 </link>
1152      </entry>
1153      <entry align="center"> 9.1 </entry>
1154      <entry> <code>__cpp_lib_bind_front &gt;= 201811L</code> </entry>
1155    </row>
1156
1157    <row>
1158      <entry>  <code>bind_front</code> should not unwrap <code>reference_wrapper</code> </entry>
1159      <entry>
1160        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1651r0.html">
1161        P1651R0 </link>
1162      </entry>
1163      <entry align="center"> 9.3 </entry>
1164      <entry> <code>__cpp_lib_bind_front &gt;= 201907L</code> </entry>
1165    </row>
1166
1167    <row>
1168      <entry>  <code>reference_wrapper</code> for incomplete types </entry>
1169      <entry>
1170        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0357r3.html">
1171        P0357R3 </link>
1172      </entry>
1173      <entry align="center"> 9.1 </entry>
1174      <entry />
1175    </row>
1176
1177    <row>
1178      <entry>  Fixing <code>operator&gt;&gt;(basic_istream&amp;, CharT*)</code> (LWG 2499) </entry>
1179      <entry>
1180        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0487r1.html">
1181        P0487R1 </link>
1182      </entry>
1183      <entry align="center"> 11.1 </entry>
1184      <entry />
1185    </row>
1186
1187    <row>
1188      <entry>  <code>variant</code> and <code>optional</code> should propagate copy/move triviality </entry>
1189      <entry>
1190        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0602r4.html">
1191        P0602R4 </link>
1192      </entry>
1193      <entry align="center"> 8.3 </entry>
1194      <entry />
1195    </row>
1196
1197    <row>
1198      <entry>  A sane <code>variant</code> converting constructor </entry>
1199      <entry>
1200        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0608r3.html">
1201        P0608R3 </link>
1202      </entry>
1203      <entry align="center"> 10.1 </entry>
1204      <entry />
1205    </row>
1206
1207    <row>
1208      <entry>  <code>visit&lt;R&gt;</code>: Explicit Return Type for <code>visit</code> </entry>
1209      <entry>
1210        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0655r1.pdf">
1211        P0655R1 </link>
1212      </entry>
1213      <entry align="center"> 9.1 </entry>
1214      <entry />
1215    </row>
1216
1217    <row>
1218      <entry>  P0899R1 - LWG 3016 is not a defect </entry>
1219      <entry>
1220        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0899r1.html">
1221        P0899R1 </link>
1222      </entry>
1223      <entry align="center"> 7.1 </entry>
1224      <entry />
1225    </row>
1226
1227    <row>
1228      <entry>  Editorial Guidance for merging P0019r8 and P0528r3 </entry>
1229      <entry>
1230        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1123r0.html">
1231        P1123R0 </link>
1232      </entry>
1233      <entry align="center"> &#x2014; </entry>
1234      <entry />
1235    </row>
1236
1237    <row>
1238      <?dbhtml bgcolor="#C8B0B0" ?>
1239      <entry>  Cleaning up Clause 20 </entry>
1240      <entry>
1241        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1148r0.pdf">
1242        P1148R0 </link>
1243      </entry>
1244      <entry align="center"> </entry>
1245      <entry />
1246    </row>
1247
1248    <row>
1249      <?dbhtml bgcolor="#C8B0B0" ?>
1250      <entry>  Completing the Rebase of Library Fundamentals, Version 3, Working Draft </entry>
1251      <entry>
1252        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1210r0.html">
1253        P1210R0 </link>
1254      </entry>
1255      <entry align="center"> </entry>
1256      <entry />
1257    </row>
1258
1259    <row>
1260      <entry>  Alternative Wording for P0907R4 Signed Integers are Two's Complement </entry>
1261      <entry>
1262        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r1.html">
1263        P1236R1 </link>
1264      </entry>
1265      <entry align="center"> &#x2014; </entry>
1266      <entry/>
1267    </row>
1268
1269    <row>
1270      <entry>
1271        I Stream, You Stream, We All Stream for
1272        <classname>istream_iterator</classname>
1273      </entry>
1274      <entry>
1275        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0738r2.html">
1276        P0738R2 </link>
1277      </entry>
1278      <entry align="center"> 10.1 </entry>
1279      <entry />
1280    </row>
1281
1282    <row>
1283      <entry>
1284        Mandating the Standard Library:
1285        Clause 16 - Language support library
1286      </entry>
1287      <entry>
1288        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf">
1289        P1458R1 </link>
1290      </entry>
1291      <entry align="center"> &#x2014; </entry>
1292      <entry/>
1293    </row>
1294
1295    <row>
1296      <entry>
1297        Mandating the Standard Library:
1298        Clause 18 - Diagnostics library
1299      </entry>
1300      <entry>
1301        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf">
1302        P1459R1 </link>
1303      </entry>
1304      <entry align="center"> &#x2014; </entry>
1305      <entry/>
1306    </row>
1307
1308    <row>
1309      <entry>
1310        Mandating the Standard Library:
1311        Clause 20 - Strings library
1312      </entry>
1313      <entry>
1314        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1462r1.html">
1315        P1462R1 </link>
1316      </entry>
1317      <entry align="center"> &#x2014; </entry>
1318      <entry/>
1319    </row>
1320
1321    <row>
1322      <entry>
1323        Mandating the Standard Library:
1324        Clause 21 - Containers library
1325      </entry>
1326      <entry>
1327        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1463r1.pdf">
1328        P1463R1 </link>
1329      </entry>
1330      <entry align="center"> 10.1 </entry>
1331      <entry/>
1332    </row>
1333
1334    <row>
1335      <?dbhtml bgcolor="#C8B0B0" ?>
1336      <entry>
1337        Mandating the Standard Library:
1338        Clause 22 - Iterators library
1339      </entry>
1340      <entry>
1341        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1464r1.pdf">
1342        P1464R1 </link>
1343      </entry>
1344      <entry align="center"> </entry>
1345      <entry />
1346    </row>
1347
1348    <row>
1349      <entry> Make <code>create_directory()</code> Intuitive </entry>
1350      <entry>
1351        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1164r1.pdf">
1352        P1164R1
1353  </link>
1354      </entry>
1355      <entry align="center"> 8.3 </entry>
1356      <entry> Treated as a DR for C++17 </entry>
1357    </row>
1358
1359    <row>
1360      <entry>
1361        Target Vectorization Policies from Parallelism V2 TS to C++20
1362      </entry>
1363      <entry>
1364        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1001r2.html">
1365        P1001R2 </link>
1366      </entry>
1367      <entry align="center"> 9.1 </entry>
1368      <entry> <code>__cpp_lib_execution &gt;= 201902L</code> (since 9.4, see Note 1)</entry>
1369    </row>
1370
1371    <row>
1372      <entry> Merge Coroutines TS into C++20 working draft </entry>
1373      <entry>
1374        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0912r5.html">
1375        P0912R5 </link>
1376      </entry>
1377      <entry align="center"> 10.1 </entry>
1378      <entry> <code>__cpp_lib_coroutines &gt;= 201902L</code> </entry>
1379    </row>
1380
1381    <row>
1382      <entry>  Endian just Endian </entry>
1383      <entry>
1384        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0463r1.html">
1385        P0463R1 </link>
1386      </entry>
1387      <entry align="center"> 8.1 </entry>
1388      <entry> <code>__cpp_lib_endian &gt;= 201907L</code> </entry>
1389    </row>
1390
1391    <row>
1392      <entry> Bit operations </entry>
1393      <entry>
1394        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html">
1395        P0553R4 </link>
1396      </entry>
1397      <entry align="center"> 9.1 </entry>
1398      <entry> <code>__cpp_lib_bitops &gt;= 201907L</code> (since 9.4, see Note 1) </entry>
1399    </row>
1400
1401    <row>
1402      <entry>  Well-behaved interpolation for numbers and pointers </entry>
1403      <entry>
1404        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0811r3.html">
1405        P0811R3 </link>
1406      </entry>
1407      <entry align="center"> 9.1 </entry>
1408      <entry> <code>__cpp_lib_interpolate &gt;= 201902L</code> </entry>
1409    </row>
1410
1411    <row>
1412      <entry> Mathematical constants </entry>
1413      <entry>
1414        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0631r8.pdf">
1415        P0631R8 </link>
1416      </entry>
1417      <entry align="center"> 10.1 </entry>
1418      <entry> <code>__cpp_lib_math_constants &gt;= 201907L</code> </entry>
1419    </row>
1420
1421    <row>
1422      <entry> std::source_location </entry>
1423      <entry>
1424        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1208r6.pdf">
1425        P1208R6 </link>
1426      </entry>
1427      <entry align="center"> 11.1 </entry>
1428      <entry>
1429        <code>__cpp_lib_source_location &gt;= 201907L</code>
1430      </entry>
1431    </row>
1432
1433    <row>
1434      <entry> Efficient access to std::basic_stringbuf's Buffer </entry>
1435      <entry>
1436        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0408r7.pdf">
1437        P0408R7 </link>
1438      </entry>
1439      <entry align="center"> 11.1 </entry>
1440      <entry />
1441    </row>
1442
1443  </tbody>
1444</tgroup>
1445</table>
1446
1447<para>
1448Note 1: This feature is supported in older releases but the
1449<code>__cpp_lib</code> macro is not defined to the right value
1450(or not defined at all) until the version shown in parentheses.
1451</para>
1452
1453</section>
1454