1<section xmlns="http://docbook.org/ns/docbook" version="5.0" 2 xml:id="status.iso.2017" xreflabel="Status C++ 2017"> 3<?dbhtml filename="status_iso_cxx2017.html"?> 4 5<info><title>C++ 2017</title> 6 <keywordset> 7 <keyword>ISO C++</keyword> 8 <keyword>2017</keyword> 9 </keywordset> 10</info> 11 12<para> 13In this implementation the <literal>-std=gnu++17</literal> or 14<literal>-std=c++17</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. 20GCC 9.1 was the first release with non-experimental C++17 support, 21so the API and ABI of features added in C++17 is only stable 22since that release. 23</para> 24 25<para> 26This section describes the C++17 and library TS support in the GCC 10 release series. 27</para> 28 29<para> 30The following table lists new library features that are included in 31the C++17 standard. The "Proposal" column provides a link to the 32ISO C++ committee proposal that describes the feature, while the "Status" 33column indicates the first version of GCC that contains an implementation of 34this feature (if it has been implemented). 35The "SD-6 Feature Test" 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>. 38</para> 39 40<table frame="all" xml:id="table.cxx17_features"> 41<title>C++ 2017 Library Features</title> 42 43<tgroup cols="4" align="left" colsep="0" rowsep="1"> 44<colspec colname="c1"/> 45<colspec colname="c2"/> 46<colspec colname="c3"/> 47<colspec colname="c4"/> 48 <thead> 49 <row> 50 <entry>Library Feature</entry> 51 <entry>Proposal</entry> 52 <entry>Status</entry> 53 <entry>SD-6 Feature Test</entry> 54 </row> 55 </thead> 56 57 <tbody> 58 59 <row> 60 <?dbhtml bgcolor="#C8B0B0" ?> 61 <entry> 62 <code>constexpr std::hardware_{constructive,destructive}_interference_size</code> 63 </entry> 64 <entry> 65 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0154r1.html"> 66 P0154R1 67 </link> 68 </entry> 69 <entry align="center"> No </entry> 70 <entry> <code>__cpp_lib_hardware_interference_size >= 201603</code> </entry> 71 </row> 72 73 <row> 74 <entry> Core Issue 1776: Replacement of class objects containing reference members</entry> 75 <entry> 76 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0137r1.html"> 77 P0137R1 78 </link> 79 </entry> 80 <entry align="center"> 7.1 </entry> 81 <entry> <code>__cpp_lib_launder >= 201606</code> </entry> 82 </row> 83 84 <row> 85 <entry>Wording for <code>std::uncaught_exceptions</code></entry> 86 <entry> 87 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2014/n4259.pdf"> 88 N4259 89 </link> 90 </entry> 91 <entry align="center">6.1</entry> 92 <entry><code>__cpp_lib_uncaught_exceptions >= 201411</code></entry> 93 </row> 94 95 <row> 96 <entry> C++17 should refer to C11 instead of C99 </entry> 97 <entry> 98 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0063r3.html"> 99 P0063R3 100 </link> 101 </entry> 102 <entry align="center"> 9.1 </entry> 103 <entry/> 104 </row> 105 106 <row> 107 <entry> Variant: a type-safe union for C++17 </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/2016/p0088r3.html"> 110 P0088R3 111 </link> 112 </entry> 113 <entry align="center"> 7.1 </entry> 114 <entry> <code>__has_include(<variant>)</code>, 115 <code>__cpp_lib_variant >= 201603</code> 116 (since 7.3, see Note 1) 117 </entry> 118 </row> 119 120 <row> 121 <entry> Library Fundamentals V1 TS Components: <code>optional</code> </entry> 122 <entry> 123 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html"> 124 P0220R1 125 </link> 126 </entry> 127 <entry align="center"> 7.1 </entry> 128 <entry> <code>__has_include(<optional>)</code>, 129 <code>__cpp_lib_optional >= 201603</code> 130 (since 7.3, see Note 1) 131 </entry> 132 </row> 133 134 <row> 135 <entry> Library Fundamentals V1 TS Components: <code>any</code> </entry> 136 <entry> 137 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html"> 138 P0220R1 139 </link> 140 </entry> 141 <entry align="center"> 7.1 </entry> 142 <entry> <code>__has_include(<any>)</code>, 143 <code>__cpp_lib_any >= 201603</code> 144 (since 7.3, see Note 1) 145 </entry> 146 </row> 147 148 <row> 149 <entry> Library Fundamentals V1 TS Components: <code>string_view</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/2016/p0220r1.html"> 152 P0220R1 153 </link> 154 </entry> 155 <entry align="center"> 7.1 </entry> 156 <entry> <code>__has_include(<string_view>)</code>, 157 <code>__cpp_lib_string_view >= 201603</code> 158 (since 7.3, see Note 1) 159 </entry> 160 </row> 161 162 <row> 163 <entry> Library Fundamentals V1 TS Components: <code>memory_resource</code> </entry> 164 <entry> 165 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html"> 166 P0220R1 167 </link> 168 </entry> 169 <entry align="center"> 9.1 </entry> 170 <entry> <code>__has_include(<memory_resource>)</code>, 171 <code>__cpp_lib_memory_resource >= 201603</code> 172 </entry> 173 </row> 174 175 <row> 176 <entry> Library Fundamentals V1 TS Components: <code>apply</code> </entry> 177 <entry> 178 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html"> 179 P0220R1 180 </link> 181 </entry> 182 <entry align="center"> 7.1 </entry> 183 <entry> <code>__cpp_lib_apply >= 201603</code> </entry> 184 </row> 185 186 <row> 187 <entry> Library Fundamentals V1 TS Components: <code>shared_ptr<T[]></code> </entry> 188 <entry> 189 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html"> 190 P0220R1 191 </link> 192 </entry> 193 <entry align="center"> 7.1 </entry> 194 <entry> <code>__cpp_lib_shared_ptr_arrays >= 201603</code> </entry> 195 </row> 196 197 <row> 198 <entry> Library Fundamentals V1 TS Components: Searchers </entry> 199 <entry> 200 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html"> 201 P0220R1 202 </link> 203 </entry> 204 <entry align="center"> 7.1 </entry> 205 <entry> <code>__cpp_lib_boyer_moore_searcher >= 201603</code> </entry> 206 </row> 207 208 <row> 209 <entry> Library Fundamentals V1 TS Components: Sampling </entry> 210 <entry> 211 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0220r1.html"> 212 P0220R1 213 </link> 214 </entry> 215 <entry align="center"> 7.1 </entry> 216 <entry> <code>__cpp_lib_sample >= 201603</code> </entry> 217 </row> 218 219 <row> 220 <entry> Constant View: A proposal for a <code>std::as_const</code> helper function template </entry> 221 <entry> 222 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href=""> 223 P0007R1 224 </link> 225 </entry> 226 <entry align="center"> 7.1 </entry> 227 <entry><code> __cpp_lib_as_const >= 201510 </code></entry> 228 </row> 229 230 <row> 231 <entry> Improving pair and tuple </entry> 232 <entry> 233 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4387"> 234 N4387 235 </link> 236 </entry> 237 <entry align="center"> 6.1 </entry> 238 <entry> N/A </entry> 239 </row> 240 241 <row> 242 <entry> <code>make_from_tuple</code>: apply for construction </entry> 243 <entry> 244 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0209r2.pdf"> 245 P0209R2 246 </link> 247 </entry> 248 <entry align="center"> 7.1 </entry> 249 <entry><code> __cpp_lib_make_from_tuple >= 201606 </code></entry> 250 </row> 251 252 <row> 253 <?dbhtml bgcolor="#C8B0B0" ?> 254 <entry> 255 Removing <code>auto_ptr</code>, <code>random_shuffle()</code>, 256 And Old <code><functional></code> Stuff 257 </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/2014/n4190.htm"> 260 N4190 261 </link> 262 </entry> 263 <entry align="center">No (kept for backwards compatibility)</entry> 264 <entry/> 265 </row> 266 267 <row> 268 <?dbhtml bgcolor="#C8B0B0" ?> 269 <entry> Deprecating Vestigial Library Parts in C++17 </entry> 270 <entry> 271 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0174r2.html"> 272 P0174R2 273 </link> 274 </entry> 275 <entry align="center"> No (kept for backwards compatibility)</entry> 276 <entry/> 277 </row> 278 279 <row> 280 <entry> Making <code>std::owner_less</code> more flexible </entry> 281 <entry> 282 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0074r0.html"> 283 P0074R0 284 </link> 285 </entry> 286 <entry align="center"> 7.1 </entry> 287 <entry><code> __cpp_lib_transparent_operators >= 201510 </code></entry> 288 </row> 289 290 <row> 291 <entry> <code>std::addressof</code> should be constexpr </entry> 292 <entry> 293 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0304r0.html#2296"> 294 LWG2296 295 </link> 296 </entry> 297 <entry align="center"> 7.1 </entry> 298 <entry><code> __cpp_lib_addressof_constexpr >= 201603 </code></entry> 299 </row> 300 301 <row> 302 <entry> Safe conversions in <code>unique_ptr<T[]></code> </entry> 303 <entry> 304 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4089.pdf"> 305 N4089 306 </link> 307 </entry> 308 <entry align="center"> 6 </entry> 309 <entry/> 310 </row> 311 312 <row> 313 <entry> LWG 2228: Missing SFINAE rule in unique_ptr templated assignment </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/2015/n4366.html"> 316 N4366 317 </link> 318 </entry> 319 <entry align="center"> 6 </entry> 320 <entry/> 321 </row> 322 323 <row> 324 <entry> Re-enabling <code>shared_from_this</code></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/2016/p0033r1.html"> 327 P0033R1 328 </link> 329 </entry> 330 <entry align="center"> 7.1 </entry> 331 <entry><code>__cpp_lib_enable_shared_from_this >= 201603</code></entry> 332 </row> 333 334 <row> 335 <entry> A proposal to add <code>invoke</code> function template </entry> 336 <entry> 337 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4169.html"> 338 N4169 339 </link> 340 </entry> 341 <entry align="center"> 6.1 </entry> 342 <entry><code> __cpp_lib_invoke >= 201411 </code></entry> 343 </row> 344 345 <row> 346 <entry>TriviallyCopyable <code>reference_wrapper</code> </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/2014/n4277.html"> 349 N4277 350 </link> 351 </entry> 352 <entry align="center"> 5.1 </entry> 353 <entry/> 354 </row> 355 356 <row> 357 <entry> Adopt <code>not_fn</code> from Library Fundamentals 2 for C++17 </entry> 358 <entry> 359 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0005r4.html"> 360 P0005R4 361 </link> 362 </entry> 363 <entry align="center"> 7.1 </entry> 364 <entry><code>__cpp_lib_not_fn >= 201603</code></entry> 365 </row> 366 367 <row> 368 <entry> Fixes for <code>not_fn</code> </entry> 369 <entry> 370 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0358r1.html"> 371 P0358R1 372 </link> 373 </entry> 374 <entry align="center"> 7.1 </entry> 375 <entry/> 376 </row> 377 378 <row> 379 <entry> Fixing a design mistake in the searchers interface in Library Fundamentals </entry> 380 <entry> 381 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0253r1.pdf"> 382 P0253R1 383 </link> 384 </entry> 385 <entry align="center"> 7.1 </entry> 386 <entry/> 387 </row> 388 389 <row> 390 <entry> Extending memory management tools </entry> 391 <entry> 392 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0040r3.html"> 393 P0040R3 394 </link> 395 </entry> 396 <entry align="center"> 7.1 </entry> 397 <entry><code>__cpp_lib_raw_memory_algorithms >= 201606L</code></entry> 398 </row> 399 400 <row> 401 <entry> <code>shared_ptr::weak_type</code></entry> 402 <entry> 403 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0163r0.html"> 404 P0163R0 405 </link> 406 </entry> 407 <entry align="center"> 7.1 </entry> 408 <entry><code> __cpp_lib_shared_ptr_weak_type >= 201606</code></entry> 409 </row> 410 411 <row> 412 <entry>Transformation Trait Alias <code>void_t</code></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/2014/n3911.pdf"> 415 N3911 416 </link> 417 </entry> 418 <entry align="center">6.1</entry> 419 <entry><code> __cpp_lib_void_t >= 201411</code></entry> 420 </row> 421 422 <row> 423 <entry> Wording for <code>bool_constant</code>, revision 1 </entry> 424 <entry> 425 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4389.html"> 426 N4389 427 </link> 428 </entry> 429 <entry align="center">6.1</entry> 430 <entry><code> __cpp_lib_bool_constant >= 201505</code></entry> 431 </row> 432 433 <row> 434 <entry> Adopt Type Traits Variable Templates from Library Fundamentals TS for C++17</entry> 435 <entry> 436 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0006r0.html"> 437 P0006R0 438 </link> 439 </entry> 440 <entry align="center"> 7.1 </entry> 441 <entry><code> __cpp_lib_type_trait_variable_templates >= 201510 </code></entry> 442 </row> 443 444 <row> 445 <entry> Logical Operator Type Traits</entry> 446 <entry> 447 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0013r1.html"> 448 P0013R1 449 </link> 450 </entry> 451 <entry align="center"> 6.1 </entry> 452 <entry><code> __cpp_lib_logical_traits >= 201510 </code></entry> 453 </row> 454 455 <row> 456 <entry> Adding [nothrow-]swappable traits </entry> 457 <entry> 458 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0185r1.html"> 459 P0185R1 460 </link> 461 </entry> 462 <entry align="center"> 7 (<code>__is_swappable</code> available since 6.1)</entry> 463 <entry><code> __cpp_lib_is_swappable >= 201603 </code></entry> 464 </row> 465 466 <row> 467 <entry> <code>is_callable</code>, the missing INVOKE related trait</entry> 468 <entry> 469 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0077r2.html"> 470 P0077R2 471 </link> 472 </entry> 473 <entry align="center"> 7.1 </entry> 474 <entry><code> __cpp_lib_is_invocable >= 201703 </code></entry> 475 </row> 476 477 <row> 478 <entry> has_unique_object_representations </entry> 479 <entry> 480 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0258r2.html"> 481 P0258R2 482 </link> 483 </entry> 484 <entry align="center"> 7.1 </entry> 485 <entry><code> __cpp_lib_has_unique_object_representations >= 201606 </code></entry> 486 </row> 487 488 <row> 489 <entry> Polishing <code><chrono></code> </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/2015/p0092r1.html"> 492 P0092R1 493 </link> 494 </entry> 495 <entry align="center"> 7.1 </entry> 496 <entry><code> __cpp_lib_chrono >= 201510 </code></entry> 497 </row> 498 499 <row> 500 <entry> Adding more constexpr to <code><chrono></code> </entry> 501 <entry> 502 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0505r0.html"> 503 P0505R0 504 </link> 505 </entry> 506 <entry align="center"> 7.1 </entry> 507 <entry><code> __cpp_lib_chrono >= 201611 </code> 508 (since 7.3, see Note 2) 509 </entry> 510 </row> 511 512 <row> 513 <entry> Constexpr for <code>std::char_traits</code> </entry> 514 <entry> 515 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0426r1.html"> 516 P0426R1 517 </link> 518 </entry> 519 <entry align="center"> 8.1 </entry> 520 <entry><code> __cpp_lib_constexpr_char_traits >= 201611 </code></entry> 521 </row> 522 523 <row> 524 <entry> Integrating <code>std::string_view</code> and <code>std::string</code> </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/2016/p0254r2.pdf"> 527 P0254R2 528 </link> 529 </entry> 530 <entry align="center"> 7.1 </entry> 531 <entry><code> </code></entry> 532 </row> 533 534 <row> 535 <entry> Give 'std::string' a non-const '.data()' member function </entry> 536 <entry> 537 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0272r1.html"> 538 P0272R1 539 </link> 540 </entry> 541 <entry align="center"> 7.1 </entry> 542 <entry><code> </code></entry> 543 </row> 544 545 <row> 546 <entry>Cleaning-up noexcept in the Library</entry> 547 <entry> 548 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4258.pdf"> 549 N4258 550 </link> 551 </entry> 552 <entry align="center">6.1</entry> 553 <entry><code> __cpp_lib_allocator_traits_is_always_equal >= 201411 </code></entry> 554 </row> 555 556 <row> 557 <entry>Contiguous Iterators </entry> 558 <entry> 559 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4284.html"> 560 N4284 561 </link> 562 </entry> 563 <entry align="center">N/A</entry> 564 <entry/> 565 </row> 566 567 <row> 568 <entry> Minimal incomplete type support for standard containers </entry> 569 <entry> 570 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4510.html"> 571 N4510 572 </link> 573 </entry> 574 <entry align="center"> 3.0 </entry> 575 <entry><code> __cpp_lib_incomplete_container_elements >= 201505 </code> 576 (since 6.2, see Note 2) 577 </entry> 578 </row> 579 580 <row> 581 <entry> Emplace return type </entry> 582 <entry> 583 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0084r2.pdf"> 584 P0084R2 585 </link> 586 </entry> 587 <entry align="center"> 7.1 </entry> 588 <entry/> 589 </row> 590 591 <row> 592 <entry>Improved insertion interface for unique-key maps</entry> 593 <entry> 594 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4279.html"> 595 N4279 596 </link> 597 </entry> 598 <entry align="center"> 6.1 </entry> 599 <entry><code> __cpp_lib_map_try_emplace >= 201411</code>, 600 <code> __cpp_lib_unordered_map_try_emplace >= 201411</code> 601 </entry> 602 </row> 603 604 <row> 605 <entry> Splicing Maps and Sets </entry> 606 <entry> 607 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0083r3.pdf"> 608 P0083R3 609 </link> 610 </entry> 611 <entry align="center"> 7.1 </entry> 612 <entry><code> __cpp_lib_node_extract >= 201606 </code></entry> 613 </row> 614 615 <row> 616 <entry>Non-member <code>size()</code> and more</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/2014/n4280.pdf"> 619 N4280 620 </link> 621 </entry> 622 <entry align="center"> 6.1 </entry> 623 <entry><code> __cpp_lib_nonmember_container_access >= 201411 </code></entry> 624 </row> 625 626 <row> 627 <entry> A Proposal to Add Constexpr Modifiers to <code>reverse_iterator</code>, <code>move_iterator</code>, <code>array</code> and Range Access </entry> 628 <entry> 629 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0031r0.html"> 630 P0031R0 631 </link> 632 </entry> 633 <entry align="center"> 7.1 </entry> 634 <entry><code> __cpp_lib_array_constexpr >= 201603 </code></entry> 635 </row> 636 637 <row> 638 <?dbhtml bgcolor="#B0B0B0" ?> 639 <entry> The Parallelism TS Should be Standardized </entry> 640 <entry> 641 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html"> 642 P0024R2 643 </link> 644 </entry> 645 <entry align="center"> 9.1 </entry> 646 <entry><code> __has_include(<execution>) </code>, 647 <code> __cpp_lib_execution >= 201603 </code>, 648 <code> __cpp_lib_parallel_algorithm >= 201603 </code> 649 (requires linking with <code>-ltbb</code>, see Note 3) 650 </entry> 651 </row> 652 653 <row> 654 <entry> An algorithm to "clamp" a value between a pair of boundary values </entry> 655 <entry> 656 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0025r0.html"> 657 P0025R0 658 </link> 659 </entry> 660 <entry align="center"> 7.1 </entry> 661 <entry><code> __cpp_lib_clamp >= 201603 </code></entry> 662 </row> 663 664 <row> 665 <entry> Adopt Selected Library Fundamentals V2 Components for C++17 </entry> 666 <entry> 667 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0295r0.pdf"> 668 P0295R0 669 </link> 670 </entry> 671 <entry align="center"> 7.1 </entry> 672 <entry><code> __cpp_lib_gcd_lcm >= 201606 </code></entry> 673 </row> 674 675 <row> 676 <entry> Proposal to Introduce a 3-Argument Overload to <code>std::hypot</code> </entry> 677 <entry> 678 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0030r1.pdf"> 679 P0030R1 680 </link> 681 </entry> 682 <entry align="center"> 7.1 </entry> 683 <entry><code> __cpp_lib_hypot >= 201603 </code></entry> 684 </row> 685 686 <row> 687 <entry> Mathematical Special Functions for C++17 </entry> 688 <entry> 689 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0226r1.pdf"> 690 P0226R1 691 </link> 692 </entry> 693 <entry align="center"> 7.1 </entry> 694 <entry><code> __cpp_lib_math_special_functions >= 201603 </code> 695 (see Note 4) 696 </entry> 697 </row> 698 699 <row> 700 <entry>Adopt the File System TS for C++17 </entry> 701 <entry> 702 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r1.html"> 703 P0218R1 704 </link> 705 </entry> 706 <entry align="center"> 8.1 </entry> 707 <entry><code> __has_include(<filesystem>) </code>, 708 <code> __cpp_lib_filesystem >= 201603 </code> 709 (GCC 8.x requires linking with <code>-lstdc++fs</code>) 710 </entry> 711 </row> 712 713 <row> 714 <entry> Relative Paths for Filesystem</entry> 715 <entry> 716 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0219r1.html"> 717 P0219R1 718 </link> 719 </entry> 720 <entry align="center"> 8.1 </entry> 721 <entry><code> __cpp_lib_filesystem >= 201606 </code></entry> 722 </row> 723 724 <row> 725 <entry> Adapting string_view by filesystem paths </entry> 726 <entry> 727 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0392r0.pdf"> 728 P0392R0 729 </link> 730 </entry> 731 <entry align="center"> 8.1 </entry> 732 <entry><code> __cpp_lib_filesystem >= 201606 </code></entry> 733 </row> 734 735 <row> 736 <entry> Directory Entry Caching for Filesystem </entry> 737 <entry> 738 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0317r1.html"> 739 P0317R1 740 </link> 741 </entry> 742 <entry align="center"> 8.1 </entry> 743 <entry><code> __cpp_lib_filesystem >= 201703 </code></entry> 744 </row> 745 746 <row> 747 <entry> constexpr <code>atomic<T>::is_always_lock_free</code> </entry> 748 <entry> 749 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0152r1.html"> 750 P0152R1 751 </link> 752 </entry> 753 <entry align="center"> 7.1 </entry> 754 <entry><code> __cpp_lib_atomic_is_always_lock_free >= 201603 </code></entry> 755 </row> 756 757 <row> 758 <entry>A proposal to add <code>shared_mutex</code> (untimed) (Revision 4)</entry> 759 <entry> 760 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4508.html"> 761 N4508 762 </link> 763 </entry> 764 <entry align="center"> 6.1 </entry> 765 <entry><code> __cpp_lib_shared_mutex >= 201505 </code></entry> 766 </row> 767 768 <row> 769 <entry> Variadic <code>lock_guard</code> (Rev. 5) </entry> 770 <entry> 771 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0156r2.html"> 772 P0156R2 773 </link> 774 </entry> 775 <entry align="center"> 7.1 </entry> 776 <entry><code> __cpp_lib_scoped_lock >= 201703 </code></entry> 777 </row> 778 779 <row> 780 <entry> A byte type definition </entry> 781 <entry> 782 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0298r3.pdf"> 783 P0298R3 784 </link> 785 </entry> 786 <entry align="center"> 7.1 </entry> 787 <entry><code> __cpp_lib_byte >= 201603 </code> (since 7.3, see Note 2) 788 </entry> 789 </row> 790 791 <row> 792 <?dbhtml bgcolor="#B0B0B0" ?> 793 <entry> Elementary string conversions </entry> 794 <entry> 795 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0067r5.html"> 796 P0067R5 797 </link> 798 </entry> 799 <entry align="center"> 8.1 (only integral types supported) </entry> 800 <entry><code> __has_include(<charconv>) </code> 801 <code> __cpp_lib_to_chars >= 201611 </code></entry> 802 </row> 803 804 <row> 805 <entry> Homogeneous interface for variant, any and optional </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/2016/p0032r3.pdf"> 808 P0032R3 809 </link> 810 </entry> 811 <entry align="center"> 7.1 </entry> 812 <entry> 813 <code> __cpp_lib_any >= 201606 </code>, 814 <code> __cpp_lib_optional >= 201606 </code>, 815 <code> __cpp_lib_variant >= 201606 </code> 816 </entry> 817 </row> 818 819 <row> 820 <entry> Making Optional Greater Equal Again </entry> 821 <entry> 822 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0307r2.pdf"> 823 P0307R2 824 </link> 825 </entry> 826 <entry align="center"> 7.1 </entry> 827 <entry> <code> __cpp_lib_optional >= 201606 </code> </entry> 828 </row> 829 830 </tbody> 831</tgroup> 832</table> 833 834<para> 835Note 1: This feature is supported in GCC 7.1 and 7.2 but before GCC 7.3 the 836<code>__cpp_lib</code> macro is not defined, and compilation will fail if the 837header is included without using <option>-std</option> to enable C++17 support. 838</para> 839 840<para> 841Note 2: This feature is supported in older releases but the 842<code>__cpp_lib</code> macro is not defined to the right value 843(or not defined at all) until the version shown in parentheses. 844</para> 845 846<para> 847Note 3: The Parallel Algorithms have an external dependency on Intel TBB 2018 848or later. If the <filename class="headerfile"><execution></filename> 849header is included then <code>-ltbb</code> must be used to link to TBB. 850</para> 851 852<para> 853Note 4: The mathematical special functions are enabled in C++17 mode from 854GCC 7.1 onwards. For GCC 6.x or for C++11/C++14 define 855<code>__STDCPP_WANT_MATH_SPEC_FUNCS__</code> to a non-zero value 856and test for <code>__STDCPP_MATH_SPEC_FUNCS__ >= 201003L</code>. 857</para> 858 859 860 861<para> 862The following status table is based on the table of contents of 863ISO/IEC 14882:2017. 864Some subclauses are not shown in the table where the content is unchanged 865since C++14 and the implementation is complete. 866</para> 867 868<table frame="all" xml:id="table.cxx17_status"> 869<title>C++ 2017 Implementation Status</title> 870 871<tgroup cols="4" align="left" colsep="0" rowsep="1"> 872<colspec colname="c1"/> 873<colspec colname="c2"/> 874<colspec colname="c3"/> 875<colspec colname="c4"/> 876 <thead> 877 <row> 878 <entry>Section</entry> 879 <entry>Description</entry> 880 <entry>Status</entry> 881 <entry>Comments</entry> 882 </row> 883 </thead> 884 885 <tbody> 886 887 <row> 888 <entry> 889 <emphasis>21</emphasis> 890 </entry> 891 <entry namest="c2" nameend="c4" align="left"> 892 <emphasis>Language support</emphasis> 893 </entry> 894 </row> 895 896 <row> 897 <entry>21.1</entry> 898 <entry>General</entry> 899 <entry/> 900 <entry/> 901 </row> 902 <row> 903 <entry>21.2</entry> 904 <entry>Common definitions</entry> 905 <entry/> 906 <entry/> 907 </row> 908 <row> 909 <entry>21.3</entry> 910 <entry>Implementation properties</entry> 911 <entry/> 912 <entry/> 913 </row> 914 <row> 915 <entry>21.3.1</entry> 916 <entry>General</entry> 917 <entry/> 918 <entry/> 919 </row> 920 <row> 921 <entry>21.3.2</entry> 922 <entry>Header <code><limits></code> synopsis</entry> 923 <entry/> 924 <entry/> 925 </row> 926 <row> 927 <entry>21.3.3</entry> 928 <entry>Floating-point type properties</entry> 929 <entry/> 930 <entry/> 931 </row> 932 <row> 933 <?dbhtml bgcolor="#C8B0B0" ?> 934 <entry>21.3.3.1</entry> 935 <entry><code>float_round_style</code></entry> 936 <entry>N</entry> 937 <entry/> 938 </row> 939 <row> 940 <?dbhtml bgcolor="#C8B0B0" ?> 941 <entry>21.3.3.2</entry> 942 <entry><code>float_denorm_style</code></entry> 943 <entry>N</entry> 944 <entry/> 945 </row> 946 <row> 947 <entry>21.3.4</entry> 948 <entry>Class template <code>numeric_limits</code></entry> 949 <entry>Y</entry> 950 <entry/> 951 </row> 952 <row> 953 <entry>21.3.5</entry> 954 <entry>Header <code><climits></code> synopsis</entry> 955 <entry>Y</entry> 956 <entry/> 957 </row> 958 <row> 959 <entry>21.3.6</entry> 960 <entry>Header <code><cfloat></code> synopsis</entry> 961 <entry>Y</entry> 962 <entry/> 963 </row> 964 <row> 965 <entry>21.4</entry> 966 <entry>Integer types</entry> 967 <entry/> 968 <entry/> 969 </row> 970 <row> 971 <entry>21.4.1</entry> 972 <entry>Header <code><cstdint></code> synopsis</entry> 973 <entry>Y</entry> 974 <entry/> 975 </row> 976 <row> 977 <?dbhtml bgcolor="#B0B0B0" ?> 978 <entry>21.5</entry> 979 <entry>Start and termination</entry> 980 <entry>Partial</entry> 981 <entry>C library dependency for quick_exit, at_quick_exit</entry> 982 </row> 983 <row> 984 <entry>21.6</entry> 985 <entry>Dynamic memory management</entry> 986 <entry/> 987 <entry/> 988 </row> 989 <row> 990 <entry>21.6.1</entry> 991 <entry>Header <code><new></code> synopsis</entry> 992 <entry/> 993 <entry/> 994 </row> 995 <row> 996 <entry>21.6.2</entry> 997 <entry>Storage allocation and deallocation</entry> 998 <entry>Y</entry> 999 <entry/> 1000 </row> 1001 <row> 1002 <entry>21.6.3</entry> 1003 <entry>Storage allocation errors</entry> 1004 <entry>Y</entry> 1005 <entry/> 1006 </row> 1007 <row> 1008 <entry>21.6.4</entry> 1009 <entry>Pointer optimization barrier</entry> 1010 <entry>Y</entry> 1011 <entry/> 1012 </row> 1013 <row> 1014 <?dbhtml bgcolor="#C8B0B0" ?> 1015 <entry>21.6.5</entry> 1016 <entry>Hardware interference size</entry> 1017 <entry>N</entry> 1018 <entry/> 1019 </row> 1020 <row> 1021 <entry>21.7</entry> 1022 <entry>Type identification</entry> 1023 <entry>Y</entry> 1024 <entry/> 1025 </row> 1026 <row> 1027 <entry>21.8</entry> 1028 <entry>Exception handling</entry> 1029 <entry/> 1030 <entry/> 1031 </row> 1032 <row> 1033 <entry>21.8.1</entry> 1034 <entry>Header <code><exception></code> synopsis</entry> 1035 <entry/> 1036 <entry/> 1037 </row> 1038 <row> 1039 <entry>21.8.2</entry> 1040 <entry>Class exception</entry> 1041 <entry>Y</entry> 1042 <entry/> 1043 </row> 1044 <row> 1045 <entry>21.8.3</entry> 1046 <entry>Class bad_exception</entry> 1047 <entry>Y</entry> 1048 <entry/> 1049 </row> 1050 <row> 1051 <entry>21.8.4</entry> 1052 <entry>Abnormal termination</entry> 1053 <entry>Y</entry> 1054 <entry/> 1055 </row> 1056 <row> 1057 <entry>21.8.5</entry> 1058 <entry><code>uncaught_exceptions</code></entry> 1059 <entry>Y</entry> 1060 <entry/> 1061 </row> 1062 <row> 1063 <entry>21.8.6</entry> 1064 <entry>Exception Propagation</entry> 1065 <entry>Y</entry> 1066 <entry/> 1067 </row> 1068 <row> 1069 <entry>21.8.7</entry> 1070 <entry><code>nested_exception</code></entry> 1071 <entry>Y</entry> 1072 <entry/> 1073 </row> 1074 <row> 1075 <entry>21.9</entry> 1076 <entry>Initializer lists</entry> 1077 <entry>Y</entry> 1078 <entry/> 1079 </row> 1080 <row> 1081 <entry>21.10</entry> 1082 <entry>Other runtime support</entry> 1083 <entry>Y</entry> 1084 <entry/> 1085 </row> 1086 <row> 1087 <entry> 1088 <emphasis>22</emphasis> 1089 </entry> 1090 <entry namest="c2" nameend="c4" align="left"> 1091 <emphasis>Diagnostics</emphasis> 1092 </entry> 1093 </row> 1094 <row> 1095 <entry>22.1</entry> 1096 <entry>General</entry> 1097 <entry/> 1098 <entry/> 1099 </row> 1100 <row> 1101 <entry>22.2</entry> 1102 <entry>Exception classes</entry> 1103 <entry>Y</entry> 1104 <entry/> 1105 </row> 1106 <row> 1107 <entry>22.3</entry> 1108 <entry>Assertions</entry> 1109 <entry>Y</entry> 1110 <entry/> 1111 </row> 1112 <row> 1113 <entry>22.4</entry> 1114 <entry>Error numbers</entry> 1115 <entry>Y</entry> 1116 <entry/> 1117 </row> 1118 <row> 1119 <entry>22.5</entry> 1120 <entry>System error support</entry> 1121 <entry/> 1122 <entry/> 1123 </row> 1124 <row> 1125 <entry> 1126 <emphasis>23</emphasis> 1127 </entry> 1128 <entry namest="c2" nameend="c4" align="left"> 1129 <emphasis>General utilities</emphasis> 1130 </entry> 1131 </row> 1132 <row> 1133 <entry>23.1</entry> 1134 <entry>General</entry> 1135 <entry/> 1136 <entry/> 1137 </row> 1138 <row> 1139 <entry>23.2</entry> 1140 <entry>Utility components</entry> 1141 <entry/> 1142 <entry/> 1143 </row> 1144 <row> 1145 <entry>23.2.1</entry> 1146 <entry>Header <code><utility></code> synopsis</entry> 1147 <entry/> 1148 <entry/> 1149 </row> 1150 <row> 1151 <entry>23.2.2</entry> 1152 <entry>Operators</entry> 1153 <entry>Y</entry> 1154 <entry/> 1155 </row> 1156 <row> 1157 <entry>23.2.3</entry> 1158 <entry><code>swap</code></entry> 1159 <entry>Y</entry> 1160 <entry/> 1161 </row> 1162 <row> 1163 <entry>23.2.4</entry> 1164 <entry><code>exchange</code></entry> 1165 <entry>Y</entry> 1166 <entry/> 1167 </row> 1168 <row> 1169 <entry>23.2.5</entry> 1170 <entry>Forward/move helpers</entry> 1171 <entry>Y</entry> 1172 <entry/> 1173 </row> 1174 <row> 1175 <entry>23.2.6</entry> 1176 <entry>Function template <code>as_const</code></entry> 1177 <entry>Y</entry> 1178 <entry/> 1179 </row> 1180 <row> 1181 <entry>23.2.7</entry> 1182 <entry>Function template <code>declval</code></entry> 1183 <entry>Y</entry> 1184 <entry/> 1185 </row> 1186 <row> 1187 <?dbhtml bgcolor="#B0B0B0" ?> 1188 <entry>23.2.8</entry> 1189 <entry>Primitive numeric output conversion</entry> 1190 <entry>Partial</entry> 1191 <entry>Only integer types supported, not floating-point types</entry> 1192 </row> 1193 <row> 1194 <?dbhtml bgcolor="#B0B0B0" ?> 1195 <entry>23.2.9</entry> 1196 <entry>Primitive numeric input conversion</entry> 1197 <entry>Partial</entry> 1198 <entry>Only integer types supported, not floating-point types</entry> 1199 </row> 1200 <row> 1201 <entry>23.3</entry> 1202 <entry>Compile-time integer sequences</entry> 1203 <entry/> 1204 <entry/> 1205 </row> 1206 <row> 1207 <entry>23.4</entry> 1208 <entry>Pairs</entry> 1209 <entry>Y</entry> 1210 <entry/> 1211 </row> 1212 <row> 1213 <entry>23.5</entry> 1214 <entry>Tuples</entry> 1215 <entry>Y</entry> 1216 <entry/> 1217 </row> 1218 <row> 1219 <entry>23.6</entry> 1220 <entry>Optional objects</entry> 1221 <entry>Y</entry> 1222 <entry/> 1223 </row> 1224 <row> 1225 <entry>23.7</entry> 1226 <entry>Variants</entry> 1227 <entry>Y</entry> 1228 <entry/> 1229 </row> 1230 <row> 1231 <entry>23.8</entry> 1232 <entry>Storage for any type</entry> 1233 <entry>Y</entry> 1234 <entry/> 1235 </row> 1236 <row> 1237 <entry>23.9</entry> 1238 <entry>Bitsets</entry> 1239 <entry>Y</entry> 1240 <entry/> 1241 </row> 1242 <row> 1243 <entry>23.10</entry> 1244 <entry>Memory</entry> 1245 <entry>Y</entry> 1246 <entry/> 1247 </row> 1248 <row> 1249 <entry>23.10.1</entry> 1250 <entry>In general</entry> 1251 <entry/> 1252 <entry/> 1253 </row> 1254 <row> 1255 <entry>23.10.2</entry> 1256 <entry>Header <code><memory></code> synopsis</entry> 1257 <entry>Y</entry> 1258 <entry/> 1259 </row> 1260 <row> 1261 <entry>23.10.3</entry> 1262 <entry>Pointer traits</entry> 1263 <entry>Y</entry> 1264 <entry/> 1265 </row> 1266 <row> 1267 <entry>23.10.4</entry> 1268 <entry>Pointer safety</entry> 1269 <entry>Y</entry> 1270 <entry/> 1271 </row> 1272 <row> 1273 <entry>23.10.5</entry> 1274 <entry>Align</entry> 1275 <entry>Y</entry> 1276 <entry/> 1277 </row> 1278 <row> 1279 <entry>23.10.6</entry> 1280 <entry>Allocator argument tag</entry> 1281 <entry>Y</entry> 1282 <entry/> 1283 </row> 1284 <row> 1285 <entry>23.10.7</entry> 1286 <entry><code>uses_allocator</code></entry> 1287 <entry>Y</entry> 1288 <entry/> 1289 </row> 1290 <row> 1291 <entry>23.10.8</entry> 1292 <entry>Allocator traits</entry> 1293 <entry>Y</entry> 1294 <entry/> 1295 </row> 1296 <row> 1297 <entry>23.10.9</entry> 1298 <entry>The default allocator</entry> 1299 <entry>Y</entry> 1300 <entry/> 1301 </row> 1302 <row> 1303 <entry>23.10.10</entry> 1304 <entry>Specialized algorithms</entry> 1305 <entry>Y</entry> 1306 <entry/> 1307 </row> 1308 <row> 1309 <entry>23.10.11</entry> 1310 <entry>C library memory allocation</entry> 1311 <entry>Y</entry> 1312 <entry/> 1313 </row> 1314 <row> 1315 <entry>23.11</entry> 1316 <entry>Smart pointers</entry> 1317 <entry/> 1318 <entry/> 1319 </row> 1320 <row> 1321 <entry>23.11.1</entry> 1322 <entry>Class template <code>unique_ptr</code></entry> 1323 <entry>Y</entry> 1324 <entry/> 1325 </row> 1326 <row> 1327 <entry>23.11.2</entry> 1328 <entry>Shared-ownership pointers</entry> 1329 <entry>Y</entry> 1330 <entry/> 1331 </row> 1332 <row> 1333 <entry>23.12</entry> 1334 <entry>Memory resources</entry> 1335 <entry/> 1336 <entry/> 1337 </row> 1338 <row> 1339 <entry>23.12.1</entry> 1340 <entry>Header <code><memory_resource></code> synopsis</entry> 1341 <entry>Y</entry> 1342 <entry/> 1343 </row> 1344 <row> 1345 <entry>23.12.2</entry> 1346 <entry>Class <code>memory_resource</code></entry> 1347 <entry>Y</entry> 1348 <entry/> 1349 </row> 1350 <row> 1351 <entry>23.12.3</entry> 1352 <entry>Class template <code>polymorphic_allocator</code></entry> 1353 <entry>Y</entry> 1354 <entry/> 1355 </row> 1356 <row> 1357 <entry>23.12.4</entry> 1358 <entry>Access to program-wide <code>memory_resource</code> objects</entry> 1359 <entry>Y</entry> 1360 <entry/> 1361 </row> 1362 <row> 1363 <entry>23.12.5</entry> 1364 <entry>Pool resource classes</entry> 1365 <entry>Y</entry> 1366 <entry/> 1367 </row> 1368 <row> 1369 <entry>23.12.6</entry> 1370 <entry>Class <code>monotonic_buffer_resource</code></entry> 1371 <entry>Y</entry> 1372 <entry/> 1373 </row> 1374 <row> 1375 <entry>23.13</entry> 1376 <entry>Class template <code>scoped_allocator_adaptor</code></entry> 1377 <entry>Y</entry> 1378 <entry/> 1379 </row> 1380 <row> 1381 <entry>23.14</entry> 1382 <entry>Function objects</entry> 1383 <entry/> 1384 <entry/> 1385 </row> 1386 <row> 1387 <entry>23.14.1</entry> 1388 <entry>Header <code><functional></code> synopsis</entry> 1389 <entry/> 1390 <entry/> 1391 </row> 1392 <row> 1393 <entry>23.14.2</entry> 1394 <entry>Definitions</entry> 1395 <entry/> 1396 <entry/> 1397 </row> 1398 <row> 1399 <entry>23.14.3</entry> 1400 <entry>Requirements</entry> 1401 <entry/> 1402 <entry/> 1403 </row> 1404 <row> 1405 <entry>23.14.4</entry> 1406 <entry>Function template <code>invoke</code></entry> 1407 <entry>Y</entry> 1408 <entry/> 1409 </row> 1410 <row> 1411 <entry>23.14.5</entry> 1412 <entry>Class template <code>reference_wrapper</code></entry> 1413 <entry>Y</entry> 1414 <entry/> 1415 </row> 1416 <row> 1417 <entry>23.14.6</entry> 1418 <entry>Arithmetic operation</entry> 1419 <entry>Y</entry> 1420 <entry/> 1421 </row> 1422 <row> 1423 <entry>23.14.7</entry> 1424 <entry>Comparisons</entry> 1425 <entry>Y</entry> 1426 <entry/> 1427 </row> 1428 <row> 1429 <entry>23.14.8</entry> 1430 <entry>Logical operations</entry> 1431 <entry>Y</entry> 1432 <entry/> 1433 </row> 1434 <row> 1435 <entry>23.14.9</entry> 1436 <entry>Bitwise operations</entry> 1437 <entry>Y</entry> 1438 <entry/> 1439 </row> 1440 <row> 1441 <entry>23.14.10</entry> 1442 <entry>Function template <code>not_fn</code></entry> 1443 <entry>Y</entry> 1444 <entry/> 1445 </row> 1446 <row> 1447 <entry>23.14.11</entry> 1448 <entry>Function object binders</entry> 1449 <entry>Y</entry> 1450 <entry/> 1451 </row> 1452 <row> 1453 <entry>23.14.12</entry> 1454 <entry>Function template <code>mem_fn</code></entry> 1455 <entry>Y</entry> 1456 <entry/> 1457 </row> 1458 <row> 1459 <entry>23.14.13</entry> 1460 <entry>Polymorphic function wrappers</entry> 1461 <entry>Y</entry> 1462 <entry/> 1463 </row> 1464 <row> 1465 <entry>23.14.14</entry> 1466 <entry>Searchers</entry> 1467 <entry>Y</entry> 1468 <entry/> 1469 </row> 1470 <row> 1471 <entry>23.14.15</entry> 1472 <entry>Class template <code>hash</code></entry> 1473 <entry>Y</entry> 1474 <entry/> 1475 </row> 1476 <row> 1477 <entry>23.15</entry> 1478 <entry>Metaprogramming and type traits</entry> 1479 <entry/> 1480 <entry/> 1481 </row> 1482 <row> 1483 <entry>23.15.1</entry> 1484 <entry>Requirements</entry> 1485 <entry/> 1486 <entry/> 1487 </row> 1488 <row> 1489 <entry>23.15.2</entry> 1490 <entry>Header <code><type_traits></code> synopsis</entry> 1491 <entry>Y</entry> 1492 <entry/> 1493 </row> 1494 <row> 1495 <entry>23.15.3</entry> 1496 <entry>Helper classes</entry> 1497 <entry>Y</entry> 1498 <entry/> 1499 </row> 1500 <row> 1501 <entry>23.15.4</entry> 1502 <entry>Unary Type Traits</entry> 1503 <entry>Y</entry> 1504 <entry/> 1505 </row> 1506 <row> 1507 <entry>23.15.5</entry> 1508 <entry>Type property queries</entry> 1509 <entry>Y</entry> 1510 <entry/> 1511 </row> 1512 <row> 1513 <entry>23.15.6</entry> 1514 <entry>Relationships between types</entry> 1515 <entry>Y</entry> 1516 <entry/> 1517 </row> 1518 <row> 1519 <entry>23.15.7</entry> 1520 <entry>Transformations between types</entry> 1521 <entry>Y</entry> 1522 <entry/> 1523 </row> 1524 <row> 1525 <entry>23.15.8</entry> 1526 <entry>Logical operator traits</entry> 1527 <entry>Y</entry> 1528 <entry/> 1529 </row> 1530 <row> 1531 <entry>23.16</entry> 1532 <entry>Compile-time rational arithmetic</entry> 1533 <entry>Y</entry> 1534 <entry/> 1535 </row> 1536 <row> 1537 <entry>23.17.1</entry> 1538 <entry>In general</entry> 1539 <entry/> 1540 <entry/> 1541 </row> 1542 <row> 1543 <entry>23.17.2</entry> 1544 <entry>Header <code><chrono></code> synopsis</entry> 1545 <entry/> 1546 <entry/> 1547 </row> 1548 <row> 1549 <entry>23.17</entry> 1550 <entry>Time utilities</entry> 1551 <entry/> 1552 <entry/> 1553 </row> 1554 <row> 1555 <entry>23.17.3</entry> 1556 <entry>Clock requirements</entry> 1557 <entry>Y</entry> 1558 <entry/> 1559 </row> 1560 <row> 1561 <entry>23.17.4</entry> 1562 <entry>Time-related traits</entry> 1563 <entry>Y</entry> 1564 <entry/> 1565 </row> 1566 <row> 1567 <entry>23.17.5</entry> 1568 <entry>Class template <code>duration</code></entry> 1569 <entry>Y</entry> 1570 <entry/> 1571 </row> 1572 <row> 1573 <entry>23.17.6</entry> 1574 <entry>Class template <code>time_point</code></entry> 1575 <entry>Y</entry> 1576 <entry/> 1577 </row> 1578 <row> 1579 <entry>23.17.7</entry> 1580 <entry>Clocks</entry> 1581 <entry>Y</entry> 1582 <entry/> 1583 </row> 1584 <row> 1585 <entry>23.17.8</entry> 1586 <entry>Header <code><ctime></code> synopsis</entry> 1587 <entry>Y</entry> 1588 <entry/> 1589 </row> 1590 <row> 1591 <entry>23.18</entry> 1592 <entry>Class <code>type_index</code></entry> 1593 <entry>Y</entry> 1594 <entry/> 1595 </row> 1596 <row> 1597 <entry>23.19</entry> 1598 <entry>Execution policies</entry> 1599 <entry/> 1600 <entry/> 1601 </row> 1602 <row> 1603 <entry>23.19.1</entry> 1604 <entry>In general</entry> 1605 <entry/> 1606 <entry/> 1607 </row> 1608 <row> 1609 <entry>23.19.2</entry> 1610 <entry>Header <code><execution></code> synopsis</entry> 1611 <entry/> 1612 <entry/> 1613 </row> 1614 <row> 1615 <entry>23.19.3</entry> 1616 <entry>Execution policy type trait</entry> 1617 <entry>Y</entry> 1618 <entry/> 1619 </row> 1620 <row> 1621 <entry>23.19.4</entry> 1622 <entry>Sequenced execution policy</entry> 1623 <entry>Y</entry> 1624 <entry/> 1625 </row> 1626 <row> 1627 <entry>23.19.5</entry> 1628 <entry>Parallel execution policy</entry> 1629 <entry>Y</entry> 1630 <entry/> 1631 </row> 1632 <row> 1633 <entry>23.19.6</entry> 1634 <entry>Parallel and unsequenced execution policy</entry> 1635 <entry>Y</entry> 1636 <entry/> 1637 </row> 1638 <row> 1639 <entry>23.19.7</entry> 1640 <entry>Execution policy objects</entry> 1641 <entry>Y</entry> 1642 <entry/> 1643 </row> 1644 <row> 1645 <entry> 1646 <emphasis>24</emphasis> 1647 </entry> 1648 <entry namest="c2" nameend="c4" align="left"> 1649 <emphasis>Strings</emphasis> 1650 </entry> 1651 </row> 1652 <row> 1653 <entry>24.1</entry> 1654 <entry>General</entry> 1655 <entry/> 1656 <entry/> 1657 </row> 1658 <row> 1659 <entry>24.2</entry> 1660 <entry>Character traits</entry> 1661 <entry>Y</entry> 1662 <entry/> 1663 </row> 1664 <row> 1665 <entry>24.3</entry> 1666 <entry>String classes</entry> 1667 <entry>Y</entry> 1668 <entry/> 1669 </row> 1670 <row> 1671 <entry>24.4</entry> 1672 <entry>String view classes</entry> 1673 <entry>Y</entry> 1674 <entry/> 1675 </row> 1676 <row> 1677 <entry>24.4.1</entry> 1678 <entry>Header <code><string_view></code> synopsis</entry> 1679 <entry>Y</entry> 1680 <entry/> 1681 </row> 1682 <row> 1683 <entry>24.4.2</entry> 1684 <entry>Class template <code>basic_string_view</code></entry> 1685 <entry>Y</entry> 1686 <entry/> 1687 </row> 1688 <row> 1689 <entry>24.4.3</entry> 1690 <entry>Non-member comparison functions</entry> 1691 <entry>Y</entry> 1692 <entry/> 1693 </row> 1694 <row> 1695 <entry>24.4.4</entry> 1696 <entry>Inserters and extractors</entry> 1697 <entry>Y</entry> 1698 <entry/> 1699 </row> 1700 <row> 1701 <entry>24.4.5</entry> 1702 <entry>Hash support</entry> 1703 <entry>Y</entry> 1704 <entry/> 1705 </row> 1706 <row> 1707 <entry>24.4.6</entry> 1708 <entry>Suffix for <code>basic_string_view</code> literals</entry> 1709 <entry>Y</entry> 1710 <entry/> 1711 </row> 1712 <row> 1713 <?dbhtml bgcolor="#B0B0B0" ?> 1714 <entry>24.5</entry> 1715 <entry>Null-terminated sequence utilities</entry> 1716 <entry>Partial</entry> 1717 <entry>C library dependency. </entry> 1718 </row> 1719 <row> 1720 <entry> 1721 <emphasis>25</emphasis> 1722 </entry> 1723 <entry namest="c2" nameend="c4" align="left"> 1724 <emphasis>Localization</emphasis> 1725 </entry> 1726 </row> 1727 <row> 1728 <entry>25.1</entry> 1729 <entry>General</entry> 1730 <entry>Y</entry> 1731 <entry/> 1732 </row> 1733 <row> 1734 <entry>25.2</entry> 1735 <entry>Header <code><locale></code> synopsis</entry> 1736 <entry>Y</entry> 1737 <entry/> 1738 </row> 1739 <row> 1740 <entry>25.3</entry> 1741 <entry>Locales</entry> 1742 <entry>Y</entry> 1743 <entry/> 1744 </row> 1745 <row> 1746 <entry>25.4</entry> 1747 <entry>Standard <code>locale</code> categories</entry> 1748 <entry>Y</entry> 1749 <entry/> 1750 </row> 1751 <row> 1752 <entry>25.5</entry> 1753 <entry>C Library Locales</entry> 1754 <entry>Y</entry> 1755 <entry/> 1756 </row> 1757 <row> 1758 <entry> 1759 <emphasis>26</emphasis> 1760 </entry> 1761 <entry namest="c2" nameend="c4" align="left"> 1762 <emphasis>Containers</emphasis> 1763 </entry> 1764 </row> 1765 <row> 1766 <entry>26.1</entry> 1767 <entry>General</entry> 1768 <entry/> 1769 <entry/> 1770 </row> 1771 <row> 1772 <entry>26.2</entry> 1773 <entry>Container requirements</entry> 1774 <entry>Y</entry> 1775 <entry/> 1776 </row> 1777 <row> 1778 <entry>26.3</entry> 1779 <entry>Sequence containers</entry> 1780 <entry>Y</entry> 1781 <entry/> 1782 </row> 1783 <row> 1784 <entry>26.4</entry> 1785 <entry>Associative containers</entry> 1786 <entry>Y</entry> 1787 <entry/> 1788 </row> 1789 <row> 1790 <entry>26.5</entry> 1791 <entry>Unordered associative containers</entry> 1792 <entry>Y</entry> 1793 <entry/> 1794 </row> 1795 <row> 1796 <entry>26.6</entry> 1797 <entry>Container adaptors</entry> 1798 <entry>Y</entry> 1799 <entry/> 1800 </row> 1801 <row> 1802 <entry> 1803 <emphasis>27</emphasis> 1804 </entry> 1805 <entry namest="c2" nameend="c4" align="left"> 1806 <emphasis>Iterators</emphasis> 1807 </entry> 1808 </row> 1809 <row> 1810 <entry>27.1</entry> 1811 <entry>General</entry> 1812 <entry>Y</entry> 1813 <entry/> 1814 </row> 1815 <row> 1816 <entry>27.2</entry> 1817 <entry>Iterator requirements</entry> 1818 <entry>Y</entry> 1819 <entry/> 1820 </row> 1821 <row> 1822 <entry>27.3</entry> 1823 <entry>Header <code><iterator></code> synopsis</entry> 1824 <entry>Y</entry> 1825 <entry/> 1826 </row> 1827 <row> 1828 <entry>27.4</entry> 1829 <entry>Iterator primitives</entry> 1830 <entry>Y</entry> 1831 <entry/> 1832 </row> 1833 <row> 1834 <entry>27.5</entry> 1835 <entry>Iterator adaptors</entry> 1836 <entry>Y</entry> 1837 <entry/> 1838 </row> 1839 <row> 1840 <entry>27.6</entry> 1841 <entry>Stream iterators</entry> 1842 <entry>Y</entry> 1843 <entry/> 1844 </row> 1845 <row> 1846 <entry>27.7</entry> 1847 <entry>Range access</entry> 1848 <entry>Y</entry> 1849 <entry/> 1850 </row> 1851 <row> 1852 <entry>27.8</entry> 1853 <entry>Container access</entry> 1854 <entry>Y</entry> 1855 <entry/> 1856 </row> 1857 <row> 1858 <entry> 1859 <emphasis>28</emphasis> 1860 </entry> 1861 <entry namest="c2" nameend="c4" align="left"> 1862 <emphasis>Algorithms</emphasis> 1863 </entry> 1864 </row> 1865 <row> 1866 <entry>28.1</entry> 1867 <entry>General</entry> 1868 <entry/> 1869 <entry/> 1870 </row> 1871 <row> 1872 <entry>28.2</entry> 1873 <entry>Header <code><algorithm></code> synopsis</entry> 1874 <entry/> 1875 <entry/> 1876 </row> 1877 <row> 1878 <entry>28.3</entry> 1879 <entry>Algorithms requirements</entry> 1880 <entry/> 1881 <entry/> 1882 </row> 1883 <row> 1884 <entry>28.4</entry> 1885 <entry>Parallel algorithms</entry> 1886 <entry/> 1887 <entry>Using <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://github.com/llvm/llvm-project/tree/main/pstl">PSTL</link></entry> 1888 </row> 1889 <row> 1890 <entry>28.5</entry> 1891 <entry>Non-modifying sequence operations</entry> 1892 <entry>Y</entry> 1893 <entry/> 1894 </row> 1895 <row> 1896 <entry>28.6</entry> 1897 <entry>Mutating sequence operations</entry> 1898 <entry>Y</entry> 1899 <entry/> 1900 </row> 1901 <row> 1902 <entry>28.7</entry> 1903 <entry>Sorting and related operations</entry> 1904 <entry>Y</entry> 1905 <entry/> 1906 </row> 1907 <row> 1908 <entry>28.8</entry> 1909 <entry>C library algorithms</entry> 1910 <entry>Y</entry> 1911 <entry/> 1912 </row> 1913 <row> 1914 <entry> 1915 <emphasis>29</emphasis> 1916 </entry> 1917 <entry namest="c2" nameend="c4" align="left"> 1918 <emphasis>Numerics</emphasis> 1919 </entry> 1920 </row> 1921 <row> 1922 <entry>29.1</entry> 1923 <entry>General</entry> 1924 <entry/> 1925 <entry/> 1926 </row> 1927 <row> 1928 <entry>29.2</entry> 1929 <entry>Definitions</entry> 1930 <entry/> 1931 <entry/> 1932 </row> 1933 <row> 1934 <entry>29.3</entry> 1935 <entry>Numeric type requirements</entry> 1936 <entry>Y</entry> 1937 <entry/> 1938 </row> 1939 <row> 1940 <entry>29.4</entry> 1941 <entry>The floating-point environment</entry> 1942 <entry>Y</entry> 1943 <entry/> 1944 </row> 1945 <row> 1946 <entry>29.5</entry> 1947 <entry>Complex numbers</entry> 1948 <entry>Y</entry> 1949 <entry/> 1950 </row> 1951 <row> 1952 <entry>29.6</entry> 1953 <entry>Random number generation</entry> 1954 <entry>Y</entry> 1955 <entry/> 1956 </row> 1957 <row> 1958 <entry>29.7</entry> 1959 <entry>Numeric arrays</entry> 1960 <entry>Y</entry> 1961 <entry/> 1962 </row> 1963 <row> 1964 <entry>29.8</entry> 1965 <entry>Generalized numeric operations</entry> 1966 <entry/> 1967 <entry/> 1968 </row> 1969 <row> 1970 <entry>29.8.1</entry> 1971 <entry>Header <code><numeric></code> synopsis</entry> 1972 <entry/> 1973 <entry/> 1974 </row> 1975 <row> 1976 <entry>29.8.2</entry> 1977 <entry>Accumulate</entry> 1978 <entry>Y</entry> 1979 <entry/> 1980 </row> 1981 <row> 1982 <entry>29.8.3</entry> 1983 <entry>Reduce</entry> 1984 <entry>Y</entry> 1985 <entry/> 1986 </row> 1987 <row> 1988 <entry>29.8.4</entry> 1989 <entry>Inner product</entry> 1990 <entry>Y</entry> 1991 <entry/> 1992 </row> 1993 <row> 1994 <entry>29.8.5</entry> 1995 <entry>Transform reduce</entry> 1996 <entry>Y</entry> 1997 <entry/> 1998 </row> 1999 <row> 2000 <entry>29.8.6</entry> 2001 <entry>Partial sum</entry> 2002 <entry>Y</entry> 2003 <entry/> 2004 </row> 2005 <row> 2006 <entry>29.8.7</entry> 2007 <entry>Exclusive scan</entry> 2008 <entry>Y</entry> 2009 <entry/> 2010 </row> 2011 <row> 2012 <entry>29.8.8</entry> 2013 <entry>Inclusive scan</entry> 2014 <entry>Y</entry> 2015 <entry/> 2016 </row> 2017 <row> 2018 <entry>29.8.9</entry> 2019 <entry>Transform exclusive scan</entry> 2020 <entry>Y</entry> 2021 <entry/> 2022 </row> 2023 <row> 2024 <entry>29.8.10</entry> 2025 <entry>Transform inclusive scan</entry> 2026 <entry>Y</entry> 2027 <entry/> 2028 </row> 2029 <row> 2030 <entry>29.8.11</entry> 2031 <entry>Adjacent difference</entry> 2032 <entry>Y</entry> 2033 <entry/> 2034 </row> 2035 <row> 2036 <entry>29.8.12</entry> 2037 <entry>Iota</entry> 2038 <entry>Y</entry> 2039 <entry/> 2040 </row> 2041 <row> 2042 <entry>29.8.13</entry> 2043 <entry>Greatest common divisor</entry> 2044 <entry>Y</entry> 2045 <entry/> 2046 </row> 2047 <row> 2048 <entry>29.8.14</entry> 2049 <entry>Least common multiple</entry> 2050 <entry>Y</entry> 2051 <entry/> 2052 </row> 2053 <row> 2054 <entry>29.9</entry> 2055 <entry>Mathematical functions for floating-point types</entry> 2056 <entry/> 2057 <entry/> 2058 </row> 2059 <row> 2060 <entry>29.9.1</entry> 2061 <entry>Header <code><cmath></code> synopsis</entry> 2062 <entry/> 2063 <entry/> 2064 </row> 2065 <row> 2066 <entry>29.9.2</entry> 2067 <entry>Absolute values</entry> 2068 <entry>Y</entry> 2069 <entry/> 2070 </row> 2071 <row> 2072 <entry>29.9.3</entry> 2073 <entry>Three-dimensional hypotenuse</entry> 2074 <entry>Y</entry> 2075 <entry/> 2076 </row> 2077 <row> 2078 <entry>29.9.4</entry> 2079 <entry>Classification / comparison functions</entry> 2080 <entry>Y</entry> 2081 <entry/> 2082 </row> 2083 <row> 2084 <entry>29.9.5</entry> 2085 <entry>Mathematical special functions</entry> 2086 <entry>Y</entry> 2087 <entry/> 2088 </row> 2089 <row> 2090 <entry> 2091 <emphasis>30</emphasis> 2092 </entry> 2093 <entry namest="c2" nameend="c4" align="left"> 2094 <emphasis>Input/output library</emphasis> 2095 </entry> 2096 </row> 2097 <row> 2098 <entry>30.1</entry> 2099 <entry>General</entry> 2100 <entry>Y</entry> 2101 <entry/> 2102 </row> 2103 <row> 2104 <entry>30.2</entry> 2105 <entry>Iostreams requirements</entry> 2106 <entry>Y</entry> 2107 <entry/> 2108 </row> 2109 <row> 2110 <entry>30.2.1</entry> 2111 <entry>Imbue Limitations</entry> 2112 <entry>Y</entry> 2113 <entry/> 2114 </row> 2115 <row> 2116 <entry>30.2.2</entry> 2117 <entry>Positioning Type Limitations</entry> 2118 <entry>Y</entry> 2119 <entry/> 2120 </row> 2121 <row> 2122 <?dbhtml bgcolor="#B0B0B0" ?> 2123 <entry>30.2.3</entry> 2124 <entry>Thread safety</entry> 2125 <entry>Partial</entry> 2126 <entry/> 2127 </row> 2128 <row> 2129 <entry>30.3</entry> 2130 <entry>Forward declarations</entry> 2131 <entry>Y</entry> 2132 <entry/> 2133 </row> 2134 <row> 2135 <entry>30.4</entry> 2136 <entry>Standard iostream objects</entry> 2137 <entry>Y</entry> 2138 <entry/> 2139 </row> 2140 <row> 2141 <entry>30.5</entry> 2142 <entry>Iostreams base classes</entry> 2143 <entry>Y</entry> 2144 <entry/> 2145 </row> 2146 <row> 2147 <entry>30.6</entry> 2148 <entry>Stream buffers</entry> 2149 <entry>Y</entry> 2150 <entry/> 2151 </row> 2152 <row> 2153 <entry>30.7</entry> 2154 <entry>Formatting and manipulators</entry> 2155 <entry>Y</entry> 2156 <entry/> 2157 </row> 2158 <row> 2159 <entry>30.8</entry> 2160 <entry>String-based streams</entry> 2161 <entry>Y</entry> 2162 <entry/> 2163 </row> 2164 <row> 2165 <entry>30.9</entry> 2166 <entry>File-based streams</entry> 2167 <entry>Y</entry> 2168 <entry/> 2169 </row> 2170 <row> 2171 <entry>30.10</entry> 2172 <entry>File systemss</entry> 2173 <entry>Y</entry> 2174 <entry/> 2175 </row> 2176 <row> 2177 <entry>30.11</entry> 2178 <entry>C library files</entry> 2179 <entry>Y</entry> 2180 <entry/> 2181 </row> 2182 <row> 2183 <entry> 2184 <emphasis>31</emphasis> 2185 </entry> 2186 <entry namest="c2" nameend="c4" align="left"> 2187 <emphasis>Regular expressions</emphasis> 2188 </entry> 2189 </row> 2190 <row> 2191 <entry>31.1</entry> 2192 <entry>General</entry> 2193 <entry>Y</entry> 2194 <entry/> 2195 </row> 2196 <row> 2197 <entry>31.2</entry> 2198 <entry>Definitions</entry> 2199 <entry>Y</entry> 2200 <entry/> 2201 </row> 2202 <row> 2203 <entry>31.3</entry> 2204 <entry>Requirements</entry> 2205 <entry>Y</entry> 2206 <entry/> 2207 </row> 2208 <row> 2209 <entry>31.4</entry> 2210 <entry>Header <code><regex></code> synopsis</entry> 2211 <entry>Y</entry> 2212 <entry/> 2213 </row> 2214 <row> 2215 <entry>31.5</entry> 2216 <entry>Namespace <code>std::regex_constants</code></entry> 2217 <entry>Y</entry> 2218 <entry/> 2219 </row> 2220 <row> 2221 <entry>31.6</entry> 2222 <entry>Class <code>regex_error</code></entry> 2223 <entry>Y</entry> 2224 <entry/> 2225 </row> 2226 <row> 2227 <?dbhtml bgcolor="#B0B0B0" ?> 2228 <entry>31.7</entry> 2229 <entry>Class template <code>regex_traits</code></entry> 2230 <entry>Partial</entry> 2231 <entry><code>transform_primary</code> is not correctly implemented</entry> 2232 <entry/> 2233 </row> 2234 <row> 2235 <entry>31.8</entry> 2236 <entry>Class template <code>basic_regex</code></entry> 2237 <entry>Y</entry> 2238 <entry/> 2239 </row> 2240 <row> 2241 <entry>31.9</entry> 2242 <entry>Class template <code>sub_match</code></entry> 2243 <entry>Y</entry> 2244 <entry/> 2245 </row> 2246 <row> 2247 <entry>31.10</entry> 2248 <entry>Class template <code>match_results</code></entry> 2249 <entry>Y</entry> 2250 <entry/> 2251 </row> 2252 <row> 2253 <entry>31.11</entry> 2254 <entry>Regular expression algorithms</entry> 2255 <entry>Y</entry> 2256 <entry/> 2257 </row> 2258 <row> 2259 <entry>31.12</entry> 2260 <entry>Regular expression Iterators</entry> 2261 <entry>Y</entry> 2262 <entry/> 2263 </row> 2264 <row> 2265 <entry>31.13</entry> 2266 <entry>Modified ECMAScript regular expression grammar</entry> 2267 <entry>Y</entry> 2268 <entry/> 2269 </row> 2270 <row> 2271 <entry> 2272 <emphasis>32</emphasis> 2273 </entry> 2274 <entry namest="c2" nameend="c4" align="left"> 2275 <emphasis>Atomic operations</emphasis> 2276 </entry> 2277 </row> 2278 <row> 2279 <entry>32.1</entry> 2280 <entry>General</entry> 2281 <entry>Y</entry> 2282 <entry/> 2283 </row> 2284 <row> 2285 <entry>32.2</entry> 2286 <entry>Header <code><atomic></code> synopsis</entry> 2287 <entry>Y</entry> 2288 <entry/> 2289 </row> 2290 <row> 2291 <entry>32.3</entry> 2292 <entry>Type aliases</entry> 2293 <entry>Y</entry> 2294 <entry/> 2295 </row> 2296 <row> 2297 <entry>32.4</entry> 2298 <entry>Order and consistency</entry> 2299 <entry>Y</entry> 2300 <entry/> 2301 </row> 2302 <row> 2303 <entry>32.5</entry> 2304 <entry>Lock-free property</entry> 2305 <entry>Y</entry> 2306 <entry/> 2307 </row> 2308 <row> 2309 <entry>32.6</entry> 2310 <entry>Class template <code><atomic></code></entry> 2311 <entry>Y</entry> 2312 <entry/> 2313 </row> 2314 <row> 2315 <entry>32.7</entry> 2316 <entry>Non-member functions</entry> 2317 <entry>Y</entry> 2318 <entry/> 2319 </row> 2320 <row> 2321 <entry>32.8</entry> 2322 <entry>Flag Type and operations</entry> 2323 <entry>Y</entry> 2324 <entry/> 2325 </row> 2326 <row> 2327 <entry>32.9</entry> 2328 <entry>Fences</entry> 2329 <entry>Y</entry> 2330 <entry/> 2331 </row> 2332 <row> 2333 <entry> 2334 <emphasis>33</emphasis> 2335 </entry> 2336 <entry namest="c2" nameend="c4" align="left"> 2337 <emphasis>Thread support</emphasis> 2338 </entry> 2339 </row> 2340 <row> 2341 <entry>33.1</entry> 2342 <entry>General</entry> 2343 <entry>Y</entry> 2344 <entry/> 2345 </row> 2346 <row> 2347 <entry>33.2</entry> 2348 <entry>Requirements</entry> 2349 <entry>Y</entry> 2350 <entry/> 2351 </row> 2352 <row> 2353 <entry>33.3</entry> 2354 <entry>Threads</entry> 2355 <entry/> 2356 <entry/> 2357 </row> 2358 <row> 2359 <entry>33.3.1</entry> 2360 <entry>Header <code>thread</code> synopsis</entry> 2361 <entry/> 2362 <entry/> 2363 </row> 2364 <row> 2365 <entry>33.3.2</entry> 2366 <entry>Class <code>thread</code></entry> 2367 <entry>Y</entry> 2368 <entry/> 2369 </row> 2370 <row> 2371 <?dbhtml bgcolor="#B0B0B0" ?> 2372 <entry>33.3.2.1</entry> 2373 <entry>Class <code>thread</code></entry> 2374 <entry>Partial</entry> 2375 <entry><code>thread::id</code> comparisons not well-defined</entry> 2376 </row> 2377 <row> 2378 <entry>33.3.3</entry> 2379 <entry>Namespace <code>this_thread</code></entry> 2380 <entry>Y</entry> 2381 <entry/> 2382 </row> 2383 <row> 2384 <entry>33.4</entry> 2385 <entry>Mutual exclusion</entry> 2386 <entry/> 2387 <entry/> 2388 </row> 2389 <row> 2390 <entry>33.4.3</entry> 2391 <entry>Mutex requirements</entry> 2392 <entry/> 2393 <entry/> 2394 </row> 2395 <row> 2396 <entry>33.4.3.1</entry> 2397 <entry>In general</entry> 2398 <entry/> 2399 <entry/> 2400 </row> 2401 <row> 2402 <entry>33.4.3.2</entry> 2403 <entry>Mutex types</entry> 2404 <entry/> 2405 <entry/> 2406 </row> 2407 <row> 2408 <entry>33.4.3.2.1</entry> 2409 <entry>Class <code>mutex</code></entry> 2410 <entry>Y</entry> 2411 <entry/> 2412 </row> 2413 <row> 2414 <entry>33.4.3.2.2</entry> 2415 <entry>Class <code>recursive_mutex</code></entry> 2416 <entry>Y</entry> 2417 <entry/> 2418 </row> 2419 <row> 2420 <entry>33.4.3.3</entry> 2421 <entry>Timed mutex types</entry> 2422 <entry/> 2423 <entry/> 2424 </row> 2425 <row> 2426 <entry>33.4.3.3.1</entry> 2427 <entry>Class <code>timed_mutex</code></entry> 2428 <entry>Y</entry> 2429 <entry/> 2430 </row> 2431 <row> 2432 <entry>33.4.3.3.2</entry> 2433 <entry>Class <code>recursive_timed_mutex</code></entry> 2434 <entry>Y</entry> 2435 <entry/> 2436 </row> 2437 <row> 2438 <entry>33.4.3.4</entry> 2439 <entry>Shared mutex types</entry> 2440 <entry/> 2441 <entry/> 2442 </row> 2443 <row> 2444 <entry>33.4.3.4.1</entry> 2445 <entry>Class <code>shared_mutex</code></entry> 2446 <entry>Y</entry> 2447 <entry/> 2448 </row> 2449 <row> 2450 <entry>33.4.3.5</entry> 2451 <entry>Shared timed mutex types</entry> 2452 <entry/> 2453 <entry/> 2454 </row> 2455 <row> 2456 <entry>33.4.3.5.1</entry> 2457 <entry>Class <code>shared_timed_mutex</code></entry> 2458 <entry>Y</entry> 2459 <entry/> 2460 </row> 2461 <row> 2462 <entry>33.4.4</entry> 2463 <entry>Locks</entry> 2464 <entry/> 2465 <entry/> 2466 </row> 2467 <row> 2468 <entry>33.4.4.1</entry> 2469 <entry>Class template <code>lock_guard</code></entry> 2470 <entry>Y</entry> 2471 <entry/> 2472 </row> 2473 <row> 2474 <entry>33.4.4.2</entry> 2475 <entry>Class template <code>scoped_guard</code></entry> 2476 <entry>Y</entry> 2477 <entry/> 2478 </row> 2479 <row> 2480 <entry>33.4.4.3</entry> 2481 <entry>Class template <code>unique_lock</code></entry> 2482 <entry>Y</entry> 2483 <entry/> 2484 </row> 2485 <row> 2486 <entry>33.4.4.4</entry> 2487 <entry>Class template <code>shared_lock</code></entry> 2488 <entry>Y</entry> 2489 <entry/> 2490 </row> 2491 <row> 2492 <entry>33.4.5</entry> 2493 <entry>Generic locking algorithms</entry> 2494 <entry>Y</entry> 2495 <entry/> 2496 </row> 2497 <row> 2498 <entry>33.4.6</entry> 2499 <entry>Call once</entry> 2500 <entry/> 2501 <entry/> 2502 </row> 2503 <row> 2504 <entry>33.4.6.1</entry> 2505 <entry>Struct <code>once_flag</code></entry> 2506 <entry>Y</entry> 2507 <entry/> 2508 </row> 2509 <row> 2510 <?dbhtml bgcolor="#B0B0B0" ?> 2511 <entry>33.4.6.2</entry> 2512 <entry>Function <code>call_once</code></entry> 2513 <entry>Broken</entry> 2514 <entry>See <link xmlns:xlink="http://www.w3.org/1999/xlink" 2515 xlink:href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66146">PR 2516 66146</link> 2517 </entry> 2518 </row> 2519 <row> 2520 <entry>33.5</entry> 2521 <entry>Condition variables</entry> 2522 <entry>Y</entry> 2523 <entry/> 2524 </row> 2525 <row> 2526 <entry>33.5.1</entry> 2527 <entry>Class <code>condition_variable</code></entry> 2528 <entry>Y</entry> 2529 <entry/> 2530 </row> 2531 <row> 2532 <entry>33.5.2</entry> 2533 <entry>Class <code>condition_variable_any</code></entry> 2534 <entry>Y</entry> 2535 <entry/> 2536 </row> 2537 <row> 2538 <entry>33.6</entry> 2539 <entry>Futures</entry> 2540 <entry/> 2541 <entry/> 2542 </row> 2543 <row> 2544 <entry>33.6.1</entry> 2545 <entry>Overview</entry> 2546 <entry/> 2547 <entry/> 2548 </row> 2549 <row> 2550 <entry>33.6.2</entry> 2551 <entry>Header <code><future></code></entry> 2552 <entry/> 2553 <entry/> 2554 </row> 2555 <row> 2556 <entry>33.6.3</entry> 2557 <entry>Error handling</entry> 2558 <entry>Y</entry> 2559 <entry/> 2560 </row> 2561 <row> 2562 <entry>33.6.4</entry> 2563 <entry>Class <code>future_error</code></entry> 2564 <entry>Y</entry> 2565 <entry/> 2566 </row> 2567 <row> 2568 <entry>33.6.5</entry> 2569 <entry>Shared state</entry> 2570 <entry>Y</entry> 2571 <entry/> 2572 </row> 2573 <row> 2574 <entry>33.6.6</entry> 2575 <entry>Class template <code>promise</code></entry> 2576 <entry>Y</entry> 2577 <entry/> 2578 </row> 2579 <row> 2580 <entry>33.6.7</entry> 2581 <entry>Class template <code>future</code></entry> 2582 <entry>Y</entry> 2583 <entry/> 2584 </row> 2585 <row> 2586 <entry>33.6.8</entry> 2587 <entry>Class template <code>shared_future</code></entry> 2588 <entry>Y</entry> 2589 <entry/> 2590 </row> 2591 <row> 2592 <entry>33.6.9</entry> 2593 <entry>Function template <code>async</code></entry> 2594 <entry>Y</entry> 2595 <entry/> 2596 </row> 2597 <row> 2598 <entry>33.6.10</entry> 2599 <entry>Class template <code>packaged_task</code></entry> 2600 <entry>Y</entry> 2601 <entry/> 2602 </row> 2603 <row> 2604 <entry> 2605 <emphasis>Appendix D</emphasis> 2606 </entry> 2607 <entry namest="c2" nameend="c4" align="left"> 2608 <emphasis>Compatibility features</emphasis> 2609 </entry> 2610 </row> 2611 <row> 2612 <entry>D.4</entry> 2613 <entry>C++ standard library headers</entry> 2614 <entry>Y</entry> 2615 <entry/> 2616 </row> 2617 <row> 2618 <entry>D.4.1</entry> 2619 <entry>Header <code><ccomplex></code> synopsis</entry> 2620 <entry>Y</entry> 2621 <entry/> 2622 </row> 2623 <row> 2624 <entry>D.4.1</entry> 2625 <entry>Header <code><cstdalign></code> synopsis</entry> 2626 <entry>Y</entry> 2627 <entry/> 2628 </row> 2629 <row> 2630 <entry>D.4.1</entry> 2631 <entry>Header <code><cstdbool></code> synopsis</entry> 2632 <entry>Y</entry> 2633 <entry/> 2634 </row> 2635 <row> 2636 <entry>D.4.1</entry> 2637 <entry>Header <code><ctgmath></code> synopsis</entry> 2638 <entry>Y</entry> 2639 <entry/> 2640 </row> 2641 <row> 2642 <entry>D.5</entry> 2643 <entry>C standard library headers</entry> 2644 <entry>Y</entry> 2645 <entry/> 2646 </row> 2647 <row> 2648 <entry>D.6</entry> 2649 <entry><code>char*</code> streams</entry> 2650 <entry>Y</entry> 2651 <entry/> 2652 </row> 2653 <row> 2654 <entry>D.7</entry> 2655 <entry><code>uncaught_exception</code></entry> 2656 <entry>Y</entry> 2657 <entry/> 2658 </row> 2659 <row> 2660 <entry>D.8</entry> 2661 <entry>Old adaptable function bindings</entry> 2662 <entry>Y</entry> 2663 <entry/> 2664 </row> 2665 <row> 2666 <entry>D.9</entry> 2667 <entry>The default allocator</entry> 2668 <entry>Y</entry> 2669 <entry/> 2670 </row> 2671 <row> 2672 <entry>D.10</entry> 2673 <entry>Raw storage iterator</entry> 2674 <entry>Y</entry> 2675 <entry/> 2676 </row> 2677 <row> 2678 <entry>D.11</entry> 2679 <entry>Temporary buffers</entry> 2680 <entry>Y</entry> 2681 <entry/> 2682 </row> 2683 <row> 2684 <entry>D.12</entry> 2685 <entry>Deprecated type traits</entry> 2686 <entry>Y</entry> 2687 <entry/> 2688 </row> 2689 <row> 2690 <entry>D.13</entry> 2691 <entry>Deprecated iterator primitives</entry> 2692 <entry>Y</entry> 2693 <entry/> 2694 </row> 2695 <row> 2696 <entry>D.14</entry> 2697 <entry>Deprecated <code>shared_ptr</code> observers</entry> 2698 <entry>Y</entry> 2699 <entry/> 2700 </row> 2701 <row> 2702 <entry>D.15</entry> 2703 <entry>Deprecated standard code conversion facets</entry> 2704 <entry>Y</entry> 2705 <entry/> 2706 </row> 2707 <row> 2708 <entry>D.16</entry> 2709 <entry>Deprecated convenience conversion interfaces</entry> 2710 <entry>Y</entry> 2711 <entry/> 2712 </row> 2713 2714 </tbody> 2715</tgroup> 2716</table> 2717 2718<table frame="all" xml:id="table.cxx17_ts_status"> 2719<title>C++ Technical Specifications Implementation Status</title> 2720 2721<tgroup cols="4" align="left" colsep="0" rowsep="1"> 2722<colspec colname="c1"/> 2723<colspec colname="c2"/> 2724<colspec colname="c3"/> 2725<colspec colname="c4"/> 2726 <thead> 2727 <row> 2728 <entry>Paper</entry> 2729 <entry>Title</entry> 2730 <entry>Status</entry> 2731 <entry>Comments</entry> 2732 </row> 2733 </thead> 2734 2735 <tbody> 2736 2737 <row> 2738 <entry> 2739 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4076.html"> 2740 N4076 2741 </link> 2742 </entry> 2743 <entry>A generalized callable negator</entry> 2744 <entry>Y</entry> 2745 <entry>Library Fundamentals 2 TS</entry> 2746 </row> 2747 2748 <row> 2749 <entry> 2750 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n4273.htm"> 2751 N4273 2752 </link> 2753 </entry> 2754 <entry>Uniform Container Erasure</entry> 2755 <entry>Y</entry> 2756 <entry>Library Fundamentals 2 TS</entry> 2757 </row> 2758 2759 <row> 2760 <entry> 2761 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4061.pdf"> 2762 N4061 2763 </link> 2764 </entry> 2765 <entry>Greatest Common Divisor and Least Common Multiple</entry> 2766 <entry>Y</entry> 2767 <entry>Library Fundamentals 2 TS</entry> 2768 </row> 2769 2770 <row> 2771 <entry> 2772 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4066.htm"> 2773 N4066 2774 </link> 2775 </entry> 2776 <entry>Delimited iterators</entry> 2777 <entry>Y</entry> 2778 <entry>Library Fundamentals 2 TS</entry> 2779 </row> 2780 2781 <row> 2782 <entry> 2783 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4282.pdf"> 2784 N4282 2785 </link> 2786 </entry> 2787 <entry>The World's Dumbest Smart Pointer</entry> 2788 <entry>Y</entry> 2789 <entry>Library Fundamentals 2 TS</entry> 2790 </row> 2791 2792 2793 <row> 2794 <entry> 2795 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4388.html"> 2796 N4388 2797 </link> 2798 </entry> 2799 <entry>Const-Propagating Wrapper</entry> 2800 <entry>Y</entry> 2801 <entry>Library Fundamentals 2 TS</entry> 2802 </row> 2803 2804 <row> 2805 <entry> 2806 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4391.html"> 2807 N4391 2808 </link> 2809 </entry> 2810 <entry> <code>make_array</code>, revision 4 </entry> 2811 <entry>Y</entry> 2812 <entry>Library Fundamentals 2 TS</entry> 2813 </row> 2814 2815 <row> 2816 <entry> 2817 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf"> 2818 N4502 2819 </link> 2820 </entry> 2821 <entry> Support for the C++ Detection Idiom, V2 </entry> 2822 <entry>Y</entry> 2823 <entry>Library Fundamentals 2 TS</entry> 2824 </row> 2825 2826 <row> 2827 <entry> 2828 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4519.pdf"> 2829 N4519 2830 </link> 2831 </entry> 2832 <entry> Source-Code Information Capture </entry> 2833 <entry>Y</entry> 2834 <entry>Library Fundamentals 2 TS</entry> 2835 </row> 2836 2837 <row> 2838 <?dbhtml bgcolor="#C8B0B0" ?> 2839 <entry> 2840 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4521.html"> 2841 N4521 2842 </link> 2843 </entry> 2844 <entry> Merge Fundamentals V1 into V2 </entry> 2845 <entry> 2846 N (components from V1 are still in namespace 2847 <code>fundamentals_v1</code>) 2848 </entry> 2849 <entry>Library Fundamentals 2 TS</entry> 2850 </row> 2851 2852 <row> 2853 <entry> 2854 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0013r1.html"> 2855 P0013R1 2856 </link> 2857 </entry> 2858 <entry>Logical Operator Type Traits (revision 1)</entry> 2859 <entry>Y</entry> 2860 <entry>Library Fundamentals 2 TS</entry> 2861 </row> 2862 2863 <row> 2864 <entry> 2865 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4531.html"> 2866 N4531 2867 </link> 2868 </entry> 2869 <entry>std::rand replacement, revision 3</entry> 2870 <entry>Y</entry> 2871 <entry>Library Fundamentals 2 TS</entry> 2872 </row> 2873 2874 </tbody> 2875</tgroup> 2876</table> 2877 2878<section xml:id="iso.2017.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info> 2879 2880 <para>For behaviour which is also specified by previous standards, 2881 see <link linkend="iso.1998.specific">C++ 1998/2003 Implementation 2882 Specific Behavior</link> and <link linkend="iso.2011.specific">C++ 2883 2011 Implementation Specific Behavior</link>. This section only 2884 documents behaviour which is new in the 2017 standard. 2885 </para> 2886 2887 <para> 2888 <emphasis>20.5.1.2 [headers]</emphasis> 2889 Whether names from Annex K are declared by C++ headers depends on 2890 whether the underlying C library supports Annex K and declares the 2891 names. For the GNU C library, there is no Annex K support and so 2892 none of its names are declared by C++ headers. 2893 </para> 2894 2895 <para> 2896 <emphasis>23.6.5 [optional.bad_optional_access]</emphasis> 2897 <code>what()</code> returns <literal>"bad optional access"</literal>. 2898 </para> 2899 2900 <para> 2901 <emphasis>23.7.3 [variant.variant]</emphasis> 2902 <classname>variant</classname> supports over-aligned types. 2903 </para> 2904 2905 <para> 2906 <emphasis>23.7.10 [variant.bad.access]</emphasis> 2907 <code>what()</code> returns one of the strings 2908 <literal>"std::get: variant is valueless"</literal>, 2909 <literal>"std::get: wrong index for variant"</literal>, 2910 <literal>"std::visit: variant is valueless"</literal>, 2911 or <literal>"std::visit<R>: variant is valueless"</literal>. 2912 </para> 2913 2914 <para> 2915 <emphasis>23.12.5.2 [memory.resource.pool.options]</emphasis> 2916 Let S equal <code>numeric_limits<size_t>::digits</code>. 2917 The limit for maximum number of blocks in a chunk is given by 2918 <inlineequation><mathphrase>2<superscript>N</superscript>-1</mathphrase></inlineequation>, 2919 where N is <inlineequation><mathphrase>min(19, 3 + S/2)</mathphrase></inlineequation>. 2920 The largest allocation size that will be allocated from a pool is 2921 <inlineequation><mathphrase>2<superscript>22</superscript></mathphrase></inlineequation> 2922 when <inlineequation><mathphrase>S > 20</mathphrase></inlineequation>, 2923 otherwise 3072 when <inlineequation><mathphrase>S > 16</mathphrase></inlineequation>, 2924 otherwise 768. 2925 </para> 2926 2927 <para> 2928 <emphasis>23.12.6.1 [memory.resource.monotonic.buffer.ctor]</emphasis> 2929 The default <code>next_buffer_size</code> is <code>128 * sizeof(void*)</code>. 2930 The default growth factor is <code>1.5</code>. 2931 </para> 2932 2933 <para> 2934 <emphasis>23.15.4.3 [meta.unary.prop]</emphasis> 2935 The predicate condition for 2936 <code>has_unique_object_representations</code> is true for all scalar 2937 types except floating point types. 2938 </para> 2939 2940 <para> 2941 <emphasis>23.19.3 [execpol.type], 2942 28.4.3 [algorithms.parallel.exec]</emphasis> 2943 There are no implementation-defined execution policies. 2944 </para> 2945 2946 <para> 2947 <emphasis>24.4.2 [string.view.template]</emphasis> 2948 <classname>basic_string_view<C, T>::iterator</classname> is 2949 <code>C*</code> and 2950 <classname>basic_string_view<C, T>::const_iterator</classname> is 2951 <code>const C*</code>. 2952 </para> 2953 2954 2955 <para> 2956 <emphasis>28.4.3 [algorithms.parallel.exec]</emphasis> 2957 Threads of execution created by <classname>std::thread</classname> 2958 provide concurrent forward progress guarantees, so threads of execution 2959 implicitly created by the library will provide parallel forward 2960 progress guarantees. 2961 </para> 2962 2963 <para> 2964 <emphasis>29.4.1 [cfenv.syn]</emphasis> 2965 The effects of the <filename><cfenv></filename> functions 2966 depends on whether the <code>FENV_ACCESS</code> pragma is supported, 2967 and on the C library that provides the header. 2968 </para> 2969 2970 <para> 2971 <emphasis>29.6.9 [c.math.rand]</emphasis> 2972 Whether the <function>rand</function> function may introduce data 2973 races depends on the target C library that provides the function. 2974 </para> 2975 2976 <para> 2977 <emphasis>29.9.5 [sf.cmath]</emphasis> 2978 The effect of calling the mathematical special functions with large 2979 inputs should be documented here. 2980 </para> 2981 2982 <para> 2983 <emphasis>30.10.2.1 [fs.conform.9945]</emphasis> 2984 The behavior of the filesystem library implementation will depend on 2985 the target operating system. Some features will not be supported 2986 on some targets. Symbolic links and file permissions 2987 are not supported on Windows. 2988 </para> 2989 2990 <para> 2991 <emphasis>30.10.5 [fs.filesystem.syn]</emphasis> 2992 The clock used for file times is an unspecified type 2993 with a signed 64-bit representation, capable of representing 2994 timestamps with nanosecond resolution. The clock's epoch is 2995 unspecified, but is not the same as the system clock's epoch. 2996 </para> 2997 2998 <para> 2999 <emphasis>30.10.7.1 [fs.path.generic]</emphasis> 3000 dot-dot in the root-directory refers to the root-directory itself. 3001 On Windows, a drive specifier such as <code>"C:"</code> or 3002 <code>"z:"</code> is treated as a root-name. On Cygwin, a path 3003 that begins with two successive directory separators is a 3004 root-name. Otherwise (for POSIX-like systems other than Cygwin), 3005 the implementation-defined root-name is an unspecified string 3006 which does not appear in any pathnames. 3007 </para> 3008 3009 <para> 3010 <emphasis>30.10.10.1 [fs.enum.path.format]</emphasis> 3011 The character sequence is always interpreted in the native pathname 3012 format. 3013 </para> 3014 3015 <para> 3016 <emphasis>30.10.15.4 [fs.op.file_size]</emphasis> 3017 If <code>!is_regular_file(p)</code>, an error is reported. 3018 </para> 3019 3020 <para> 3021 <emphasis>30.10.15.32 [fs.op.rename]</emphasis> 3022 On Windows, <code>filesystem::rename</code> 3023 is implemented by calling <code>MoveFileExW</code> and so 3024 does not meet the requirements of POSIX <code>rename</code> 3025 when one or both of the paths resolves to an existing directory. 3026 Specifically, it is not possible to rename a directory to replace another 3027 directory (POSIX requires that to work if the directory being 3028 replaced is empty). 3029 </para> 3030 3031</section> 3032 3033</section> 3034