Fix timevar.cc build on systems that don't have CLOCK_MONOTONIC
[gcc.git] / libstdc++-v3 / doc / xml / manual / status_cxx2020.xml
blob0e3e4c3de7f2ae085c7dea94ae754fed9024e35c
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"?>
5 <info><title>C++ 2020</title>
6   <keywordset>
7     <keyword>ISO C++</keyword>
8     <keyword>2020</keyword>
9   </keywordset>
10 </info>
12 <para>
13 In this implementation the <literal>-std=gnu++20</literal> or
14 <literal>-std=c++20</literal> flag must be used to enable language
15 and library
16 features. See <link linkend="manual.intro.using.flags">dialect</link>
17 options. The pre-defined symbol
18 <constant>__cplusplus</constant> is used to check for the
19 presence of the required flag.
20 </para>
22 <para>
23 This section describes the C++20 and library TS support in
24 mainline GCC, not in any particular release.
25 </para>
27 <para>
28 The following table lists new library features that are included in
29 the C++20 standard. The "Proposal" column provides a link to the
30 ISO C++ committee proposal that describes the feature, while the "Status"
31 column indicates the first version of GCC that contains an implementation of
32 this feature (if it has been implemented).
33 A dash (&#x2014;) in the status column indicates that the changes in the proposal
34 either do not affect the code in libstdc++, or the changes are not required for conformance.
35 The "SD-6 Feature Test / Notes" column shows the corresponding macro or header from
36 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">SD-6:
37 Feature-testing recommendations for C++</link> (where applicable)
38 or any notes about the implementation.
39 </para>
41 <table frame="all" xml:id="table.cxx20_features">
42 <title>C++ 2020 Library Features</title>
44 <tgroup cols="4" align="left" colsep="0" rowsep="1">
45 <colspec colname="c1"/>
46 <colspec colname="c2"/>
47 <colspec colname="c3"/>
48 <colspec colname="c4"/>
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>
58   <tbody>
60     <row>
61       <entry namest="c1" nameend="c4" align="left">
62         <emphasis role="bold">Compile-time programming</emphasis>
63       </entry>
64     </row>
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="https://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>
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="https://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>
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="https://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>
96     <row>
97       <entry>  <code>std::is_constant_evaluated()</code> </entry>
98       <entry>
99         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
106     <row>
107       <entry>  More constexpr containers </entry>
108       <entry>
109         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
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="https://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>
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="https://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>
156     <row>
157       <entry>  Constexpr iterator requirements </entry>
158       <entry>
159         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
182     <row>
183       <entry>  Misc constexpr bits </entry>
184       <entry>
185         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
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="https://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>
232     <row>
233       <entry>  The <code>identity</code> metafunction </entry>
234       <entry>
235         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
263     <row>
264       <entry>  Missing feature test macros </entry>
265       <entry>
266         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
283     <row>
284       <entry> Traits for [Un]bounded Arrays </entry>
285       <entry>
286         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
318     <row>
319       <entry>  <code>&lt;version&gt;</code> </entry>
320       <entry>
321         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
329     <row>
330       <entry namest="c1" nameend="c4" align="left">
331         <emphasis role="bold">Synchronization</emphasis>
332       </entry>
333     </row>
335     <row>
336       <entry>  Atomic Ref </entry>
337       <entry>
338         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
345     <row>
346       <entry>  Floating Point Atomic </entry>
347       <entry>
348         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
355     <row>
356       <entry>  C++ Synchronized Buffered Ostream </entry>
357       <entry>
358         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://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>
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="https://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>
385     <row>
386       <entry>  The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange </entry>
387       <entry>
388         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0528r3.html">
389         P0528R3 </link>
390       </entry>
391       <entry align="center"> 13.1 </entry>
392       <entry />
393     </row>
395     <row>
396       <entry>  Atomic <code>shared_ptr</code> </entry>
397       <entry>
398         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html">
399         P0718R2 </link>
400       </entry>
401       <entry align="center"> 12.1 </entry>
402       <entry> <code> __cpp_lib_atomic_shared_ptr &gt;= 201711L</code> </entry>
403     </row>
405     <row>
406       <entry> std::stop_token and std::jthread </entry>
407       <entry>
408         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0660r10.pdf">
409         P0660R10 </link>
410       </entry>
411       <entry align="center"> 10.1 </entry>
412       <entry> <code>__cpp_lib_jthread &gt;= 201907L</code> </entry>
413     </row>
415     <row>
416       <entry> Rename <code>condition_variable_any</code> interruptible wait methods </entry>
417       <entry>
418         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1869r1.html">
419         P1869R1 </link>
420       </entry>
421       <entry align="center"> 10.1 </entry>
422       <entry> <code>__cpp_lib_jthread &gt;= 201911L</code> </entry>
423     </row>
425     <row>
426       <entry> Atomic waiting and notifying, std::semaphore, std::latch and std::barrier </entry>
427       <entry>
428         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1135r6.html">
429         P1135R6 </link>
430       </entry>
431       <entry align="center"> 11.1 </entry>
432       <entry>
433         <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
434         <row><entry> <code>__cpp_lib_atomic_lock_free_type_aliases &gt;= 201907L</code> </entry></row>
435         <row><entry> <code>__cpp_lib_atomic_flag_test &gt;= 201907L</code> </entry></row>
436         <row><entry> <code>__cpp_lib_atomic_wait &gt;= 201907L</code> </entry></row>
437         <row><entry> <code>__cpp_lib_semaphore &gt;= 201907L</code> </entry></row>
438         <row><entry> <code>__cpp_lib_latch &gt;= 201907L</code> </entry></row>
439         <row><entry> <code>__cpp_lib_barrier &gt;= 201907L</code> </entry></row>
440         </tbody></tgroup></informaltable>
441       </entry>
442     </row>
444     <row>
445       <entry> Fixing Atomic Initialization </entry>
446       <entry>
447         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0883r2.pdf">
448         P0883R2 </link>
449       </entry>
450       <entry align="center"> 10.1 </entry>
451       <entry> <code>__cpp_lib_atomic_value_initialization &gt;= 201911L</code> </entry>
452     </row>
456     <row>
457       <entry namest="c1" nameend="c4" align="left">
458         <emphasis role="bold">Ranges and Concepts</emphasis>
459       </entry>
460     </row>
462     <row>
463       <entry>  Standard Library Concepts </entry>
464       <entry>
465         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0898r3.pdf">
466         P0898R3 </link>
467       </entry>
468       <entry align="center"> 10.1 </entry>
469       <entry> <code>__cpp_lib_concepts &gt;= 201806L</code> </entry>
470     </row>
472     <row>
473       <entry>  Rename concepts to standard_case for C++20, while we still can </entry>
474       <entry>
475         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1754r1.pdf">
476         P1754R1 </link>
477       </entry>
478       <entry align="center"> 10.1 </entry>
479       <entry> <code>__cpp_lib_concepts &gt;= 201907L</code> </entry>
480     </row>
482     <row>
483       <entry>  Wording for <emphasis><code>boolean-testable</code></emphasis> </entry>
484       <entry>
485         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1964r2.html">
486         P1964R2 </link>
487       </entry>
488       <entry align="center"> 10.1 </entry>
489       <entry> <code>__cpp_lib_concepts &gt;= 202002L</code> </entry>
490     </row>
492     <row>
493       <entry>  The One Ranges Proposal </entry>
494       <entry>
495         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r4.pdf">
496         P0896R4 </link>
497       </entry>
498       <entry align="center"> 10.1 </entry>
499       <entry> <code>__cpp_lib_ranges &gt;= 201811L</code> </entry>
500     </row>
502     <row>
503       <entry>  Input Range Adaptors </entry>
504       <entry>
505         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1035r7.pdf">
506         P1035R7 </link>
507       </entry>
508       <entry align="center"> 10.1 </entry>
509       <entry> <code>__cpp_lib_ranges &gt;= 201907L</code> </entry>
510     </row>
512     <row>
513       <entry>  <code>ranges</code> compare algorithm are over-constrained </entry>
514       <entry>
515         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1716r3.html">
516         P1716R3 </link>
517       </entry>
518       <entry align="center"> 10.1 </entry>
519       <entry> <code>__cpp_lib_ranges &gt;= 201911L</code> </entry>
520     </row>
522     <row>
523       <entry>  Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) </entry>
524       <entry>
525         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1248r1.html">
526         P1248R1 </link>
527       </entry>
528       <entry align="center"> 10.1 </entry>
529       <entry />
530     </row>
532     <row>
533       <entry> Ranges Design Cleanup </entry>
534       <entry>
535         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1252r2.pdf">
536         P1252R2 </link>
537       </entry>
538       <entry align="center"> 10.1 </entry>
539       <entry />
540     </row>
542     <row>
543       <entry> Avoid template bloat for <code>safe_ranges</code> in combination with â€˜subrange-y’ view adaptors.</entry>
544       <entry>
545         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1739r4.html">
546         P1739R4 </link>
547       </entry>
548       <entry align="center"> 12.1 </entry>
549       <entry />
550     </row>
553     <row>
554       <entry namest="c1" nameend="c4" align="left">
555         <emphasis role="bold">Time, dates, calendars, time zones</emphasis>
556       </entry>
557     </row>
559     <row>
560       <entry>  Extending chrono to Calendars and Time Zones </entry>
561       <entry>
562         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html">
563         P0355R7 </link>
564       </entry>
565       <entry> 14.1 (see Note 2) </entry>
566       <entry> <code>__cpp_lib_chrono &gt;= 201803L</code> </entry>
567     </row>
569     <row>
570       <entry> Miscellaneous minor fixes for chrono </entry>
571       <entry>
572         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1466r3.html">
573         P1466R3 </link>
574       </entry>
575       <entry> 11.1 (see Note 2) </entry>
576       <entry> <code>__cpp_lib_chrono &gt;= 201907L</code> </entry>
577     </row>
579     <row>
580       <entry>  <code>&lt;chrono&gt;</code> <code>zero()</code>, <code>min()</code>, and <code>max()</code> should be <code>noexcept</code> </entry>
581       <entry>
582         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0972r0.pdf">
583         P0972R0 </link>
584       </entry>
585       <entry align="center"> 9.1 </entry>
586       <entry />
587     </row>
590     <row>
591       <entry namest="c1" nameend="c4" align="left">
592         <emphasis role="bold">Three-way comparison</emphasis>
593       </entry>
594     </row>
596     <row>
597       <entry>  Library Support for the Spaceship (Comparison) Operator </entry>
598       <entry>
599         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0768r1.pdf">
600         P0768R1 </link>
601       </entry>
602       <entry align="center"> 10.1 </entry>
603       <entry> <code>__cpp_lib_three_way_comparison &gt;= 201711L</code> </entry>
604     </row>
606     <row>
607       <entry>  Symmetry for spaceship </entry>
608       <entry>
609         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0905r1.html">
610         P0905R1 </link>
611       </entry>
612       <entry align="center"> 10.1 </entry>
613       <entry />
614     </row>
616     <row>
617       <entry> Adding &lt;=&gt; to the standard library </entry>
618       <entry>
619         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1614r2.html">
620         P1614R2 </link>
621       </entry>
622       <entry align="center"> 10.1 </entry>
623       <entry>
624         <code>__cpp_lib_three_way_comparison &gt;= 201907L</code>
625       </entry>
626     </row>
629     <row>
630       <entry namest="c1" nameend="c4" align="left">
631         <emphasis role="bold">Strings and text</emphasis>
632       </entry>
633     </row>
635     <row>
636       <entry>  <code>string::reserve</code> Should Not Shrink </entry>
637       <entry>
638         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0966r1.html">
639         P0966R1 </link>
640       </entry>
641       <entry align="center"> 11.1 </entry>
642       <entry />
643     </row>
645     <row>
646       <entry>  <code>char8_t</code>: A type for UTF-8 characters and strings </entry>
647       <entry>
648         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0482r6.html">
649         P0482R6 </link>
650       </entry>
651       <entry align="center"> 9.1 </entry>
652       <entry> <code>__cpp_lib_char8_t &gt;= 201811L</code> </entry>
653     </row>
655     <row>
656       <entry>  <code>char8_t</code> backward compatibility remediation </entry>
657       <entry>
658         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1423r3.html">
659         P1423R3 </link>
660       </entry>
661       <entry align="center"> 10.1 </entry>
662       <entry> <code>__cpp_lib_char8_t &gt;= 201907L</code> </entry>
663     </row>
665     <row>
666       <entry> Text formatting </entry>
667       <entry>
668         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0645r10.html">
669         P0645R10 </link>
670       </entry>
671       <entry align="center"> 13.1 </entry>
672       <entry>
673         <code>__cpp_lib_format &gt;= 201907L</code>
674       </entry>
675     </row>
677     <row>
678       <entry> Integration of chrono with text formatting </entry>
679       <entry>
680         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1361r2.pdf">
681         P1361R2 </link>
682       </entry>
683       <entry align="center"> 13.1 </entry>
684       <entry>
685         <code>__cpp_lib_format &gt;= 201907L</code>
686       </entry>
687     </row>
689     <row>
690       <entry> Printf corner cases in <code>std::format</code> </entry>
691       <entry>
692         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1652r1.html">
693         P1652R1 </link>
694       </entry>
695       <entry align="center"> 13.1 </entry>
696       <entry>
697         <code>__cpp_lib_format &gt;= 201907L</code>
698       </entry>
699     </row>
701     <row>
702       <entry>  String Prefix and Suffix Checking </entry>
703       <entry>
704         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0457r2.html">
705         P0457R2 </link>
706       </entry>
707       <entry align="center"> 9.1 </entry>
708       <entry> <code>__cpp_lib_starts_ends_with &gt;= 201711L</code> (since 9.4, see Note 1) </entry>
709     </row>
711     <row>
712       <entry>  Update The Reference To The Unicode Standard </entry>
713       <entry>
714         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1025r1.html">
715         P1025R1 </link>
716       </entry>
717       <entry align="center"> &#x2014;</entry>
718       <entry />
719     </row>
722     <row>
723       <entry namest="c1" nameend="c4" align="left">
724         <emphasis role="bold">Containers</emphasis>
725       </entry>
726     </row>
728     <row>
729       <entry> span: bounds-safe views for sequences of objects </entry>
730       <entry>
731         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0122r7.pdf">
732         P0122R7 </link>
733       </entry>
734       <entry align="center"> 10.1 </entry>
735       <entry> <code>__cpp_lib_span &gt;= 201803L</code> </entry>
736     </row>
738     <row>
739       <entry>
740         Usability Enhancements for <classname>std::span</classname>
741       </entry>
742       <entry>
743         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1024r3.pdf">
744         P1024R3 </link>
745       </entry>
746       <entry align="center"> 10.1 </entry>
747       <entry> <code>__cpp_lib_span &gt;= 201902L</code> </entry>
748     </row>
750     <row>
751       <entry>  Should Span be Regular? </entry>
752       <entry>
753         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1085r2.md">
754         P1085R2 </link>
755       </entry>
756       <entry align="center"> 10.1 </entry>
757       <entry/>
758     </row>
760     <row>
761       <entry> Fixed-size <code>&lt;span&gt;</code> construction from dynamic range </entry>
762       <entry>
763         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1976r2.html">
764         P1976R2 </link>
765       </entry>
766       <entry align="center"> 10.1 </entry>
767       <entry> <code>__cpp_lib_span &gt;= 202002L</code> </entry>
768     </row>
770     <row>
771       <entry> <code>std::to_array</code> </entry>
772       <entry>
773         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0325r4.html">
774         P0325R4 </link>
775       </entry>
776       <entry align="center"> 10.1 </entry>
777       <entry> <code>__cpp_lib_to_array &gt;= 201907L</code> </entry>
778     </row>
780     <row>
781       <entry>  Checking for Existence of an Element in Associative Containers </entry>
782       <entry>
783         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0458r2.html">
784         P0458R2 </link>
785       </entry>
786       <entry align="center"> 9.1 </entry>
787       <entry />
788     </row>
790     <row>
791       <entry>  Comparing Unordered Containers </entry>
792       <entry>
793         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0809r0.pdf">
794         P0809R0 </link>
795       </entry>
796       <entry align="center"> &#x2014; </entry>
797       <entry />
798     </row>
800     <row>
801       <entry>  Heterogeneous lookup for unordered containers </entry>
802       <entry>
803         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0919r3.html">
804         P0919R3 </link>
805       </entry>
806       <entry align="center"> 11.1 </entry>
807       <entry> <code>__cpp_lib_generic_unordered_lookup &gt;= 201811</code> </entry>
808     </row>
810     <row>
811       <entry> Refinement Proposal for P0919 </entry>
812       <entry>
813         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1690r1.html">
814         P1690R1 </link>
815       </entry>
816       <entry align="center"> 11.1 </entry>
817       <entry/>
818     </row>
820     <row>
821       <entry>  Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 </entry>
822       <entry>
823         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html">
824         P1209R0 </link>
825       </entry>
826       <entry align="center"> 9.1 </entry>
827       <entry> <code>__cpp_lib_erase_if &gt;= 201811L</code> </entry>
828     </row>
830     <row>
831       <entry>  Improving the Return Value of Erase-Like Algorithms </entry>
832       <entry>
833         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0646r1.pdf">
834         P0646R1 </link>
835       </entry>
836       <entry align="center"> 9.1 </entry>
837       <entry> <code>__cpp_lib_list_remove_return_type &gt;= 201806L</code> </entry>
838     </row>
840     <row>
841       <entry>  Improving the Return Value of Erase-Like Algorithms II: Free <code>erase</code>/<code>erase_if</code> </entry>
842       <entry>
843         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf">
844         P1115R3 </link>
845       </entry>
846       <entry align="center"> 9.1 </entry>
847       <entry>
848         <informaltable colsep="0" rowsep="0" rowheader="norowheader" frame="none"><tgroup cols="1"><tbody>
849         <row><entry> <code>__cpp_lib_erase_if &gt;= 202002L</code> </entry></row>
850         <row><entry> (defined to <code>201900L</code> for GCC 9.1 and 9.2 so use <code>&gt; 201811L</code>) </entry></row>
851         </tbody></tgroup></informaltable>
852       </entry>
853     </row>
855     <row>
856       <entry> Signed ssize() functions, unsigned size() functions </entry>
857       <entry>
858         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1227r2.html">
859         P1227R2 </link>
860       </entry>
861       <entry align="center"> 10.1 </entry>
862       <entry> <code>__cpp_lib_ssize &gt;= 201902L</code> </entry>
863     </row>
866     <row>
867       <entry namest="c1" nameend="c4" align="left">
868         <emphasis role="bold">Memory management</emphasis>
869       </entry>
870     </row>
872     <row>
873       <entry>  Utility to convert a pointer to a raw pointer </entry>
874       <entry>
875         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r2.html">
876         P0653R2 </link>
877       </entry>
878       <entry align="center"> 8.1 </entry>
879       <entry> <code>__cpp_lib_to_address &gt;= 201711L</code> (since 9.4, see Note 1) </entry>
880     </row>
882     <row>
883       <entry>  Extending <code>make_shared</code> to Support Arrays </entry>
884       <entry>
885         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html">
886         P0674R1 </link>
887       </entry>
888       <entry align="center"> 12.1 </entry>
889       <entry> <code>__cpp_lib_shared_ptr_arrays &gt;= 201707L</code> </entry>
890     </row>
892     <row>
893       <entry>  Efficient sized delete for variable sized classes </entry>
894       <entry>
895         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0722r3.html">
896         P0722R3 </link>
897       </entry>
898       <entry align="center"> 9.1 </entry>
899       <entry> <code>__cpp_lib_destroying_delete &gt;= 201806L</code> </entry>
900     </row>
902     <row>
903       <entry>  Utility functions to implement uses-allocator construction </entry>
904       <entry>
905         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0591r4.pdf">
906         P0591R4 </link>
907       </entry>
908       <entry align="center"> 9.1 </entry>
909       <entry>
910         <code>std::scoped_allocator_adaptor</code> changes missing in 9.1.0
911       </entry>
912     </row>
914     <row>
915       <entry>  <code>std::assume_aligned</code> </entry>
916       <entry>
917         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1007r3.pdf">
918         P1007R3 </link>
919       </entry>
920       <entry align="center"> 9.1 </entry>
921       <entry> <code>__cpp_lib_assume_aligned &gt;= 201811L</code> (since 9.4, see Note 1) </entry>
922     </row>
924     <row>
925       <entry>  Smart pointer creation with default initialization </entry>
926       <entry>
927         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1020r1.html">
928         P1020R1 </link>
929       </entry>
930       <entry align="center"> 12.1 </entry>
931       <entry> <code>__cpp_lib_smart_ptr_for_overwrite &gt;= 201811L</code> </entry>
932     </row>
934     <row>
935       <entry>  Rename "default_init" Functions </entry>
936       <entry>
937         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1973r1.pdf">
938         P1973R1 </link>
939       </entry>
940       <entry align="center"> 12.1 </entry>
941       <entry> <code>__cpp_lib_smart_ptr_for_overwrite &gt;= 201811L</code> </entry>
942     </row>
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="https://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>
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="https://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>
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="https://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>
979     <row>
980       <entry namest="c1" nameend="c4" align="left">
981         <emphasis role="bold">Miscellaneous</emphasis>
982       </entry>
983     </row>
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="https://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>
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="https://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>
1005     <row>
1006       <entry>  Deprecate POD </entry>
1007       <entry>
1008         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
1015     <row>
1016       <entry>  Treating Unnecessary <code>decay</code> </entry>
1017       <entry>
1018         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://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>
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="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0551r3.pdf">
1030         P0551R3 </link>
1031       </entry>
1032       <entry align="center"> </entry>
1033       <entry>These changes will not be implemented.</entry>
1034     </row>
1036     <row>
1037       <entry>  Bit-casting object representations </entry>
1038       <entry>
1039         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0476r2.html">
1040         P0476R2 </link>
1041       </entry>
1042       <entry align="center"> 11.1 </entry>
1043       <entry> <code>__cpp_lib_bit_cast &gt;= 201806L</code> </entry>
1044     </row>
1046     <row>
1047       <entry>  Integral power-of-2 operations </entry>
1048       <entry>
1049         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0556r3.html">
1050         P0556R3 </link>
1051       </entry>
1052       <entry align="center"> 9.1 </entry>
1053       <entry> <code>__cpp_lib_int_pow2 &gt;= 201806L</code> (since 9.4, see Note 1) </entry>
1054     </row>
1056     <row>
1057       <entry> On the names of low-level bit manipulation functions </entry>
1058       <entry>
1059         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1956r1.pdf">
1060         P1956R1 </link>
1061       </entry>
1062       <entry align="center"> 10.1 </entry>
1063       <entry> <code>__cpp_lib_int_pow2 &gt;= 202002L</code> </entry>
1064     </row>
1066     <row>
1067       <entry> Safe integral comparisons </entry>
1068       <entry>
1069         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0586r2.html">
1070         P0586R2 </link>
1071       </entry>
1072       <entry align="center"> 10.1 </entry>
1073       <entry> <code>__cpp_lib_integer_comparison_functions &gt;= 202002L</code> </entry>
1074     </row>
1076     <row>
1077       <entry>  Reviewing Deprecated Facilities of C++17 for C++20 </entry>
1078       <entry>
1079         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r4.html">
1080         P0619R4 </link>
1081       </entry>
1082       <entry align="center"> 12.1 </entry>
1083       <entry />
1084     </row>
1086     <row>
1087       <entry>  <code>fpos</code> Requirements </entry>
1088       <entry>
1089         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0759r1.html">
1090         P0759R1 </link>
1091       </entry>
1092       <entry align="center"> &#x2014; </entry>
1093       <entry />
1094     </row>
1096     <row>
1097       <entry>  Add <code>shift</code> to <code>&lt;algorithm&gt;</code> </entry>
1098       <entry>
1099         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0769r2.pdf">
1100         P0769R2 </link>
1101       </entry>
1102       <entry align="center"> 10.1 </entry>
1103       <entry> <code>__cpp_lib_shift &gt;= 201806L</code> </entry>
1104     </row>
1106     <row>
1107       <entry>  Standard Library Specification in a Concepts and Contracts World </entry>
1108       <entry>
1109         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0788r3.pdf">
1110         P0788R3 </link>
1111       </entry>
1112       <entry align="center"> &#x2014; </entry>
1113       <entry />
1114     </row>
1116     <row>
1117       <entry>  <code>explicit(bool)</code> </entry>
1118       <entry>
1119         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html">
1120         P0892R2 </link>
1121       </entry>
1122       <entry align="center"> &#x2014; </entry>
1123       <entry />
1124     </row>
1126     <row>
1127       <entry>  Eradicating unnecessarily explicit default constructors from the standard library </entry>
1128       <entry>
1129         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0935r0.html">
1130         P0935R0 </link>
1131       </entry>
1132       <entry align="center"> 9.1 </entry>
1133       <entry />
1134     </row>
1136     <row>
1137       <entry>  <code>std::function</code> move constructor should be <code>noexcept</code> </entry>
1138       <entry>
1139         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0771r1.pdf">
1140         P0771R1 </link>
1141       </entry>
1142       <entry align="center"> 7.2 </entry>
1143       <entry />
1144     </row>
1146     <row>
1147       <entry>  Simplified partial function application </entry>
1148       <entry>
1149         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0356r5.html">
1150         P0356R5 </link>
1151       </entry>
1152       <entry align="center"> 9.1 </entry>
1153       <entry> <code>__cpp_lib_bind_front &gt;= 201811L</code> </entry>
1154     </row>
1156     <row>
1157       <entry>  <code>bind_front</code> should not unwrap <code>reference_wrapper</code> </entry>
1158       <entry>
1159         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1651r0.html">
1160         P1651R0 </link>
1161       </entry>
1162       <entry align="center"> 9.3 </entry>
1163       <entry> <code>__cpp_lib_bind_front &gt;= 201907L</code> </entry>
1164     </row>
1166     <row>
1167       <entry>  <code>reference_wrapper</code> for incomplete types </entry>
1168       <entry>
1169         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0357r3.html">
1170         P0357R3 </link>
1171       </entry>
1172       <entry align="center"> 9.1 </entry>
1173       <entry />
1174     </row>
1176     <row>
1177       <entry>  Fixing <code>operator&gt;&gt;(basic_istream&amp;, CharT*)</code> (LWG 2499) </entry>
1178       <entry>
1179         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0487r1.html">
1180         P0487R1 </link>
1181       </entry>
1182       <entry align="center"> 11.1 </entry>
1183       <entry />
1184     </row>
1186     <row>
1187       <entry>  <code>variant</code> and <code>optional</code> should propagate copy/move triviality </entry>
1188       <entry>
1189         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0602r4.html">
1190         P0602R4 </link>
1191       </entry>
1192       <entry align="center"> 8.3 </entry>
1193       <entry />
1194     </row>
1196     <row>
1197       <entry>  A sane <code>variant</code> converting constructor </entry>
1198       <entry>
1199         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0608r3.html">
1200         P0608R3 </link>
1201       </entry>
1202       <entry align="center"> 10.1 </entry>
1203       <entry />
1204     </row>
1206     <row>
1207       <entry>  <code>visit&lt;R&gt;</code>: Explicit Return Type for <code>visit</code> </entry>
1208       <entry>
1209         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0655r1.pdf">
1210         P0655R1 </link>
1211       </entry>
1212       <entry align="center"> 9.1 </entry>
1213       <entry />
1214     </row>
1216     <row>
1217       <entry>  P0899R1 - LWG 3016 is not a defect </entry>
1218       <entry>
1219         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0899r1.html">
1220         P0899R1 </link>
1221       </entry>
1222       <entry align="center"> 7.1 </entry>
1223       <entry />
1224     </row>
1226     <row>
1227       <entry>  Editorial Guidance for merging P0019r8 and P0528r3 </entry>
1228       <entry>
1229         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1123r0.html">
1230         P1123R0 </link>
1231       </entry>
1232       <entry align="center"> &#x2014; </entry>
1233       <entry />
1234     </row>
1236     <row>
1237       <entry>  Cleaning up Clause 20 </entry>
1238       <entry>
1239         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1148r0.pdf">
1240         P1148R0 </link>
1241       </entry>
1242       <entry align="center"> &#x2014; </entry>
1243       <entry />
1244     </row>
1246     <row>
1247       <?dbhtml bgcolor="#C8B0B0" ?>
1248       <entry>  Completing the Rebase of Library Fundamentals, Version 3, Working Draft </entry>
1249       <entry>
1250         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1210r0.html">
1251         P1210R0 </link>
1252       </entry>
1253       <entry align="center"> </entry>
1254       <entry />
1255     </row>
1257     <row>
1258       <entry>  Alternative Wording for P0907R4 Signed Integers are Two's Complement </entry>
1259       <entry>
1260         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r1.html">
1261         P1236R1 </link>
1262       </entry>
1263       <entry align="center"> &#x2014; </entry>
1264       <entry/>
1265     </row>
1267     <row>
1268       <entry>
1269         I Stream, You Stream, We All Stream for
1270         <classname>istream_iterator</classname>
1271       </entry>
1272       <entry>
1273         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0738r2.html">
1274         P0738R2 </link>
1275       </entry>
1276       <entry align="center"> 10.1 </entry>
1277       <entry />
1278     </row>
1280     <row>
1281       <entry>
1282         Mandating the Standard Library:
1283         Clause 16 - Language support library
1284       </entry>
1285       <entry>
1286         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf">
1287         P1458R1 </link>
1288       </entry>
1289       <entry align="center"> &#x2014; </entry>
1290       <entry/>
1291     </row>
1293     <row>
1294       <entry>
1295         Mandating the Standard Library:
1296         Clause 18 - Diagnostics library
1297       </entry>
1298       <entry>
1299         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1458r1.pdf">
1300         P1459R1 </link>
1301       </entry>
1302       <entry align="center"> &#x2014; </entry>
1303       <entry/>
1304     </row>
1306     <row>
1307       <entry>
1308         Mandating the Standard Library:
1309         Clause 20 - Strings library
1310       </entry>
1311       <entry>
1312         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1462r1.html">
1313         P1462R1 </link>
1314       </entry>
1315       <entry align="center"> &#x2014; </entry>
1316       <entry/>
1317     </row>
1319     <row>
1320       <entry>
1321         Mandating the Standard Library:
1322         Clause 21 - Containers library
1323       </entry>
1324       <entry>
1325         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1463r1.pdf">
1326         P1463R1 </link>
1327       </entry>
1328       <entry align="center"> 10.1 </entry>
1329       <entry/>
1330     </row>
1332     <row>
1333       <entry>
1334         Mandating the Standard Library:
1335         Clause 22 - Iterators library
1336       </entry>
1337       <entry>
1338         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1464r1.pdf">
1339         P1464R1 </link>
1340       </entry>
1341       <entry align="center"> &#x2014; </entry>
1342       <entry />
1343     </row>
1345     <row>
1346       <entry> Make <code>create_directory()</code> Intuitive </entry>
1347       <entry>
1348         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1164r1.pdf">
1349         P1164R1
1350   </link>
1351       </entry>
1352       <entry align="center"> 8.3 </entry>
1353       <entry> Treated as a DR for C++17 </entry>
1354     </row>
1356     <row>
1357       <entry>
1358         Target Vectorization Policies from Parallelism V2 TS to C++20
1359       </entry>
1360       <entry>
1361         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1001r2.html">
1362         P1001R2 </link>
1363       </entry>
1364       <entry align="center"> 9.1 </entry>
1365       <entry> <code>__cpp_lib_execution &gt;= 201902L</code> (since 9.4, see Note 1)</entry>
1366     </row>
1368     <row>
1369       <entry> Merge Coroutines TS into C++20 working draft </entry>
1370       <entry>
1371         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0912r5.html">
1372         P0912R5 </link>
1373       </entry>
1374       <entry align="center"> 10.1 </entry>
1375       <entry> <code>__cpp_lib_coroutines &gt;= 201902L</code> </entry>
1376     </row>
1378     <row>
1379       <entry>  Endian just Endian </entry>
1380       <entry>
1381         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0463r1.html">
1382         P0463R1 </link>
1383       </entry>
1384       <entry align="center"> 8.1 </entry>
1385       <entry> <code>__cpp_lib_endian &gt;= 201907L</code> </entry>
1386     </row>
1388     <row>
1389       <entry> Bit operations </entry>
1390       <entry>
1391         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html">
1392         P0553R4 </link>
1393       </entry>
1394       <entry align="center"> 9.1 </entry>
1395       <entry> <code>__cpp_lib_bitops &gt;= 201907L</code> (since 9.4, see Note 1) </entry>
1396     </row>
1398     <row>
1399       <entry>  Well-behaved interpolation for numbers and pointers </entry>
1400       <entry>
1401         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0811r3.html">
1402         P0811R3 </link>
1403       </entry>
1404       <entry align="center"> 9.1 </entry>
1405       <entry> <code>__cpp_lib_interpolate &gt;= 201902L</code> </entry>
1406     </row>
1408     <row>
1409       <entry> Mathematical constants </entry>
1410       <entry>
1411         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0631r8.pdf">
1412         P0631R8 </link>
1413       </entry>
1414       <entry align="center"> 10.1 </entry>
1415       <entry> <code>__cpp_lib_math_constants &gt;= 201907L</code> </entry>
1416     </row>
1418     <row>
1419       <entry> std::source_location </entry>
1420       <entry>
1421         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1208r6.pdf">
1422         P1208R6 </link>
1423       </entry>
1424       <entry align="center"> 11.1 </entry>
1425       <entry>
1426         <code>__cpp_lib_source_location &gt;= 201907L</code>
1427       </entry>
1428     </row>
1430     <row>
1431       <entry> Efficient access to std::basic_stringbuf's Buffer </entry>
1432       <entry>
1433         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0408r7.pdf">
1434         P0408R7 </link>
1435       </entry>
1436       <entry align="center"> 11.1 </entry>
1437       <entry />
1438     </row>
1440   </tbody>
1441 </tgroup>
1442 </table>
1444 <para>
1445 Note 1: This feature is supported in older releases but the
1446 <code>__cpp_lib</code> macro is not defined to the right value
1447 (or not defined at all) until the version shown in parentheses.
1448 </para>
1450 <para>
1451 Note 2: The C++20 calendar types are supported since 11.1,
1452 time zones and UTC are supported since 13.1,
1453 and <function>chrono::parse</function> is supported since 14.1.
1454 </para>
1456 </section>