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