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