status_cxx2020.xml revision 1.1.1.1
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++ 202a</title> 6 <keywordset> 7 <keyword>ISO C++</keyword> 8 <keyword>2020</keyword> 9 </keywordset> 10</info> 11 12<para> 13In this implementation the <literal>-std=gnu++2a</literal> or 14<literal>-std=c++2a</literal> flag must be used to enable language 15and library 16features. See <link linkend="manual.intro.using.flags">dialect</link> 17options. The pre-defined symbol 18<constant>__cplusplus</constant> is used to check for the 19presence of the required flag. 20</para> 21 22<para> 23This section describes the C++20 and library TS support in the GCC 9 series. 24</para> 25 26<para> 27The following table lists new library features that have been accepted into 28the C++2a working draft. The "Proposal" column provides a link to the 29ISO C++ committee proposal that describes the feature, while the "Status" 30column indicates the first version of GCC that contains an implementation of 31this feature (if it has been implemented). 32The "SD-6 Feature Test" column shows the corresponding macro or header from 33<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: 34Feature-testing recommendations for C++</link>. 35</para> 36 37<table frame="all" xml:id="table.cxx20_status"> 38<title>C++ 2020 Implementation Status</title> 39 40<tgroup cols="4" align="left" colsep="0" rowsep="1"> 41<colspec colname="c1"/> 42<colspec colname="c2"/> 43<colspec colname="c3"/> 44<colspec colname="c4"/> 45 <thead> 46 <row> 47 <entry>Library Feature</entry> 48 <entry>Proposal</entry> 49 <entry>Status</entry> 50 <entry>SD-6 Feature Test</entry> 51 </row> 52 </thead> 53 54 <tbody> 55 56 <row> 57 <entry> Endian just Endian </entry> 58 <entry> 59 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0463r1.html"> 60 P0463R1 61 </link> 62 </entry> 63 <entry align="center"> 8.1 </entry> 64 <entry /> 65 </row> 66 67 <row> 68 <?dbhtml bgcolor="#C8B0B0" ?> 69 <entry> Extending <code>make_shared</code> to Support Arrays </entry> 70 <entry> 71 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0674r1.html"> 72 P0674R1 73 </link> 74 </entry> 75 <entry align="center"> </entry> 76 <entry /> 77 </row> 78 79 <row> 80 <?dbhtml bgcolor="#C8B0B0" ?> 81 <entry> Floating Point Atomic </entry> 82 <entry> 83 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0020r6.html"> 84 P0020R6 85 </link> 86 </entry> 87 <entry align="center"> </entry> 88 <entry /> 89 </row> 90 91 <row> 92 <?dbhtml bgcolor="#C8B0B0" ?> 93 <entry> C++ Synchronized Buffered Ostream </entry> 94 <entry> 95 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0053r7.pdf"> 96 P0053R7 97 </link> 98 </entry> 99 <entry align="center"> </entry> 100 <entry /> 101 </row> 102 103 <row> 104 <?dbhtml bgcolor="#C8B0B0" ?> 105 <entry> Add constexpr modifiers to functions in <code><algorithm></code> and <code><utility></code> Headers </entry> 106 <entry> 107 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0202r3.html"> 108 P0202R3 109 </link> 110 </entry> 111 <entry align="center"> </entry> 112 <entry /> 113 </row> 114 115 <row> 116 <entry> Constexpr for <code>std::complex</code> </entry> 117 <entry> 118 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0415r1.html"> 119 P0415R1 120 </link> 121 </entry> 122 <entry align="center"> 9.1 </entry> 123 <entry /> 124 </row> 125 126 <row> 127 <entry> Make <code>std::memory_order</code> a scoped enumeration </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/2016/p0439r0.html"> 130 P0439R0 131 </link> 132 </entry> 133 <entry align="center"> 9.1 </entry> 134 <entry /> 135 </row> 136 137 <row> 138 <entry> String Prefix and Suffix Checking </entry> 139 <entry> 140 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0457r2.html"> 141 P0457R2 142 </link> 143 </entry> 144 <entry align="center"> 9.1 </entry> 145 <entry /> 146 </row> 147 148 <row> 149 <entry> Transformation Trait <code>remove_cvref</code> </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/2017/p0550r2.pdf"> 152 P0550R2 153 </link> 154 </entry> 155 <entry align="center"> 9.1 </entry> 156 <entry /> 157 </row> 158 159 <row> 160 <entry> <code>nodiscard</code> in the Library </entry> 161 <entry> 162 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0600r1.pdf"> 163 P0600R1 164 </link> 165 </entry> 166 <entry align="center"> 9.1 </entry> 167 <entry /> 168 </row> 169 170 <row> 171 <entry> de-pessimize legacy algorithms with <code>std::move</code> </entry> 172 <entry> 173 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0616r0.pdf"> 174 P0616R0 175 </link> 176 </entry> 177 <entry align="center"> 9.1 </entry> 178 <entry /> 179 </row> 180 181 <row> 182 <entry> Utility to convert a pointer to a raw pointer </entry> 183 <entry> 184 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0653r2.html"> 185 P0653R2 186 </link> 187 </entry> 188 <entry align="center"> 8.1 </entry> 189 <entry /> 190 </row> 191 192 <row> 193 <?dbhtml bgcolor="#C8B0B0" ?> 194 <entry> Atomic <code>shared_ptr</code> </entry> 195 <entry> 196 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0718r2.html"> 197 P0718R2 198 </link> 199 </entry> 200 <entry align="center"> </entry> 201 <entry /> 202 </row> 203 204 <row> 205 <?dbhtml bgcolor="#C8B0B0" ?> 206 <entry> Deprecate POD </entry> 207 <entry> 208 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0767r1.html"> 209 P0767R1 210 </link> 211 </entry> 212 <entry align="center"> </entry> 213 <entry /> 214 </row> 215 216 <row> 217 <?dbhtml bgcolor="#C8B0B0" ?> 218 <entry> Library Support for the Spaceship (Comparison) Operator </entry> 219 <entry> 220 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0768r1.pdf"> 221 P0768R1 222 </link> 223 </entry> 224 <entry align="center"> </entry> 225 <entry /> 226 </row> 227 228 <row> 229 <entry> Treating Unnecessary <code>decay</code> </entry> 230 <entry> 231 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0777r1.pdf"> 232 P0777R1 233 </link> 234 </entry> 235 <entry align="center"> 9.1 </entry> 236 <entry /> 237 </row> 238 239 <row> 240 <?dbhtml bgcolor="#C8B0B0" ?> 241 <entry> <code><span></code> </entry> 242 <entry> 243 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0122r7.pdf"> 244 P0122R7 245 </link> 246 </entry> 247 <entry align="center"> </entry> 248 <entry /> 249 </row> 250 251 <row> 252 <?dbhtml bgcolor="#C8B0B0" ?> 253 <entry> Extending chrono to Calendars and Time Zones </entry> 254 <entry> 255 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html"> 256 P0355R7 257 </link> 258 </entry> 259 <entry align="center"> </entry> 260 <entry /> 261 </row> 262 263 <row> 264 <?dbhtml bgcolor="#C8B0B0" ?> 265 <entry> Thou Shalt Not Specialize std Function Templates! </entry> 266 <entry> 267 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0551r3.pdf"> 268 P0551R3 269 </link> 270 </entry> 271 <entry align="center"> </entry> 272 <entry /> 273 </row> 274 275 <row> 276 <?dbhtml bgcolor="#C8B0B0" ?> 277 <entry> Manipulators for C++ Synchronized Buffered Ostream </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/2018/p0753r2.pdf"> 280 P0753R2 281 </link> 282 </entry> 283 <entry align="center"> </entry> 284 <entry /> 285 </row> 286 287 <row> 288 <entry> <code><version></code> </entry> 289 <entry> 290 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0754r2.pdf"> 291 P0754R2 292 </link> 293 </entry> 294 <entry align="center"> 9.1 </entry> 295 <entry /> 296 </row> 297 298 <row> 299 <?dbhtml bgcolor="#C8B0B0" ?> 300 <entry> Comparing Unordered Containers </entry> 301 <entry> 302 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0809r0.pdf"> 303 P0809R0 304 </link> 305 </entry> 306 <entry align="center"> </entry> 307 <entry /> 308 </row> 309 310 <row> 311 <entry> Constexpr iterator requirements </entry> 312 <entry> 313 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0858r0.html"> 314 P0858R0 315 </link> 316 </entry> 317 <entry align="center"> 9.1 </entry> 318 <entry> <code>__cpp_lib_string_view >= 201803L</code> 319 and <code>__cpp_lib_array_constexpr >= 201803L</code> </entry> 320 </row> 321 322 <row> 323 <?dbhtml bgcolor="#C8B0B0" ?> 324 <entry> Symmetry for spaceship </entry> 325 <entry> 326 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0905r1.html"> 327 P0905R1 328 </link> 329 </entry> 330 <entry align="center"> </entry> 331 <entry /> 332 </row> 333 334 <row> 335 <?dbhtml bgcolor="#C8B0B0" ?> 336 <entry> <code>string::reserve</code> Should Not Shrink </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/p0966r1.html"> 339 P0966R1 340 </link> 341 </entry> 342 <entry align="center"> </entry> 343 <entry /> 344 </row> 345 346 <row> 347 <?dbhtml bgcolor="#C8B0B0" ?> 348 <entry> Atomic Ref </entry> 349 <entry> 350 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0019r8.html"> 351 P0019R8 352 </link> 353 </entry> 354 <entry align="center"> </entry> 355 <entry /> 356 </row> 357 358 <row> 359 <entry> Checking for Existence of an Element in Associative Containers </entry> 360 <entry> 361 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0458r2.html"> 362 P0458R2 363 </link> 364 </entry> 365 <entry align="center"> 9.1 </entry> 366 <entry /> 367 </row> 368 369 <row> 370 <entry> LWG 2511: guaranteed copy elision for piecewise construction </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/p0475r1.html"> 373 P0475R1 374 </link> 375 </entry> 376 <entry align="center"> 7.1 </entry> 377 <entry /> 378 </row> 379 380 <row> 381 <?dbhtml bgcolor="#C8B0B0" ?> 382 <entry> Bit-casting object representations </entry> 383 <entry> 384 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0476r2.html"> 385 P0476R2 386 </link> 387 </entry> 388 <entry align="center"> </entry> 389 <entry /> 390 </row> 391 392 <row> 393 <?dbhtml bgcolor="#C8B0B0" ?> 394 <entry> The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange </entry> 395 <entry> 396 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0528r3.html"> 397 P0528R3 398 </link> 399 </entry> 400 <entry align="center"> </entry> 401 <entry /> 402 </row> 403 404 <row> 405 <?dbhtml bgcolor="#C8B0B0" ?> 406 <entry> Support for contract based programming in C++ </entry> 407 <entry> 408 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0542r5.html"> 409 P0542R5 410 </link> 411 </entry> 412 <entry align="center"> </entry> 413 <entry /> 414 </row> 415 416 <row> 417 <entry> Integral power-of-2 operations </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/2018/p0556r3.html"> 420 P0556R3 421 </link> 422 </entry> 423 <entry align="center"> 9.1 </entry> 424 <entry /> 425 </row> 426 427 <row> 428 <?dbhtml bgcolor="#C8B0B0" ?> 429 <entry> Reviewing Deprecated Facilities of C++17 for C++20 </entry> 430 <entry> 431 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0619r4.html"> 432 P0619R4 433 </link> 434 </entry> 435 <entry align="center"> </entry> 436 <entry /> 437 </row> 438 439 <row> 440 <entry> Improving the Return Value of Erase-Like Algorithms </entry> 441 <entry> 442 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0646r1.pdf"> 443 P0646R1 444 </link> 445 </entry> 446 <entry align="center"> 9.1 </entry> 447 <entry> <code>__cpp_lib_list_remove_return_type >= 201806L</code> </entry> 448 </row> 449 450 <row> 451 <entry> Efficient sized delete for variable sized classes </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/2018/p0722r3.html"> 454 P0722R3 455 </link> 456 </entry> 457 <entry align="center"> 9.1 </entry> 458 <entry> <code>__cpp_lib_destroying_delete >= 201806L</code> </entry> 459 </row> 460 461 <row> 462 <entry> Implicit conversion traits and utility functions </entry> 463 <entry> 464 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0758r1.html"> 465 P0758R1 466 </link> 467 </entry> 468 <entry align="center"> 9.1 </entry> 469 <entry /> 470 </row> 471 472 <row> 473 <entry> <code>fpos</code> Requirements </entry> 474 <entry> 475 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0759r1.html"> 476 P0759R1 477 </link> 478 </entry> 479 <entry align="center"> Note 1 </entry> 480 <entry /> 481 </row> 482 483 <row> 484 <?dbhtml bgcolor="#C8B0B0" ?> 485 <entry> Add <code>shift</code> to <code><algorithm></code> </entry> 486 <entry> 487 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0769r2.pdf"> 488 P0769R2 489 </link> 490 </entry> 491 <entry align="center"> </entry> 492 <entry /> 493 </row> 494 495 <row> 496 <?dbhtml bgcolor="#C8B0B0" ?> 497 <entry> Standard Library Specification in a Concepts and Contracts World </entry> 498 <entry> 499 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0788r3.pdf"> 500 P0788R3 501 </link> 502 </entry> 503 <entry align="center"> </entry> 504 <entry /> 505 </row> 506 507 <row> 508 <?dbhtml bgcolor="#C8B0B0" ?> 509 <entry> Constexpr for <code>swap</code> and swap related functions </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/2018/p0879r0.html"> 512 P0879R0 513 </link> 514 </entry> 515 <entry align="center"> </entry> 516 <entry /> 517 </row> 518 519 <row> 520 <entry> The <code>identity</code> metafunction </entry> 521 <entry> 522 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0887r1.pdf"> 523 P0887R1 524 </link> 525 </entry> 526 <entry align="center"> 9.1 </entry> 527 <entry /> 528 </row> 529 530 <row> 531 <entry> <code>explicit(bool)</code> </entry> 532 <entry> 533 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0892r2.html"> 534 P0892R2 535 </link> 536 </entry> 537 <entry align="center"> Note 1 </entry> 538 <entry /> 539 </row> 540 541 <row> 542 <?dbhtml bgcolor="#C8B0B0" ?> 543 <entry> Standard Library Concepts </entry> 544 <entry> 545 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0898r3.pdf"> 546 P0898R3 547 </link> 548 </entry> 549 <entry align="center"> </entry> 550 <entry /> 551 </row> 552 553 <row> 554 <entry> Eradicating unnecessarily explicit default constructors from the standard library </entry> 555 <entry> 556 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0935r0.html"> 557 P0935R0 558 </link> 559 </entry> 560 <entry align="center"> 9.1 </entry> 561 <entry /> 562 </row> 563 564 <row> 565 <entry> Integrating feature-test macros into the C++ WD </entry> 566 <entry> 567 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0941r2.html"> 568 P0941R2 569 </link> 570 </entry> 571 <entry align="center"> 5.1 </entry> 572 <entry /> 573 </row> 574 575 <row> 576 <?dbhtml bgcolor="#C8B0B0" ?> 577 <entry> <code>constexpr</code> comparison operators for <code>std::array</code> </entry> 578 <entry> 579 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1023r0.pdf"> 580 P1023R0 581 </link> 582 </entry> 583 <entry align="center"> </entry> 584 <entry /> 585 </row> 586 587 <row> 588 <?dbhtml bgcolor="#C8B0B0" ?> 589 <entry> Update The Reference To The Unicode Standard </entry> 590 <entry> 591 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1025r1.html"> 592 P1025R1 593 </link> 594 </entry> 595 <entry align="center"> </entry> 596 <entry /> 597 </row> 598 599 <row> 600 <?dbhtml bgcolor="#C8B0B0" ?> 601 <entry> Consistency improvements for <code><=></code> and other comparison operators </entry> 602 <entry> 603 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1120r0.html"> 604 P1120R0 605 </link> 606 </entry> 607 <entry align="center"> </entry> 608 <entry /> 609 </row> 610 611 <row> 612 <entry> <code>unwrap_ref_decay</code> and <code>unwrap_reference</code> </entry> 613 <entry> 614 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0318r1.pdf"> 615 P0318R1 616 </link> 617 </entry> 618 <entry align="center"> 9.1 </entry> 619 <entry /> 620 </row> 621 622 <row> 623 <entry> Simplified partial function application </entry> 624 <entry> 625 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0356r5.html"> 626 P0356R5 627 </link> 628 </entry> 629 <entry align="center"> 9.1 </entry> 630 <entry> <code>__cpp_lib_bind_front >= 201811L</code> </entry> 631 </row> 632 633 <row> 634 <entry> <code>reference_wrapper</code> for incomplete types </entry> 635 <entry> 636 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0357r3.html"> 637 P0357R3 638 </link> 639 </entry> 640 <entry align="center"> 9.1 </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 649 </link> 650 </entry> 651 <entry align="center"> 9.1 </entry> 652 <entry> <code>__cpp_lib_char8_t >= 201811L</code> </entry> 653 </row> 654 655 <row> 656 <?dbhtml bgcolor="#C8B0B0" ?> 657 <entry> Fixing <code>operator>>(basic_istream&, CharT*)</code> (LWG 2499) </entry> 658 <entry> 659 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0487r1.html"> 660 P0487R1 661 </link> 662 </entry> 663 <entry align="center"> </entry> 664 <entry /> 665 </row> 666 667 <row> 668 <entry> Utility functions to implement uses-allocator construction </entry> 669 <entry> 670 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0591r4.pdf"> 671 P0591R4 672 </link> 673 </entry> 674 <entry align="center"> 9.1 </entry> 675 <entry> 676 <code>std::scoped_allocator_adaptor</code> changes missing in 9.1.0 677 </entry> 678 </row> 679 680 <row> 681 <entry> P0595R2 <code>std::is_constant_evaluated()</code> </entry> 682 <entry> 683 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0595r2.html"> 684 P0595R2 685 </link> 686 </entry> 687 <entry align="center"> 9.1 </entry> 688 <entry /> 689 </row> 690 691 <row> 692 <entry> <code>variant</code> and <code>optional</code> should propagate copy/move triviality </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/2018/p0602r4.html"> 695 P0602R4 696 </link> 697 </entry> 698 <entry align="center"> 8.3 </entry> 699 <entry /> 700 </row> 701 702 <row> 703 <?dbhtml bgcolor="#C8B0B0" ?> 704 <entry> A sane <code>variant</code> converting constructor </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/2018/p0608r3.html"> 707 P0608R3 708 </link> 709 </entry> 710 <entry align="center"> </entry> 711 <entry /> 712 </row> 713 714 <row> 715 <entry> <code>visit<R></code>: Explicit Return Type for <code>visit</code> </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/p0655r1.pdf"> 718 P0655R1 719 </link> 720 </entry> 721 <entry align="center"> 9.1 </entry> 722 <entry /> 723 </row> 724 725 <row> 726 <entry> <code>std::function</code> move constructor should be <code>noexcept</code> </entry> 727 <entry> 728 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0771r1.pdf"> 729 P0771R1 730 </link> 731 </entry> 732 <entry align="center"> 7.2 </entry> 733 <entry /> 734 </row> 735 736 <row> 737 <?dbhtml bgcolor="#C8B0B0" ?> 738 <entry> The One Ranges Proposal </entry> 739 <entry> 740 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0896r4.pdf"> 741 P0896R4 742 </link> 743 </entry> 744 <entry align="center"> </entry> 745 <entry /> 746 </row> 747 748 <row> 749 <entry> P0899R1 - LWG 3016 is not a defect </entry> 750 <entry> 751 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0899r1.html"> 752 P0899R1 753 </link> 754 </entry> 755 <entry align="center"> 7.1 </entry> 756 <entry /> 757 </row> 758 759 <row> 760 <?dbhtml bgcolor="#C8B0B0" ?> 761 <entry> Heterogeneous lookup for unordered containers </entry> 762 <entry> 763 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0919r3.html"> 764 P0919R3 765 </link> 766 </entry> 767 <entry align="center"> </entry> 768 <entry /> 769 </row> 770 771 <row> 772 <entry> <code><chrono></code> <code>zero()</code>, <code>min()</code>, and <code>max()</code> should be <code>noexcept</code> </entry> 773 <entry> 774 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0972r0.pdf"> 775 P0972R0 776 </link> 777 </entry> 778 <entry align="center"> 9.1 </entry> 779 <entry /> 780 </row> 781 782 <row> 783 <entry> Constexpr in <code>std::pointer_traits</code> </entry> 784 <entry> 785 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1006r1.pdf"> 786 P1006R1 787 </link> 788 </entry> 789 <entry align="center"> 9.1 </entry> 790 <entry /> 791 </row> 792 793 <row> 794 <entry> <code>std::assume_aligned</code> </entry> 795 <entry> 796 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1007r3.pdf"> 797 P1007R3 798 </link> 799 </entry> 800 <entry align="center"> 9.1 </entry> 801 <entry /> 802 </row> 803 804 <row> 805 <?dbhtml bgcolor="#C8B0B0" ?> 806 <entry> Smart pointer creation with default initialization </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/p1020r1.html"> 809 P1020R1 810 </link> 811 </entry> 812 <entry align="center"> </entry> 813 <entry /> 814 </row> 815 816 <row> 817 <?dbhtml bgcolor="#C8B0B0" ?> 818 <entry> Misc constexpr bits </entry> 819 <entry> 820 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1032r1.html"> 821 P1032R1 822 </link> 823 </entry> 824 <entry align="center"> </entry> 825 <entry /> 826 </row> 827 828 <row> 829 <?dbhtml bgcolor="#C8B0B0" ?> 830 <entry> Should Span be Regular? </entry> 831 <entry> 832 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1085r2.md"> 833 P1085R2 834 </link> 835 </entry> 836 <entry align="center"> </entry> 837 <entry /> 838 </row> 839 840 <row> 841 <entry> Editorial Guidance for merging P0019r8 and P0528r3 </entry> 842 <entry> 843 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1123r0.html"> 844 P1123R0 845 </link> 846 </entry> 847 <entry align="center"> Note 1 </entry> 848 <entry /> 849 </row> 850 851 <row> 852 <?dbhtml bgcolor="#C8B0B0" ?> 853 <entry> Cleaning up Clause 20 </entry> 854 <entry> 855 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1148r0.pdf"> 856 P1148R0 857 </link> 858 </entry> 859 <entry align="center"> </entry> 860 <entry /> 861 </row> 862 863 <row> 864 <?dbhtml bgcolor="#C8B0B0" ?> 865 <entry> Make stateful allocator propagation more consistent for <code>operator+(basic_string)</code> </entry> 866 <entry> 867 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1165r1.html"> 868 P1165R1 869 </link> 870 </entry> 871 <entry align="center"> </entry> 872 <entry /> 873 </row> 874 875 <row> 876 <entry> Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 </entry> 877 <entry> 878 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html"> 879 P1209R0 880 </link> 881 </entry> 882 <entry align="center"> 9.1 </entry> 883 <entry> <code>__cpp_lib_erase_if >= 201811L</code> </entry> 884 </row> 885 886 <row> 887 <?dbhtml bgcolor="#C8B0B0" ?> 888 <entry> Completing the Rebase of Library Fundamentals, Version 3, Working Draft </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/2018/p1210r0.html"> 891 P1210R0 892 </link> 893 </entry> 894 <entry align="center"> </entry> 895 <entry /> 896 </row> 897 898 <row> 899 <?dbhtml bgcolor="#C8B0B0" ?> 900 <entry> Alternative Wording for P0907R4 Signed Integers are Two's Complement </entry> 901 <entry> 902 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1236r1.html"> 903 P1236R1 904 </link> 905 </entry> 906 <entry align="center"> </entry> 907 <entry /> 908 </row> 909 910 <row> 911 <?dbhtml bgcolor="#C8B0B0" ?> 912 <entry> Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) </entry> 913 <entry> 914 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1248r1.html"> 915 P1248R1 916 </link> 917 </entry> 918 <entry align="center"> </entry> 919 <entry /> 920 </row> 921 922 <row> 923 <?dbhtml bgcolor="#C8B0B0" ?> 924 <entry> Improving Completeness Requirements for Type Traits </entry> 925 <entry> 926 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1285r0.pdf"> 927 P1285R0 928 </link> 929 </entry> 930 <entry align="center"> </entry> 931 <entry /> 932 </row> 933 934 <row> 935 <entry> Well-behaved interpolation for numbers and pointers </entry> 936 <entry> 937 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0811r3.html"> 938 P0811R3 939 </link> 940 </entry> 941 <entry align="center"> 9.1 </entry> 942 <entry> <code>__cpp_lib_interpolate >= 201902L</code> </entry> 943 </row> 944 945 <row> 946 <entry> Missing feature test macros </entry> 947 <entry> 948 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1353r0.html"> 949 P1353R0 950 </link> 951 </entry> 952 <entry align="center"> 9.1 </entry> 953 <entry /> 954 </row> 955 956 <row> 957 <entry> 958 <classname>polymorphic_allocator<></classname> 959 as a vocabulary type 960 </entry> 961 <entry> 962 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0339r6.pdf"> 963 P0339R6 964 </link> 965 </entry> 966 <entry align="center"> 9.1 </entry> 967 <entry /> 968 </row> 969 970 <row> 971 <entry> Making std::underlying_type SFINAE-friendly </entry> 972 <entry> 973 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0340r3.html"> 974 P0340R3 975 </link> 976 </entry> 977 <entry align="center"> 9.1 </entry> 978 <entry /> 979 </row> 980 981 <row> 982 <entry> Make <code>create_directory()</code> Intuitive </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/2019/p1164r1.pdf"> 985 P1164R1 986 </link> 987 </entry> 988 <entry align="center"> 8.3 </entry> 989 <entry> Treated as a DR for C++17 </entry> 990 </row> 991 992 <row> 993 <entry> Traits for [Un]bounded Arrays </entry> 994 <entry> 995 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1357r1.pdf"> 996 P1357R1 997 </link> 998 </entry> 999 <entry align="center"> 9.1 </entry> 1000 <entry> <code>__cpp_lib_bounded_array_traits >= 201902L</code> </entry> 1001 </row> 1002 1003 </tbody> 1004</tgroup> 1005</table> 1006 1007<para> 1008Note 1: The changes in the proposal either do not affect the code in libstdc++, 1009or the changes are not required for conformance. 1010</para> 1011 1012 1013<section xml:id="iso.2020.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info> 1014 1015 <para>For behaviour which is also specified by previous standards, 1016 see <link linkend="iso.1998.specific">C++ 1998/2003 Implementation 1017 Specific Behavior</link>, <link linkend="iso.2011.specific">C++ 1018 2011 Implementation Specific Behavior</link> and <link 1019 linkend="iso.2017.specific">C++ 2017 Implementation Specific 1020 Behavior</link>. 1021 This section only documents behaviour which is new in the 202a draft. 1022 </para> 1023 1024 1025</section> 1026 1027</section> 1028