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