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