12021-08-23 Jonathan Wakely <jwakely@redhat.com> 2 3 Backported from master: 4 2021-08-23 Jonathan Wakely <jwakely@redhat.com> 5 6 * include/std/ranges (basic_istream_view): Add default template 7 argument. 8 * testsuite/std/ranges/istream_view.cc: Check it. 9 102021-08-19 Jonathan Wakely <jwakely@redhat.com> 11 12 Backported from master: 13 2021-08-19 Jonathan Wakely <jwakely@redhat.com> 14 15 PR libstdc++/100139 16 * doc/xml/manual/status_cxx2020.xml: Add P1739R4 to status table. 17 * doc/html/manual/status.html: Regenerate. 18 192021-08-17 Thomas Schwinge <thomas@codesourcery.com> 20 21 Backported from master: 22 2021-08-17 Thomas Schwinge <thomas@codesourcery.com> 23 24 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose, 25 continued. 26 272021-08-11 Jonathan Wakely <jwakely@redhat.com> 28 29 Backported from master: 30 2021-08-11 Jonathan Wakely <jwakely@redhat.com> 31 32 PR libstdc++/101866 33 * testsuite/experimental/random/randint.cc: Loop and retry if 34 reseed() produces the same sequence. 35 362021-08-11 Jonathan Wakely <jwakely@redhat.com> 37 38 Backported from master: 39 2021-07-20 Jonathan Wakely <jwakely@redhat.com> 40 41 PR libstdc++/101510 42 * src/c++17/fs_ops.cc (fs::create_directories): Use status 43 instead of symlink_status. 44 * src/filesystem/ops.cc (fs::create_directories): Likewise. 45 * testsuite/27_io/filesystem/operations/create_directories.cc: 46 Check symlink to existing directory. 47 * testsuite/27_io/filesystem/operations/create_directory.cc: Do 48 not test with symlinks on Windows. 49 * testsuite/experimental/filesystem/operations/create_directories.cc: 50 Check symlink to existing directory. 51 * testsuite/experimental/filesystem/operations/create_directory.cc: 52 Do not test with symlinks on Windows. 53 542021-08-11 Jonathan Wakely <jwakely@redhat.com> 55 56 Backported from master: 57 2021-07-20 Jonathan Wakely <jwakely@redhat.com> 58 59 PR libstdc++/101510 60 * src/c++17/fs_ops.cc (create_dir): Adjust whitespace. 61 * testsuite/27_io/filesystem/operations/create_directory.cc: 62 Test creating directory with name of existing symlink to 63 directory. 64 * testsuite/experimental/filesystem/operations/create_directory.cc: 65 Likewise. 66 672021-08-11 Jonathan Wakely <jwakely@redhat.com> 68 69 Backported from master: 70 2021-06-14 Jonathan Wakely <jwakely@redhat.com> 71 72 PR libstdc++/101056 73 * libsupc++/compare (compare_partial_order_fallback): Add 74 constraint using reversed parameter order, as per LWG 3465. 75 * testsuite/18_support/comparisons/algorithms/fallback.cc: 76 Adjust expected result. 77 782021-08-11 Jonathan Wakely <jwakely@redhat.com> 79 80 Backported from master: 81 2021-06-14 Jonathan Wakely <jwakely@redhat.com> 82 83 * libsupc++/compare (__decayed_same_as): New helper concept. 84 (strong_order, weak_order, partial_order): Constrain with new 85 concept instead of using static_assert. 86 (compare_strong_order_fallback, compare_weak_order_fallback) 87 (compare_partial_order_fallback): Likewise. Do not deduce return 88 types. Remove redundant if-constexpr checks. 89 * testsuite/18_support/comparisons/algorithms/fallback.cc: New test. 90 912021-08-10 Jonathan Wakely <jwakely@redhat.com> 92 93 Backported from master: 94 2021-06-14 Jonathan Wakely <jwakely@redhat.com> 95 96 PR libstdc++/100894 97 * include/std/type_traits (__common_ref_impl<X&, Y&>): Only 98 use the type if it's a reference. 99 * testsuite/20_util/common_reference/100894.cc: New test. 100 1012021-07-22 Jonathan Wakely <jwakely@redhat.com> 102 103 Backported from master: 104 2021-04-15 Jonathan Wakely <jwakely@redhat.com> 105 106 PR libstdc++/96657 107 * libsupc++/Makefile.am: Add atomicity.cc here. 108 * src/c++98/Makefile.am: Remove it from here. 109 * libsupc++/Makefile.in: Regenerate. 110 * src/c++98/Makefile.in: Regenerate. 111 * testsuite/18_support/exception_ptr/96657.cc: New test. 112 1132021-07-22 Jonathan Wakely <jwakely@redhat.com> 114 115 Backported from master: 116 2021-06-07 Jonathan Wakely <jwakely@redhat.com> 117 118 PR libstdc++/98842 119 * include/std/optional (operator<=>(const optional<T>& const U&)): 120 Add missing constraint and add workaround for template 121 recursion. 122 * testsuite/20_util/optional/relops/three_way.cc: Check that 123 type without equality comparison cannot be compared when wrapped 124 in std::optional. 125 1262021-07-14 Jonathan Wakely <jwakely@redhat.com> 127 128 Backported from master: 129 2021-07-13 Jonathan Wakely <jwakely@redhat.com> 130 131 PR c++/101361 132 * include/std/string_view (ends_with): Use traits_type::compare 133 directly. 134 1352021-07-14 Jonathan Wakely <jwakely@redhat.com> 136 137 Backported from master: 138 2021-07-12 Jonathan Wakely <jwakely@redhat.com> 139 140 PR libstdc++/101411 141 * include/std/span (as_writable_bytes): Add requires-clause. 142 * testsuite/23_containers/span/101411.cc: New test. 143 1442021-07-06 Avi Kivity <avi@scylladb.com> 145 146 Backported from master: 147 2021-06-07 Avi Kivity <avi@scylladb.com> 148 149 PR libstdc++/100900 150 * include/std/ranges (elements_view::__iter_cat::_S_iter_cat): 151 Add missing typename. 152 1532021-06-18 Jonathan Wakely <jwakely@redhat.com> 154 155 Backported from master: 156 2021-06-18 Jonathan Wakely <jwakely@redhat.com> 157 158 PR libstdc++/95833 159 * include/std/numeric (reduce(Iter, Iter, T, BinaryOp)): Replace 160 incorrect static_assert with ones matching the 'Mandates' 161 conditions in the standard. 162 * testsuite/26_numerics/reduce/95833.cc: New test. 163 1642021-06-18 Jonathan Wakely <jwakely@redhat.com> 165 166 * include/std/variant (__same_types, __check_visitor_results): 167 Remove. 168 1692021-06-18 Jonathan Wakely <jwakely@redhat.com> 170 171 Backported from master: 172 2021-05-04 Jonathan Wakely <jwakely@redhat.com> 173 174 * include/std/future (promise::set_value): Check for existence 175 of shared state before dereferncing it. 176 (promise::set_exception, promise::set_value_at_thread_exit) 177 (promise::set_exception_at_thread_exit): Likewise. 178 (promise<R&>::set_value, promise<R&>::set_exception) 179 (promise<R&>::set_value_at_thread_exit) 180 (promise<R&>::set_exception_at_thread_exit): Likewise. 181 (promise<void>::set_value, promise<void>::set_exception) 182 (promise<void>::set_value_at_thread_exit) 183 (promise<void>::set_exception_at_thread_exit): Likewise. 184 * testsuite/30_threads/promise/members/at_thread_exit2.cc: 185 Remove unused variable. 186 1872021-06-18 Jonathan Wakely <jwakely@redhat.com> 188 189 Backported from master: 190 2021-05-04 Jonathan Wakely <jwakely@redhat.com> 191 192 * include/bits/basic_string.h (basic_string(const CharT*, const A&)): 193 Do not do arithmetic on null pointer. 194 1952021-06-18 Jonathan Wakely <jwakely@redhat.com> 196 197 Backported from master: 198 2021-05-04 Jonathan Wakely <jwakely@redhat.com> 199 200 * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp 201 (find_key_pointer(key_const_reference, false_type)) 202 (find_key_pointer(key_const_reference, true_type)): Do not 203 dereference null pointer. 204 2052021-06-18 Jonathan Wakely <jwakely@redhat.com> 206 207 Backported from master: 208 2021-05-04 Jonathan Wakely <jwakely@redhat.com> 209 210 * testsuite/20_util/from_chars/3.cc: Use unsigned type to avoid 211 overflow. 212 * testsuite/24_iterators/reverse_iterator/2.cc: Do not add 213 non-zero value to null pointer. 214 * testsuite/25_algorithms/copy_backward/move_iterators/69478.cc: 215 Use past-the-end iterator for result. 216 * testsuite/25_algorithms/move_backward/69478.cc: Likewise. 217 * testsuite/25_algorithms/move_backward/93872.cc: Likewise. 218 2192021-06-18 Jonathan Wakely <jwakely@redhat.com> 220 221 Backported from master: 222 2021-05-04 Jonathan Wakely <jwakely@redhat.com> 223 224 PR libstdc++/100384 225 * include/std/variant (__get_t): New alias template yielding the 226 return type of std::get<N> on a variant. 227 (__visit_result_t): New alias template yielding the result of 228 std::visit. 229 (__same_types): Move into namespace __detail::__variant. 230 (__check_visitor_results): Likewise. Use __invoke_result_t and 231 __get_t. 232 (__check_visitor_result): Remove. 233 (visit): Use __visit_result_t for return type. 234 * testsuite/20_util/variant/100384.cc: New test. 235 2362021-06-18 Jonathan Wakely <jwakely@redhat.com> 237 238 Backported from master: 239 2021-04-22 Jonathan Wakely <jwakely@redhat.com> 240 241 PR libstdc++/99006 242 * include/bits/shared_ptr.h (allocate_shared): Assert that _Tp 243 is not an array type. 244 * include/bits/shared_ptr_base.h (__allocate_shared): Likewise. 245 * testsuite/20_util/shared_ptr/creation/99006.cc: New test. 246 2472021-06-18 Jonathan Wakely <jwakely@redhat.com> 248 249 Backported from master: 250 2021-05-11 Jonathan Wakely <jwakely@redhat.com> 251 252 * include/bits/allocator.h (allocator<void>) [C++20]: Add 253 missing noexcept to constructor. Restore missing POCMA and 254 is_always_equal_traits. 255 * include/bits/memoryfwd.h (allocator_traits): Declare. 256 * include/ext/malloc_allocator.h (malloc_allocator::allocate): 257 Add nodiscard attribute. Add static assertion for LWG 3307. 258 * include/ext/new_allocator.h (new_allocator::allocate): Add 259 static assertion for LWG 3307. 260 * testsuite/20_util/allocator/void.cc: Check that converting 261 constructor is noexcept. Check for propagation traits and 262 size_type and difference_type. Check that pointer and 263 const_pointer are gone in C++20. 264 2652021-06-18 Jonathan Wakely <jwakely@redhat.com> 266 267 Backported from master: 268 2021-05-10 Jonathan Wakely <jwakely@redhat.com> 269 270 * include/bits/shared_ptr_base.h (__shared_count(unique_ptr&&)): 271 Initialize a non-reference deleter from an rvalue, as per LWG 272 3548. 273 (__shared_ptr::_UniqCompatible): Add missing constraint. 274 * testsuite/20_util/shared_ptr/cons/lwg3548.cc: New test. 275 * testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc: Check 276 constraints. 277 2782021-06-18 Jonathan Wakely <jwakely@redhat.com> 279 280 Backported from master: 281 2021-06-17 Jonathan Wakely <jwakely@redhat.com> 282 283 PR libstdc++/91488 284 * include/bits/basic_string.h (__cpp_lib_constexpr_string): Only 285 define C++20 value when std::is_constant_evaluated is available. 286 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): 287 Likewise. 288 (__constant_string_p, __constant_array_p): Give external 289 linkage. 290 * include/std/version (__cpp_lib_constexpr_char_traits) 291 (__cpp_lib_constexpr_string): Only define C++20 values when 292 is_constant_evaluated is available. 293 2942021-06-14 Jonathan Wakely <jwakely@redhat.com> 295 296 Backported from master: 297 2021-05-10 Jonathan Wakely <jwakely@redhat.com> 298 299 * testsuite/20_util/scoped_allocator/69293_neg.cc: Add dg-error 300 for additional errors in C++20. 301 * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise. 302 * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise. 303 3042021-06-14 Jonathan Wakely <jwakely@redhat.com> 305 306 Backported from master: 307 2021-06-09 Jonathan Wakely <jwakely@redhat.com> 308 309 PR libstdc++/100982 310 * include/std/optional (optional::operator=(const optional<U>&)): 311 Fix value category used in is_assignable check. 312 * testsuite/20_util/optional/assignment/100982.cc: New test. 313 3142021-06-14 Jonathan Wakely <jwakely@redhat.com> 315 316 Backported from master: 317 2021-06-14 Jonathan Wakely <jwakely@redhat.com> 318 319 PR libstdc++/101034 320 * include/std/any (any(in_place_t<T>, initializer_list<U>, A&&...)) 321 (any::emplace<T>(initializer_list<U>, A&&...)): Fix constraint 322 to use lvalue. 323 * testsuite/20_util/any/cons/101034.cc: New test. 324 3252021-06-10 Patrick Palka <ppalka@redhat.com> 326 327 Backported from master: 328 2021-06-03 Patrick Palka <ppalka@redhat.com> 329 330 PR libstdc++/100770 331 * include/bits/ranges_algo.h (__detail::__can_reread_output): 332 Factor out this concept from ... 333 (__unique_copy_fn::operator()): ... here. Use the concept 334 throughout. 335 * testsuite/std/ranges/range.cc: Remove now ill-formed use 336 of range_value_t on an output_range. 337 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): 338 Define value_type, pointer and reference member types to void. 339 3402021-06-10 Patrick Palka <ppalka@redhat.com> 341 342 Backported from master: 343 2021-05-21 Patrick Palka <ppalka@redhat.com> 344 345 PR libstdc++/100690 346 * include/std/ranges (iota_view::_Sentinel::_M_distance_from): 347 Split out this member function from ... 348 (iota_view::_Sentinel::operator-): ... here, for sake of access 349 control. 350 * testsuite/std/ranges/iota/iota_view.cc (test05): New test. 351 3522021-06-10 Patrick Palka <ppalka@redhat.com> 353 354 Backported from master: 355 2021-05-06 Patrick Palka <ppalka@redhat.com> 356 357 * include/std/ranges (filter_view::_Iterator::base): Make the 358 const& overload unconstrained and return a const reference as 359 per LWG 3533. Make unconditionally noexcept. 360 (transform_view::_Iterator::base): Likewise. 361 (elements_view::_Iterator::base): Likewise. 362 3632021-06-10 Patrick Palka <ppalka@redhat.com> 364 365 Backported from master: 366 2021-05-06 Patrick Palka <ppalka@redhat.com> 367 368 * include/bits/stl_iterator.h (move_iterator::base): Make the 369 const& overload unconstrained and return a const reference as 370 per LWG 3391. Make unconditionally noexcept. 371 (counted_iterator::base): Likewise. 372 * testsuite/24_iterators/move_iterator/lwg3391.cc: New test. 373 * testsuite/24_iterators/move_iterator/move_only.cc: Adjust 374 has_member_base concept to decay-copy the result of base(). 375 3762021-06-10 Patrick Palka <ppalka@redhat.com> 377 378 Backported from master: 379 2021-05-18 Patrick Palka <ppalka@redhat.com> 380 381 PR libstdc++/100631 382 * include/std/ranges (elements_view::_Sentinel::operator-): Use 383 _M_distance_from in the other operator- overload too. 384 * testsuite/std/ranges/adaptors/elements.cc (test06): Augment test. 385 3862021-06-10 Patrick Palka <ppalka@redhat.com> 387 388 Backported from master: 389 2021-05-18 Patrick Palka <ppalka@redhat.com> 390 391 PR libstdc++/100631 392 * include/std/ranges (elements_view::_Iterator): Also befriend 393 _Sentinel<!_Const>. 394 (elements_view::_Sentinel::_M_equal): Templatize. 395 (elements_view::_Sentinel::_M_distance_from): Split out from ... 396 (elements_view::_Sentinel::operator-): ... here. Depend on 397 _Base2 instead of _Base in the return type. 398 * testsuite/std/ranges/adaptors/elements.cc (test06, test07): 399 New tests. 400 4012021-06-10 Patrick Palka <ppalka@redhat.com> 402 403 Backported from master: 404 2021-05-20 Patrick Palka <ppalka@redhat.com> 405 406 PR libstdc++/100639 407 * include/bits/stl_iterator.h (reverse_iterator::difference_type): 408 In C++20 mode, define in terms of iter_difference_t as per P0896R4. 409 (reverse_iterator::reference): Likewise, but with iter_reference_t. 410 (reverse_iterator::value_type): Likewise, but with iter_value_t. 411 * testsuite/std/ranges/adaptors/reverse.cc (test08): New test. 412 * testsuite/24_iterators/reverse_iterator/100639.cc: New test. 413 4142021-06-03 Jonathan Wakely <jwakely@redhat.com> 415 416 Backported from master: 417 2021-06-01 Jonathan Wakely <jwakely@redhat.com> 418 419 PR libstdc++/100833 420 * include/bits/range_access.h (ranges::advance(iter, n, sentinel)): 421 Fix return value for no-op case. 422 * testsuite/24_iterators/range_operations/advance.cc: Test 423 return values of three-argument overload. 424 4252021-06-03 Jonathan Wakely <jwakely@redhat.com> 426 427 Backported from master: 428 2021-05-26 Jonathan Wakely <jwakely@redhat.com> 429 430 PR libstdc++/100768 431 * include/bits/range_access.h (ranges::advance) 432 (ranges::distance, ranges::next, ranges::prev): Replace 433 function templates with function objects. 434 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: 435 Adjust for changes to function objects. 436 * testsuite/std/ranges/adaptors/elements.cc: Add using 437 declarations for names from namespace ranges. 438 * testsuite/std/ranges/adaptors/transform.cc: Likewise. 439 * testsuite/24_iterators/range_operations/100768.cc: New test. 440 4412021-06-03 Jonathan Wakely <jwakely@redhat.com> 442 443 Backported from master: 444 2021-06-01 Jonathan Wakely <jwakely@redhat.com> 445 446 PR libstdc++/99453 447 * python/Makefile.am: Use archive name for printer hook if no 448 dynamic library name is available. 449 * python/Makefile.in: Regenerate. 450 4512021-06-03 Philippe Blain <levraiphilippeblain@gmail.com> 452 453 Backported from master: 454 2021-04-21 Philippe Blain <levraiphilippeblain@gmail.com> 455 Jonathan Wakely <jwakely@redhat.com> 456 457 PR libstdc++/99453 458 * python/Makefile.am: Install libstdc++*-gdb.py more robustly. 459 * python/Makefile.in: Regenerate. 460 4612021-05-17 Jonathan Wakely <jwakely@redhat.com> 462 463 PR libstdc++/100630 464 * include/bits/fs_path.h (__is_constructible_from): Test 465 construction from a const lvalue, not an rvalue. 466 * include/experimental/bits/fs_path.h (__is_constructible_from): 467 Likewise. 468 * testsuite/27_io/filesystem/path/construct/100630.cc: New test. 469 * testsuite/experimental/filesystem/path/construct/100630.cc: 470 New test. 471 4722021-05-17 Jonathan Wakely <jwakely@redhat.com> 473 474 Backported from master: 475 2021-03-11 Jonathan Wakely <jwakely@redhat.com> 476 477 * python/libstdcxx/v6/printers.py (find_type): Use tag attribute 478 instead of unqualified() method. 479 4802021-05-05 Patrick Palka <ppalka@redhat.com> 481 482 Backported from master: 483 2021-05-05 Patrick Palka <ppalka@redhat.com> 484 485 * include/std/ranges (transform_view::_Iterator::iter_swap): 486 Remove as per LWG 3520. 487 (join_view::_Iterator::iter_swap): Add indirectly_swappable 488 constraint as per LWG 3517. 489 4902021-05-04 Patrick Palka <ppalka@redhat.com> 491 492 Backported from master: 493 2021-04-30 Patrick Palka <ppalka@redhat.com> 494 495 * include/std/ranges (split_view::_InnerIter::operator++): 496 Depend on _Base instead of _Vp directly, as per LWG 3532. 497 4982021-05-04 Patrick Palka <ppalka@redhat.com> 499 500 Backported from master: 501 2021-04-20 Patrick Palka <ppalka@redhat.com> 502 503 PR libstdc++/95983 504 * include/bits/stl_iterator.h (__detail::__move_iter_cat): 505 Define. 506 (move_iterator): Derive from the above in C++20 in order to 507 conditionally define iterator_category as per P2259. 508 (move_iterator::__base_cat): No longer used, so remove. 509 (move_iterator::iterator_category): Remove in C++20. 510 (__detail::__common_iter_use_postfix_proxy): Define. 511 (common_iterator::_Proxy): Rename to ... 512 (common_iterator:__arrow_proxy): ... this. 513 (common_iterator::__postfix_proxy): Define as per P2259. 514 (common_iterator::operator->): Adjust. 515 (common_iterator::operator++): Adjust as per P2259. 516 (iterator_traits<common_iterator>::_S_iter_cat): Define. 517 (iterator_traits<common_iterator>::iterator_category): Change as 518 per P2259. 519 (__detail::__counted_iter_value_type): Define. 520 (__detail::__counted_iter_concept): Define. 521 (__detail::__counted_iter_cat): Define. 522 (counted_iterator): Derive from the above three classes in order 523 to conditionally define value_type, iterator_concept and 524 iterator category respectively as per P2259. 525 (counted_iterator::operator->): Define as per P2259. 526 (incrementable_traits<counted_iterator>): Remove as per P2259. 527 (iterator_traits<counted_iterator>): Adjust as per P2259. 528 * include/std/ranges (__detail::__iota_view_iter_cat): Define. 529 (iota_view::_Iterator): Derive from the above in order to 530 conditionally define iterator_category as per P2259. 531 (iota_view::_S_iter_cat): Rename to ... 532 (iota_view::_S_iter_concept): ... this. 533 (iota_view::iterator_concept): Use it to apply LWG 3291 changes. 534 (iota_view::iterator_category): Remove. 535 (__detail::__filter_view_iter_cat): Define. 536 (filter_view::_Iterator): Derive from the above in order to 537 conditionally define iterator_category as per P2259. 538 (filter_view::_Iterator): Move to struct __filter_view_iter_cat. 539 (filter_view::_Iterator::iterator_category): Remove. 540 (transform_view::_Base): Define. 541 (transform_view::__iter_cat): Define. 542 (transform_view::_Iterator): Derive from the above in order to 543 conditionally define iterator_category as per P2259. 544 (transform_view::_Iterator::_Base): Just alias 545 transform_view::_Base. 546 (transform_view::_Iterator::_S_iter_cat): Move to struct 547 transform_view::__iter_cat. 548 (transform_view::_Iterator::iterator_category): Remove. 549 (transform_view::_Sentinel::_Base): Just alias 550 transform_view::_Base. 551 (join_view::_Base): Define. 552 (join_view::_Outer_iter): Define. 553 (join_view::_Inner_iter): Define. 554 (join_view::_S_ref_is_glvalue): Define. 555 (join_view::__iter_cat): Define. 556 (join_view::_Iterator): Derive from it in order to conditionally 557 define iterator_category as per P2259. 558 (join_view::_Iterator::_Base): Just alias join_view::_Base. 559 (join_view::_Iterator::_S_ref_is_glvalue): Just alias 560 join_view::_S_ref_is_glvalue. 561 (join_view::_Iterator::_S_iter_cat): Move to struct 562 transform_view::__iter_cat. 563 (join_view::_Iterator::_Outer_iter): Just alias 564 join_view::_Outer_iter. 565 (join_view::_Iterator::_Inner_iter): Just alias 566 join_view::_Inner_iter. 567 (join_view::_Iterator::iterator_category): Remove. 568 (join_view::_Sentinel::_Base): Just alias join_view::_Base. 569 (__detail::__split_view_outer_iter_cat): Define. 570 (__detail::__split_view_inner_iter_cat): Define. 571 (split_view::_Base): Define. 572 (split_view::_Outer_iter): Derive from __split_view_outer_iter_cat 573 in order to conditionally define iterator_category as per P2259. 574 (split_view::_Outer_iter::iterator_category): Remove. 575 (split_view::_Inner_iter): Derive from __split_view_inner_iter_cat 576 in order to conditionally define iterator_category as per P2259. 577 (split_view::_Inner_iter::_S_iter_cat): Move to 578 __split_view_inner_iter_cat. 579 (split_view::_Inner_iter::iterator_category): Remove. 580 (elements_view::_Base): Define. 581 (elements_view::__iter_cat): Define. 582 (elements_view::_Iterator): Derive from the above in order to 583 conditionall define iterator_category as per P2259. 584 (elements_view::_Iterator::_Base): Just alias 585 elements_view::_Base. 586 (elements_view::_Iterator::_S_iter_concept) 587 (elements_view::_Iterator::iterator_concept): Define as per 588 P2259. 589 (elements_view::_Iterator::iterator_category): Remove. 590 (elements_view::_Sentinel::_Base): Just alias 591 elements_view::_Base. 592 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: 593 Adjust constraints on iterator_traits<counted_iterator>. 594 * testsuite/std/ranges/p2259.cc: New test. 595 5962021-05-03 Patrick Palka <ppalka@redhat.com> 597 598 Backported from master: 599 2021-04-27 Patrick Palka <ppalka@redhat.com> 600 601 PR libstdc++/100290 602 * include/std/ranges (join_view::_Iterator::operator++): Correct 603 the return type of the lambda to avoid returning a copy of 604 _M_parent->_M_inner. 605 * testsuite/std/ranges/adaptors/join.cc (test10): New test. 606 6072021-04-30 Jonathan Wakely <jwakely@redhat.com> 608 609 Backported from master: 610 2021-04-30 Jonathan Wakely <jwakely@redhat.com> 611 612 * include/bits/basic_string.h (__cpp_lib_constexpr_string): 613 Only define for C++17 and later. 614 6152021-04-29 Jonathan Wakely <jwakely@redhat.com> 616 617 Backported from master: 618 2021-04-26 Jonathan Wakely <jwakely@redhat.com> 619 620 PR libstdc++/100259 621 * include/experimental/internet (net::ip::make_error_code) 622 (net::ip::make_error_condition, net::ip::make_network_v4) 623 (net::ip::operator==(const udp&, const udp&)): Add 'inline'. 624 6252021-04-29 Jonathan Wakely <jwakely@redhat.com> 626 627 Backported from master: 628 2021-04-28 Jonathan Wakely <jwakely@redhat.com> 629 630 * include/bits/basic_string.h (__cpp_lib_constexpr_string): Define. 631 * include/std/version (__cpp_lib_constexpr_string): Define. 632 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc: 633 Check for __cpp_lib_constexpr_string. 634 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc: 635 Likewise. 636 * testsuite/21_strings/char_traits/requirements/version.cc: New test. 637 6382021-04-21 Jonathan Wakely <jwakely@redhat.com> 639 640 PR libstdc++/100180 641 * testsuite/experimental/net/internet/address/v6/members.cc: 642 Require gthreads. 643 6442021-04-21 Patrick Palka <ppalka@redhat.com> 645 646 Backported from master: 647 2021-04-08 Patrick Palka <ppalka@redhat.com> 648 649 * include/std/ranges (__detail::find): Define. 650 (split_view::_OuterIter::operator++): Apply proposed resolution 651 of LWG 3505. 652 * testsuite/std/ranges/adaptors/split.cc (test10): New test. 653 6542021-04-21 Patrick Palka <ppalka@redhat.com> 655 656 Backported from master: 657 2021-04-08 Patrick Palka <ppalka@redhat.com> 658 659 * include/std/ranges (__detail::find_if): Simplify. 660 (__detail::find_if_not): Likewise. 661 (__detail::min): Remove. 662 (__detail::mismatch): Simplify. 663 (take_view::size): Use std::min instead of __detail::min. 664 6652021-04-21 Patrick Palka <ppalka@redhat.com> 666 667 Backported from master: 668 2021-04-08 Patrick Palka <ppalka@redhat.com> 669 670 * include/std/ranges (__detail::__returnable_element): New 671 concept. 672 (elements_view): Use this concept in its constraints. Add 673 missing private access specifier. 674 (elements_view::_S_get_element): Define as per LWG 3502. 675 (elements_view::operator*, elements_view::operator[]): Use 676 _S_get_element. 677 (elements_view::operator++): Remove unnecessary constraint 678 as per LWG 3492. 679 * testsuite/std/ranges/adaptors/elements.cc (test05): New test. 680 6812021-04-21 Patrick Palka <ppalka@redhat.com> 682 683 Backported from master: 684 2020-10-31 Patrick Palka <ppalka@redhat.com> 685 686 PR libstdc++/97600 687 * include/std/ranges (basic_istream_view::begin): Initialize 688 _Iterator from 'this' instead of '*this'. 689 (basic_istream_view::_Iterator::_Iterator): Adjust constructor 690 accordingly. 691 (filter_view::_Iterator::_Iterator): Take a filter_view* 692 argument instead of a filter_view& argument. 693 (filter_view::_Sentinel::_Sentinel): Likewise. 694 (filter_view::begin): Initialize _Iterator from 'this' instead 695 of '*this'. 696 (filter_view::end): Likewise. 697 (transform_view::_Iterator::_Iterator): Take a _Parent* instead 698 of a _Parent&. 699 (filter_view::_Iterator::operator+): Adjust accordingly. 700 (filter_view::_Iterator::operator-): Likewise. 701 (filter_view::begin): Initialize _Iterator from 'this' instead 702 of '*this'. 703 (filter_view::end): Likewise. 704 (join_view::_Iterator): Take a _Parent* instead of a _Parent&. 705 (join_view::_Sentinel): Likewise. 706 (join_view::begin): Initialize _Iterator from 'this' instead of 707 '*this'. 708 (join_view::end): Initialize _Sentinel from 'this' instead of 709 '*this'. 710 (split_view::_OuterIter): Take a _Parent& instead of a _Parent*. 711 (split_view::begin): Initialize _OuterIter from 'this' instead 712 of '*this'. 713 (split_view::end): Likewise. 714 * testsuite/std/ranges/97600.cc: New test. 715 7162021-04-19 François Dumont <fdumont@gcc.gnu.org> 717 718 PR libstdc++/99402 719 * include/debug/helper_functions.h (__can_advance(_InputIterator, 720 const std::pair<_Diff, _Distance_precision>&, int)): New. 721 (__can_advance(const _Safe_iterator<>&, 722 const std::pair<_Diff, _Distance_precision>&, int)): New. 723 * include/debug/macros.h (__glibcxx_check_can_increment_dist): New, 724 use latter. 725 (__glibcxx_check_can_increment_range): Adapt to use latter. 726 (__glibcxx_check_can_decrement_range): Likewise. 727 * include/debug/safe_iterator.h 728 (_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&, 729 int)): New. 730 (__can_advance(const _Safe_iterator<>&, 731 const std::pair<_Diff, _Distance_precision>&, int)): New. 732 * include/debug/safe_iterator.tcc 733 (_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&, 734 int)): New. 735 (_Safe_iterator<>::_M_valid_range(const _Safe_iterator<>&, 736 std::pair<difference_type, _Distance_precision>&, bool)): Adapt for 737 __dp_sign_max_size. 738 (__copy_move_a): Adapt to use __glibcxx_check_can_increment_dist. 739 (__copy_move_backward_a): Likewise. 740 (__equal_aux): Likewise. 741 * include/debug/stl_iterator.h (__can_advance(const std::reverse_iterator<>&, 742 const std::pair<_Diff, _Distance_precision>&, int)): New. 743 (__can_advance(const std::move_iterator<>&, 744 const std::pair<_Diff, _Distance_precision>&, int)): New. 745 * testsuite/25_algorithms/copy/debug/99402.cc: New test. 746 7472021-04-19 Jonathan Wakely <jwakely@redhat.com> 748 749 Backported from master: 750 2020-10-26 Jonathan Wakely <jwakely@redhat.com> 751 752 PR libstdc++/97570 753 * libsupc++/new_opa.cc: Declare size_t in global namespace. 754 Remove unused header. 755 7562021-04-13 Jonathan Wakely <jwakely@redhat.com> 757 758 Backported from master: 759 2021-04-13 Jonathan Wakely <jwakely@redhat.com> 760 761 PR libstdc++/100060 762 * include/std/bit: Only include <ext/numeric_traits.h> for 763 hosted build, use <limits> otherwise. 764 7652021-04-12 Jonathan Wakely <jwakely@redhat.com> 766 767 Backported from master: 768 2021-04-12 Jonathan Wakely <jwakely@redhat.com> 769 770 PR libstdc++/100044 771 * include/std/ranges (__detail::__iterator_sentinel_pair): 772 Remove helper concept. 773 (subrange(_Pr), subrange(Pr, __make_unsigned_like<...>)): Remove 774 deduction guides, as per LWG 3404. 775 * testsuite/std/ranges/subrange/lwg3282_neg.cc: Check that class 776 template argument deduction fails. 777 7782021-04-12 Jonathan Wakely <jwakely@redhat.com> 779 780 Backported from master: 781 2020-08-24 Jonathan Wakely <jwakely@redhat.com> 782 783 * include/bits/iterator_concepts.h (indirectly_readable): Add 784 partial specializations to resolve ambiguities (LWG 3446). 785 * testsuite/24_iterators/associated_types/readable.traits.cc: 786 Check types with both value_type and element_type. 787 7882021-04-09 Jonathan Wakely <jwakely@redhat.com> 789 790 PR bootstrap/99983 791 * include/bits/hashtable.h (_Hashtable): Fix noexcept-speciofier 792 on definition to match the one on the declaration. 793 7942021-04-09 Jonathan Wakely <jwakely@redhat.com> 795 796 Backported from master: 797 2021-04-09 Jonathan Wakely <jwakely@redhat.com> 798 799 PR libstdc++/99985 800 * include/bits/hashtable.h (_Hashtable::_S_nothrow_move()): Fix 801 to be a valid constexpr function in C++11. 802 * testsuite/23_containers/unordered_set/cons/99985.cc: New test. 803 8042021-04-09 Jonathan Wakely <jwakely@redhat.com> 805 806 Backported from master: 807 2021-04-09 Jonathan Wakely <jwakely@redhat.com> 808 809 * include/bits/fs_fwd.h: Fix doxygen group command. 810 * include/bits/streambuf_iterator.h: Likewise. 811 * include/std/chrono: Likewise. 812 * include/std/memory: Likewise. 813 * include/std/thread: Likewise. 814 * include/tr1/complex: Likewise. 815 8162021-04-09 Jonathan Wakely <jwakely@redhat.com> 817 818 Backported from master: 819 2021-04-08 Jonathan Wakely <jwakely@redhat.com> 820 821 * include/bits/basic_string.h: Tweak doxygen comment. 822 8232021-04-09 Jonathan Wakely <jwakely@redhat.com> 824 825 Backported from master: 826 2021-04-08 Jonathan Wakely <jwakely@redhat.com> 827 828 * include/bits/random.h: Fix doxygen group commands. 829 * include/bits/regex_constants.h: Likewise. 830 * include/tr1/random.h: Likewise. 831 8322021-04-08 Jonathan Wakely <jwakely@redhat.com> 833 834 Backported from master: 835 2020-07-30 Jonathan Wakely <jwakely@redhat.com> 836 837 * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc: 838 Use allocator with the correct value type. 839 * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc: 840 Likewise. 841 8422021-04-08 François Dumont <fdumont@gcc.gnu.org> 843 844 Backported from master: 845 2020-07-29 François Dumont <fdumont@gcc.gnu.org> 846 847 PR libstdc++/96029 848 * include/bits/hashtable.h 849 (_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)): 850 Add noexcept qualification. 851 (_Hashtable(_Hashtable&&)): Fix noexcept qualification. 852 (_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept 853 qualification. 854 * include/bits/unordered_map.h 855 (unordered_map(unordered_map&&, const allocator_type&)): Add noexcept 856 qualification. 857 (unordered_multimap(unordered_multimap&&, const allocator_type&)): 858 Likewise. 859 * include/bits/unordered_set.h 860 (unordered_set(unordered_set&&, const allocator_type&)): Likewise. 861 (unordered_multiset(unordered_multiset&&, const allocator_type&)): 862 Likewise. 863 * include/debug/unordered_map 864 (unordered_map(unordered_map&&, const allocator_type&)): Likewise. 865 (unordered_multimap(unordered_multimap&&, const allocator_type&)): 866 Likewise. 867 * include/debug/unordered_set 868 (unordered_set(unordered_set&&, const allocator_type&)): Likewise. 869 (unordered_multiset(unordered_multiset&&, const allocator_type&)): 870 Likewise. 871 * testsuite/23_containers/unordered_map/allocator/default_init.cc: 872 New test. 873 * testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc: 874 New test. 875 * testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc: 876 New test. 877 * testsuite/23_containers/unordered_map/modifiers/move_assign.cc: 878 New test. 879 * testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc: 880 New test. 881 * testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc: 882 New test. 883 * testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc: 884 New test. 885 * testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc: 886 New test. 887 * testsuite/23_containers/unordered_set/allocator/default_init.cc: 888 New test. 889 * testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc: 890 New test. 891 * testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc: 892 New test. 893 8942021-04-08 François Dumont <fdumont@gcc.gnu.org> 895 896 Backported from master: 897 2020-07-08 François Dumont <fdumont@gcc.gnu.org> 898 899 PR libstdc++/96029 900 * include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&)): Add noexcept 901 qualification based only on _Compare one. 902 * testsuite/23_containers/map/cons/noexcept_move_construct.cc: Add 903 static asserts. 904 * testsuite/23_containers/multimap/cons/noexcept_move_construct.cc: 905 Likewise. 906 * testsuite/23_containers/multiset/cons/noexcept_move_construct.cc: 907 Likewise. 908 * testsuite/23_containers/set/cons/noexcept_move_construct.cc: Likewise. 909 9102021-04-08 Jonathan Wakely <jwakely@redhat.com> 911 912 Backported from master: 913 2021-04-07 Jonathan Wakely <jwakely@redhat.com> 914 915 PR libstdc++/99805 916 * src/c++17/fs_path.cc (path::_M_split_cmpts): Do not call 917 non-const member on _M_pathname, to avoid copy-on-write. 918 * testsuite/27_io/filesystem/path/decompose/parent_path.cc: 919 Check construction from strings that might be shared. 920 9212021-04-08 Jonathan Wakely <jwakely@redhat.com> 922 923 * doc/xml/manual/status_cxx2017.xml: Replace Intel parallelstl 924 link with LLVM repo for PSTL. 925 * doc/html/manual/status.html: Regenerate. 926 9272021-04-08 Jonathan Wakely <jwakely@redhat.com> 928 929 Backported from master: 930 2021-04-06 Jonathan Wakely <jwakely@redhat.com> 931 932 * include/bits/alloc_traits.h: Use markdown for code font. 933 * include/bits/basic_string.h: Fix @param names. 934 * include/bits/regex.h: Fix duplicate @retval names, and rename. 935 * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Add 936 group open to match existing group close. 937 * include/ext/pb_ds/priority_queue.hpp: Add blank line before group 938 open. 939 9402021-04-08 Jonathan Wakely <jwakely@redhat.com> 941 942 Backported from master: 943 2021-04-06 Jonathan Wakely <jwakely@redhat.com> 944 945 * include/bits/atomic_base.h: Fix doxygen group close. 946 * include/bits/basic_ios.h: Likewise. 947 * include/bits/forward_list.h: Likewise. 948 * include/bits/fs_dir.h: Likewise. 949 * include/bits/fs_ops.h: Likewise. 950 * include/bits/fs_path.h: Likewise. 951 * include/bits/functional_hash.h: Likewise. 952 * include/bits/gslice.h: Likewise. 953 * include/bits/gslice_array.h: Likewise. 954 * include/bits/hashtable_policy.h: Likewise. 955 * include/bits/indirect_array.h: Likewise. 956 * include/bits/locale_classes.h: Likewise. 957 * include/bits/locale_facets.h: Likewise. 958 * include/bits/locale_facets_nonio.h: Likewise. 959 * include/bits/mask_array.h: Likewise. 960 * include/bits/refwrap.h: Likewise. 961 * include/bits/regex.h: Likewise. 962 * include/bits/regex_automaton.h: Likewise. 963 * include/bits/regex_compiler.h: Likewise. 964 * include/bits/regex_constants.h: Likewise. 965 * include/bits/regex_error.h: Likewise. 966 * include/bits/regex_executor.h: Likewise. 967 * include/bits/regex_scanner.h: Likewise. 968 * include/bits/shared_ptr.h: Likewise. 969 * include/bits/shared_ptr_atomic.h: Likewise. 970 * include/bits/shared_ptr_base.h: Likewise. 971 * include/bits/slice_array.h: Likewise. 972 * include/bits/specfun.h: Likewise. 973 * include/bits/std_function.h: Likewise. 974 * include/bits/std_mutex.h: Likewise. 975 * include/bits/stl_deque.h: Likewise. 976 * include/bits/stl_iterator.h: Likewise. 977 * include/bits/stl_iterator_base_types.h: Likewise. 978 * include/bits/stl_map.h: Likewise. 979 * include/bits/stl_multimap.h: Likewise. 980 * include/bits/stl_multiset.h: Likewise. 981 * include/bits/stl_numeric.h: Likewise. 982 * include/bits/stl_pair.h: Likewise. 983 * include/bits/stl_set.h: Likewise. 984 * include/bits/stl_uninitialized.h: Likewise. 985 * include/bits/stream_iterator.h: Likewise. 986 * include/bits/streambuf_iterator.h: Likewise. 987 * include/bits/unique_ptr.h: Likewise. 988 * include/bits/unordered_map.h: Likewise. 989 * include/bits/unordered_set.h: Likewise. 990 * include/decimal/decimal: Likewise. 991 * include/experimental/any: Likewise. 992 * include/experimental/array: Likewise. 993 * include/experimental/bits/fs_dir.h: Likewise. 994 * include/experimental/bits/fs_fwd.h: Likewise. 995 * include/experimental/bits/fs_ops.h: Likewise. 996 * include/experimental/bits/fs_path.h: Likewise. 997 * include/experimental/buffer: Likewise. 998 * include/experimental/internet: Likewise. 999 * include/experimental/optional: Likewise. 1000 * include/experimental/propagate_const: Likewise. 1001 * include/experimental/socket: Likewise. 1002 * include/ext/pb_ds/assoc_container.hpp: Likewise. 1003 * include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: 1004 Likewise. 1005 * include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Likewise. 1006 * include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Likewise. 1007 * include/ext/pb_ds/detail/types_traits.hpp: Likewise. 1008 * include/ext/pb_ds/exception.hpp: Likewise. 1009 * include/ext/pb_ds/priority_queue.hpp: Likewise. 1010 * include/ext/pb_ds/tag_and_trait.hpp: Likewise. 1011 * include/ext/random: Likewise. 1012 * include/std/any: Likewise. 1013 * include/std/atomic: Likewise. 1014 * include/std/bitset: Likewise. 1015 * include/std/chrono: Likewise. 1016 * include/std/complex: Likewise. 1017 * include/std/condition_variable: Likewise. 1018 * include/std/fstream: Likewise. 1019 * include/std/future: Likewise. 1020 * include/std/istream: Likewise. 1021 * include/std/iostream: Likewise. 1022 * include/std/mutex: Likewise. 1023 * include/std/numeric: Likewise. 1024 * include/std/ostream: Likewise. 1025 * include/std/ratio: Likewise. 1026 * include/std/shared_mutex: Likewise. 1027 * include/std/stdexcept: Likewise. 1028 * include/std/streambuf: Likewise. 1029 * include/std/system_error: Likewise. 1030 * include/std/valarray: Likewise. 1031 * include/std/variant: Likewise. 1032 * include/tr1/cmath: Likewise. 1033 * include/tr1/regex: Likewise. 1034 * include/tr2/dynamic_bitset: Likewise. 1035 * libsupc++/atomic_lockfree_defines.h: Likewise. 1036 * libsupc++/exception: Likewise. 1037 * libsupc++/exception.h: Likewise. 1038 * libsupc++/exception_ptr.h: Likewise. 1039 * libsupc++/nested_exception.h: Likewise. 1040 10412021-04-08 Jonathan Wakely <jwakely@redhat.com> 1042 1043 Backported from master: 1044 2021-04-08 Jonathan Wakely <jwakely@redhat.com> 1045 1046 * include/std/string_view: Adjust Doxygen @file comment. 1047 10482021-04-08 Release Manager 1049 1050 * GCC 10.3.0 released. 1051 10522021-04-01 Jonathan Wakely <jwakely@redhat.com> 1053 1054 Backported from master: 1055 2021-02-14 Jonathan Wakely <jwakely@redhat.com> 1056 1057 PR libstdc++/99096 1058 * testsuite/util/testsuite_fs.h: Always include <unistd.h>. 1059 10602021-04-01 Jonathan Wakely <jwakely@redhat.com> 1061 1062 Backported from master: 1063 2020-12-17 Jonathan Wakely <jwakely@redhat.com> 1064 1065 * config.h.in: Regenerate. 1066 * config/os/djgpp/error_constants.h: Test POSIX errno macros 1067 directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros. 1068 * config/os/mingw32-w64/error_constants.h: Likewise. 1069 * config/os/mingw32/error_constants.h: Likewise. 1070 * configure: Regenerate. 1071 10722021-03-29 Jonathan Wakely <jwakely@redhat.com> 1073 1074 Backported from master: 1075 2020-11-30 Jonathan Wakely <jwakely@redhat.com> 1076 1077 * testsuite/20_util/specialized_algorithms/pstl/*: Add 1078 dg-timeout-factor. 1079 * testsuite/25_algorithms/pstl/*: Likewise. 1080 * testsuite/26_numerics/pstl/*: Likewise. 1081 * testsuite/28_regex/*: Likewise. 1082 10832021-03-29 Jonathan Wakely <jwakely@redhat.com> 1084 1085 Backported from master: 1086 2020-11-26 Jonathan Wakely <jwakely@redhat.com> 1087 1088 * testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc: 1089 Add dg-timeout-factor directive. 1090 * testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc: 1091 Likewise. 1092 * testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc: 1093 Likewise. 1094 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc: 1095 Likewise. 1096 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc: 1097 Likewise. 1098 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc: 1099 Likewise. 1100 * testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc: 1101 Likewise. 1102 * testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc: 1103 Likewise. 1104 * testsuite/28_regex/algorithms/regex_search/61720.cc: Likewise. 1105 * testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc: 1106 Likewise. 1107 * testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc: 1108 Likewise. 1109 * testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise. 1110 11112021-03-29 Jonathan Wakely <jwakely@redhat.com> 1112 1113 Backported from master: 1114 2020-08-11 Jonathan Wakely <jwakely@redhat.com> 1115 1116 * include/std/stop_token: Check _GLIBCXX_HAS_GTHREADS using 1117 #ifdef instead of #if. 1118 (stop_token::_S_yield()): Check _GLIBCXX_HAS_GTHREADS before 1119 using __gthread_yield. 1120 11212021-03-29 Jonathan Wakely <jwakely@redhat.com> 1122 1123 Backported from master: 1124 2020-06-19 Jonathan Wakely <jwakely@redhat.com> 1125 1126 PR libstdc++/95765 1127 * include/bits/stl_algobase.h (__size_to_integer(float)) 1128 (__size_to_integer(double), __size_to_integer(long double)) 1129 (__size_to_integer(__float128)): Cast return type explicitly. 1130 11312021-03-29 Jonathan Wakely <jwakely@redhat.com> 1132 1133 Backported from master: 1134 2020-11-25 Jonathan Wakely <jwakely@redhat.com> 1135 1136 * testsuite/17_intro/names.cc: Do not test 'v' on AIX. 1137 11382021-03-29 Jonathan Wakely <jwakely@redhat.com> 1139 1140 Backported from master: 1141 2020-07-30 Jonathan Wakely <jwakely@redhat.com> 1142 1143 * include/bits/basic_string.h (size_type, difference_type): 1144 Use allocator_traits to obtain the allocator's size_type and 1145 difference_type. 1146 11472021-03-29 Jonathan Wakely <jwakely@redhat.com> 1148 1149 Backported from master: 1150 2020-09-01 Jonathan Wakely <jwakely@redhat.com> 1151 1152 * include/std/chrono (duration::_S_gcd(intmax_t, intmax_t)): 1153 New helper function for finding GCD of two positive intmax_t 1154 values. 1155 (duration::__divide): New helper alias for dividing one period 1156 by another. 1157 (duration::__is_harmonic): Use __divide not ratio_divide. 1158 (duration(const duration<R2, P2>&)): Require the duration rep 1159 types to be convertible. 1160 * testsuite/20_util/duration/cons/dr2094.cc: New test. 1161 * testsuite/20_util/duration/requirements/reduced_period.cc: 1162 Fix definition of unused member functions in test type. 1163 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: 1164 Adjust expected errors. 1165 11662021-03-29 Jonathan Wakely <jwakely@redhat.com> 1167 1168 Backported from master: 1169 2020-08-27 Jonathan Wakely <jwakely@redhat.com> 1170 1171 * include/std/chrono (__duration_common_type): Ensure the 1172 reduced ratio is used. Remove unused partial specialization 1173 using __failure_type. 1174 (common_type): Pass reduced ratios to __duration_common_type. 1175 Add partial specializations for simple cases involving a single 1176 duration or time_point type. 1177 (duration::period): Use reduced ratio. 1178 (duration::operator+(), duration::operator-()): Return duration 1179 type using the reduced ratio. 1180 * testsuite/20_util/duration/requirements/typedefs_neg2.cc: 1181 Adjust expected errors. 1182 * testsuite/20_util/duration/requirements/reduced_period.cc: New test. 1183 11842021-03-29 Jonathan Wakely <jwakely@redhat.com> 1185 1186 Backported from master: 1187 2020-09-03 Jonathan Wakely <jwakely@redhat.com> 1188 1189 PR libstdc++/96592 1190 * include/std/tuple (_TupleConstraints<true, T...>): Use 1191 alternative is_constructible instead of std::is_constructible. 1192 * testsuite/20_util/tuple/cons/96592.cc: New test. 1193 11942021-03-29 Jonathan Wakely <jwakely@redhat.com> 1195 1196 Backported from master: 1197 2020-07-31 Jonathan Wakely <jwakely@redhat.com> 1198 1199 * testsuite/20_util/is_aggregate/value.cc: Adjust for changes to 1200 definition of aggregates in C++20. 1201 * testsuite/20_util/optional/requirements.cc: Adjust for 1202 defaulted comparisons in C++20. 1203 12042021-03-29 Jonathan Wakely <jwakely@redhat.com> 1205 1206 Backported from master: 1207 2020-07-31 Jonathan Wakely <jwakely@redhat.com> 1208 1209 * testsuite/20_util/tuple/78939.cc: Suppress warnings about 1210 deprecation of volatile-qualified structured bindings in C++20. 1211 * testsuite/20_util/variable_templates_for_traits.cc: Likewise 1212 for deprecation of is_pod in C++20 1213 12142021-03-29 Jonathan Wakely <jwakely@redhat.com> 1215 1216 Backported from master: 1217 2020-06-09 Jonathan Wakely <jwakely@redhat.com> 1218 1219 * include/std/optional (bad_optional_access): Define default 1220 constructor and destructor as defaulted. 1221 * testsuite/20_util/optional/bad_access.cc: New test. 1222 12232021-03-29 Jonathan Wakely <jwakely@redhat.com> 1224 1225 Backported from master: 1226 2020-06-04 Jonathan Wakely <jwakely@redhat.com> 1227 1228 * include/bits/ranges_algobase.h (__copy_n_fn): Only call 1229 ranges::copy for positive values. 1230 * include/bits/stl_algo.h (copy_n): Convert Size argument to an 1231 integral type and only call __copy_n for positive values. 1232 * testsuite/util/testsuite_iterators.h 1233 (random_access_iterator_wrapper::operator+=): Fix range check for 1234 negative values. 1235 (output_container, input_container, forward_container) 1236 (bidirectional_container, random_access_container): New alias 1237 templates. 1238 * testsuite/25_algorithms/copy_n/5.cc: New test. 1239 12402021-03-29 Jonathan Wakely <jwakely@redhat.com> 1241 1242 Backported from master: 1243 2020-06-16 Jonathan Wakely <jwakely@redhat.com> 1244 1245 * include/std/atomic (atomic): Add static assertions. 1246 * testsuite/29_atomics/atomic/requirements/types_neg.cc: New test. 1247 12482021-03-29 Jonathan Wakely <jwakely@redhat.com> 1249 1250 Backported from master: 1251 2020-06-09 Jonathan Wakely <jwakely@redhat.com> 1252 1253 * include/bits/stl_iterator.h (move_iterator::operator=): Define. 1254 * testsuite/24_iterators/move_iterator/dr3265.cc: New test. 1255 12562021-03-29 Paul Keir <paul.keir@uws.ac.uk> 1257 1258 Backported from master: 1259 2020-06-15 Paul Keir <paul.keir@uws.ac.uk> 1260 1261 * include/bits/char_traits.h (char_traits::move): constexpr move with 1262 overlap was using copy_backward incorrectly. 1263 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc: 1264 New test. 1265 12662021-03-29 Jonathan Wakely <jwakely@redhat.com> 1267 1268 Backported from master: 1269 2020-07-31 Jonathan Wakely <jwakely@redhat.com> 1270 1271 * testsuite/20_util/time_point_cast/rounding.cc: Remove 1272 duplicate dg-do directive and add c++17 effective target. 1273 12742021-03-29 Jonathan Wakely <jwakely@redhat.com> 1275 1276 Backported from master: 1277 2020-08-11 Jonathan Wakely <jwakely@redhat.com> 1278 1279 * testsuite/30_threads/thread/cons/84535.cc: Use a custom 1280 namespace. 1281 * testsuite/30_threads/thread/cons/lwg2097.cc: Likewise. 1282 12832021-03-29 Jonathan Wakely <jwakely@redhat.com> 1284 1285 Backported from master: 1286 2020-11-26 Jonathan Wakely <jwakely@redhat.com> 1287 1288 * testsuite/lib/libstdc++.exp (libstdc++_init): Only set 1289 tool_timeout if it hasn't been set by the user already. 1290 12912021-03-29 Moritz Sichert <sichert@in.tum.de> 1292 1293 Backported from master: 1294 2021-03-23 Moritz Sichert <sichert@in.tum.de> 1295 1296 * include/std/ranges (reverse_view::begin, reverse_view::end): 1297 Qualify make_reverse_iterator calls to avoid ADL. 1298 * testsuite/std/ranges/adaptors/reverse.cc: Test that 1299 views::reverse works when make_reverse_iterator is defined 1300 in an associated namespace. 1301 13022021-03-29 Jonathan Wakely <jwakely@redhat.com> 1303 1304 Backported from master: 1305 2021-03-22 Jonathan Wakely <jwakely@redhat.com> 1306 1307 * include/bits/range_access.h (begin(T (&)[N]), end(T (&)[N])): 1308 Add missing 'noexcept' as per LWG 2280. 1309 (rbegin(T (&)[N]), rend(T (&)[N]), rbegin(initializer_list<T>)) 1310 (rend(initializer_list<T>)): Add 'noexcept' as per LWG 3537. 1311 * testsuite/24_iterators/range_access/range_access.cc: Check for 1312 expected noexcept specifiers. Check result types of generic 1313 std::begin and std::end overloads. 1314 * testsuite/24_iterators/range_access/range_access_cpp14.cc: 1315 Check for expected noexcept specifiers. 1316 * testsuite/24_iterators/range_access/range_access_cpp17.cc: 1317 Likewise. 1318 13192021-03-29 Jonathan Wakely <jwakely@redhat.com> 1320 1321 Backported from master: 1322 2021-03-11 Jonathan Wakely <jwakely@redhat.com> 1323 1324 PR libstdc++/99537 1325 * include/std/stop_token (_Stop_state_t::_M_release_ownership): 1326 Use acq_rel memory ordering. 1327 13282021-03-29 Jonathan Wakely <jwakely@redhat.com> 1329 1330 Backported from master: 1331 2021-03-11 Jonathan Wakely <jwakely@redhat.com> 1332 1333 PR libstdc++/99533 1334 * src/c++17/fs_dir.cc (recursive_directory_iterator): Use new 1335 helper function to check for permission denied errors. 1336 * src/filesystem/dir.cc (recursive_directory_iterator): 1337 Likewise. 1338 * src/filesystem/dir-common.h (is_permission_denied_error): New 1339 helper function. 1340 13412021-03-29 Jonathan Wakely <jwakely@redhat.com> 1342 1343 Backported from master: 1344 2021-03-11 Jonathan Wakely <jwakely@redhat.com> 1345 1346 PR libstdc++/99536 1347 * include/bits/random.h (normal_distribution): Use 1348 default-initializer for _M_saved and _M_saved_available. 1349 13502021-03-29 Jonathan Wakely <jwakely@redhat.com> 1351 1352 Backported from master: 1353 2021-03-10 Jonathan Wakely <jwakely@redhat.com> 1354 1355 * include/bits/range_cmp.h (__eq_builtin_ptr_cmp): Remove. 1356 (ranges::equal_to, ranges::not_equal_to): Do not constrain 1357 with __eq_builtin_ptr_cmp. 1358 (ranges::less, ranges::greater, ranges::less_equal) 1359 (ranges::greater_equal): Do not constrain with 1360 __less_builtin_ptr_cmp. 1361 * libsupc++/compare (compare_three_way): Do not constrain with 1362 __3way_builtin_ptr_cmp. 1363 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: Moved to... 1364 * testsuite/18_support/comparisons/object/lwg3530.cc: ...here. 1365 * testsuite/20_util/function_objects/range.cmp/lwg3530.cc: New test. 1366 13672021-03-29 Jonathan Wakely <jwakely@redhat.com> 1368 1369 Backported from master: 1370 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 1371 1372 * doc/xml/manual/status_cxx2014.xml: Document implementation 1373 specific properties of std::experimental::filesystem::rename. 1374 * doc/xml/manual/status_cxx2017.xml: Document implementation 1375 specific properties of std::filesystem::rename. 1376 * doc/html/*: Regenerate. 1377 * src/c++17/fs_ops.cc (fs::rename): Implement correct behaviour 1378 for directories on Windows. 1379 * src/filesystem/ops-common.h (__gnu_posix::rename): Use 1380 MoveFileExW on Windows. 1381 * testsuite/27_io/filesystem/operations/rename.cc: New test. 1382 * testsuite/experimental/filesystem/operations/rename.cc: New test. 1383 13842021-03-29 Jonathan Wakely <jwakely@redhat.com> 1385 1386 Backported from master: 1387 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 1388 1389 * testsuite/util/testsuite_fs.h (nonexistent_path): Add 1390 random number to the path. 1391 13922021-03-29 Jonathan Wakely <jwakely@redhat.com> 1393 1394 Backported from master: 1395 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 1396 1397 * include/experimental/internet (address_v6::to_string): Include 1398 scope ID in string. 1399 (address_v6::loopback): Fix to be constexpr in C++14. 1400 * testsuite/experimental/net/internet/address/v6/members.cc: 1401 Test to_string() results. 1402 14032021-03-29 Jonathan Wakely <jwakely@redhat.com> 1404 1405 Backported from master: 1406 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 1407 1408 * include/experimental/internet (address_v6::any): Avoid using 1409 memcpy in constexpr function. 1410 (address_v6::loopback): Likewise. 1411 (make_address_v6): Fix missing return statements on error paths. 1412 * include/experimental/io_context: Avoid -Wdangling-else 1413 warning. 1414 * testsuite/experimental/net/internet/address/v4/members.cc: 1415 Remove unused variables. 1416 * testsuite/experimental/net/internet/address/v6/members.cc: 1417 New test. 1418 14192021-03-29 Jonathan Wakely <jwakely@redhat.com> 1420 1421 Backported from master: 1422 2020-10-29 Jonathan Wakely <jwakely@redhat.com> 1423 1424 * testsuite/25_algorithms/all_of/constexpr.cc: Check result of 1425 the algorithm. 1426 * testsuite/25_algorithms/any_of/constexpr.cc: Likewise. 1427 * testsuite/25_algorithms/binary_search/constexpr.cc: Likewise. 1428 * testsuite/25_algorithms/copy_backward/constexpr.cc: Likewise. 1429 * testsuite/25_algorithms/count/constexpr.cc: Likewise. 1430 * testsuite/25_algorithms/equal/constexpr.cc: Likewise. 1431 * testsuite/25_algorithms/equal_range/constexpr.cc: Likewise. 1432 * testsuite/25_algorithms/fill/constexpr.cc: Likewise. 1433 * testsuite/25_algorithms/find_end/constexpr.cc: Likewise. 1434 * testsuite/25_algorithms/find_if/constexpr.cc: Likewise. 1435 * testsuite/25_algorithms/is_partitioned/constexpr.cc: Likewise. 1436 * testsuite/25_algorithms/is_permutation/constexpr.cc: Likewise. 1437 * testsuite/25_algorithms/is_sorted_until/constexpr.cc: 1438 Likewise. 1439 * testsuite/25_algorithms/lexicographical_compare/constexpr.cc: 1440 Likewise. 1441 * testsuite/25_algorithms/lower_bound/constexpr.cc: Likewise. 1442 * testsuite/25_algorithms/merge/constexpr.cc: Likewise. 1443 * testsuite/25_algorithms/mismatch/constexpr.cc: Likewise. 1444 * testsuite/25_algorithms/none_of/constexpr.cc: Likewise. 1445 * testsuite/25_algorithms/partition_copy/constexpr.cc: Likewise. 1446 * testsuite/25_algorithms/remove_copy/constexpr.cc: Likewise. 1447 * testsuite/25_algorithms/remove_copy_if/constexpr.cc: Likewise. 1448 * testsuite/25_algorithms/remove_if/constexpr.cc: Likewise. 1449 * testsuite/25_algorithms/replace_if/constexpr.cc: Likewise. 1450 * testsuite/25_algorithms/reverse/constexpr.cc: Likewise. 1451 * testsuite/25_algorithms/reverse_copy/constexpr.cc: Likewise. 1452 * testsuite/25_algorithms/rotate_copy/constexpr.cc: Likewise. 1453 * testsuite/25_algorithms/search/constexpr.cc: Likewise. 1454 * testsuite/25_algorithms/set_difference/constexpr.cc: Likewise. 1455 * testsuite/25_algorithms/set_intersection/constexpr.cc: 1456 Likewise. 1457 * testsuite/25_algorithms/set_symmetric_difference/constexpr.cc: 1458 Likewise. 1459 * testsuite/25_algorithms/set_union/constexpr.cc: Likewise. 1460 * testsuite/25_algorithms/unique_copy/constexpr.cc: Likewise. 1461 * testsuite/25_algorithms/upper_bound/constexpr.cc: Likewise. 1462 14632021-03-29 Jonathan Wakely <jwakely@redhat.com> 1464 1465 Backported from master: 1466 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 1467 1468 PR libstdc++/99077 1469 * src/c++11/cxx11-ios_failure.cc (__ios_failure(const char*, int)): 1470 Change int parameter to error_code, to match std::ios_failure. 1471 (__throw_ios_failure(const char*, int)): Construct error_code 1472 from int parameter. 1473 14742021-03-29 Jonathan Wakely <jwakely@redhat.com> 1475 1476 Backported from master: 1477 2021-02-11 Jonathan Wakely <jwakely@redhat.com> 1478 1479 PR libstdc++/99058 1480 * doc/xml/manual/status_cxx2011.xml: Document when support 1481 became stable. 1482 * doc/xml/manual/status_cxx2014.xml: Likewise. 1483 * doc/xml/manual/status_cxx2017.xml: Likewise. 1484 * doc/html/manual/status.html: Regenerate. 1485 14862021-03-29 Jonathan Wakely <jwakely@redhat.com> 1487 1488 Backported from master: 1489 2021-02-12 Jonathan Wakely <jwakely@redhat.com> 1490 1491 PR libstdc++/88881 1492 * src/c++17/fs_ops.cc (fs::symlink_status): Re-enable workaround. 1493 14942021-03-29 Jonathan Wakely <jwakely@redhat.com> 1495 1496 Backported from master: 1497 2021-02-10 Jonathan Wakely <jwakely@redhat.com> 1498 1499 PR libstdc++/88881 1500 * src/c++17/fs_ops.cc (fs::status): Re-enable workaround. 1501 15022021-03-29 Jonathan Wakely <jwakely@redhat.com> 1503 1504 Backported from master: 1505 2021-02-10 Jonathan Wakely <jwakely@redhat.com> 1506 1507 * src/c++17/fs_ops.cc (fs::create_hard_link, fs::equivalent) 1508 (fs::remove): Use std::system_category() for error codes from 1509 GetLastError(). 1510 * src/filesystem/ops.cc (fs::create_hard_link, fs::remove): 1511 Likewise. 1512 15132021-03-29 Jonathan Wakely <jwakely@redhat.com> 1514 1515 Backported from master: 1516 2021-02-10 Jonathan Wakely <jwakely@redhat.com> 1517 1518 * testsuite/27_io/filesystem/operations/proximate.cc: Fix typo 1519 in __MINGW32__ macro name. 1520 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise. 1521 * testsuite/27_io/filesystem/path/generation/proximate.cc: 1522 Likewise. 1523 * testsuite/27_io/filesystem/path/generation/relative.cc: 1524 Likewise. 1525 * testsuite/util/testsuite_fs.h: Likewise. 1526 15272021-03-29 Jonathan Wakely <jwakely@redhat.com> 1528 1529 Backported from master: 1530 2021-02-03 Jonathan Wakely <jwakely@redhat.com> 1531 1532 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: 1533 Add comparison with same category and different values. 1534 * testsuite/19_diagnostics/error_code/operators/less.cc: 1535 Likewise. Fix comparison involving different categories. 1536 * testsuite/19_diagnostics/error_code/operators/three_way.cc: 1537 Likewise. 1538 * testsuite/19_diagnostics/error_condition/operators/less.cc: 1539 Add comment. 1540 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: 1541 Likewise. 1542 15432021-03-29 Jonathan Wakely <jwakely@redhat.com> 1544 1545 Backported from master: 1546 2020-12-16 Jonathan Wakely <jwakely@redhat.com> 1547 1548 PR libstdc++/98319 1549 * include/experimental/random: Only define contents for C++14 1550 and later. 1551 * include/experimental/source_location: Likewise. 1552 * include/experimental/utility: Likewise. 1553 * testsuite/experimental/feat-lib-fund.cc: Include all LFTS 1554 headers that are present. Allow test to run for all modes. 1555 15562021-03-29 Jonathan Wakely <jwakely@redhat.com> 1557 1558 Backported from master: 1559 2020-12-16 Jonathan Wakely <jwakely@redhat.com> 1560 1561 PR libstdc++/93151 1562 * acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove. 1563 * configure.ac: Regenerate. 1564 * config/os/generic/error_constants.h: Test POSIX errno macros 1565 directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros. 1566 * testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc: 1567 Likewise. 1568 * testsuite/19_diagnostics/headers/system_error/93151.cc: New 1569 test. 1570 15712021-03-29 Jonathan Wakely <jwakely@redhat.com> 1572 1573 Backported from master: 1574 2020-12-10 Jonathan Wakely <jwakely@redhat.com> 1575 1576 PR libstdc++/98226 1577 * include/std/bit (__countl_one, __countr_one): Remove redundant 1578 branches. 1579 15802021-03-29 Jonathan Wakely <jwakely@redhat.com> 1581 1582 Backported from master: 1583 2020-11-09 Jonathan Wakely <jwakely@redhat.com> 1584 1585 * include/std/bit (__popcount): Remove redundant check for zero. 1586 15872021-03-29 Jonathan Wakely <jwakely@redhat.com> 1588 1589 Backported from master: 1590 2020-10-30 Jonathan Wakely <jwakely@redhat.com> 1591 1592 * include/std/ranges (enable_borrowed_view<take_view<T>>) 1593 (enable_borrowed_view<drop_view<T>>) 1594 (enable_borrowed_view<drop_while_view<T>>) 1595 (enable_borrowed_view<reverse_view<T>>) 1596 (enable_borrowed_view<common_view<T>>) 1597 (enable_borrowed_view<elements_view<T>>): Add partial 1598 specializations as per P2017R1. 1599 * testsuite/std/ranges/adaptors/conditionally_borrowed.cc: 1600 New test. 1601 16022021-03-29 Jonathan Wakely <jwakely@redhat.com> 1603 1604 Backported from master: 1605 2020-10-29 Jonathan Wakely <jwakely@redhat.com> 1606 1607 * include/std/ranges (subrange::subrange(R&&)): Use 1608 direct-initialization instead of list-initialization, so a 1609 potential narrowing conversion from ranges::size(r) to the 1610 stored size isn't ill-formed. 1611 16122021-03-29 Jonathan Wakely <jwakely@redhat.com> 1613 1614 Backported from master: 1615 2020-10-08 Jonathan Wakely <jwakely@redhat.com> 1616 1617 PR libstdc++/82584 1618 * include/bits/random.tcc 1619 (discrete_distribution::param_type::_M_initialize) 1620 (piecewise_constant_distribution::param_type::_M_initialize) 1621 (piecewise_linear_distribution::param_type::_M_initialize): 1622 Add assertions for positive sums.. 1623 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error 1624 line. 1625 16262021-03-29 Jonathan Wakely <jwakely@redhat.com> 1627 1628 Backported from master: 1629 2020-10-08 Jonathan Wakely <jwakely@redhat.com> 1630 1631 * include/bits/random.h (__detail::_Mod): Revert last change. 1632 (__detail::__mod): Do not use _Mod for a==0 case. 1633 * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc: 1634 Check other cases with a==0. Also check runtime results. 1635 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error 1636 line. 1637 16382021-03-29 Jonathan Wakely <jwakely@redhat.com> 1639 1640 Backported from master: 1641 2020-10-07 Jonathan Wakely <jwakely@redhat.com> 1642 1643 * include/bits/random.h (__detail::_Mod): Avoid divide by zero. 1644 * testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc: 1645 New test. 1646 16472021-03-29 Jonathan Wakely <jwakely@redhat.com> 1648 1649 Backported from master: 1650 2020-09-21 Jonathan Wakely <jwakely@redhat.com> 1651 1652 * include/std/ranges (drop_view::begin()): Adjust constraints 1653 to match the correct condition for O(1) ranges::next (LWG 3482). 1654 * testsuite/std/ranges/adaptors/drop.cc: Check that iterator is 1655 cached for non-sized_range. 1656 16572021-03-29 Jonathan Wakely <jwakely@redhat.com> 1658 1659 Backported from master: 1660 2020-09-21 Jonathan Wakely <jwakely@redhat.com> 1661 1662 * include/std/ranges (transform_view, elements_view): Relax 1663 constraints on operator- for iterators, as per LWG 3483. 1664 * testsuite/std/ranges/adaptors/elements.cc: Check that we 1665 can take the difference of two iterators from a non-random 1666 access range. 1667 * testsuite/std/ranges/adaptors/transform.cc: Likewise. 1668 16692021-03-29 Jonathan Wakely <jwakely@redhat.com> 1670 1671 Backported from master: 1672 2020-10-28 Jonathan Wakely <jwakely@redhat.com> 1673 1674 PR libstdc++/95592 1675 * include/bits/valarray_after.h (_DEFINE_EXPR_UNARY_OPERATOR) 1676 (_DEFINE_EXPR_BINARY_OPERATOR, _DEFINE_EXPR_BINARY_FUNCTION): 1677 Use elaborated-type-specifier and qualified-id to avoid 1678 ambiguities with QNX system headers. 1679 * testsuite/26_numerics/valarray/95592.cc: New test. 1680 16812021-03-29 Jonathan Wakely <jwakely@redhat.com> 1682 1683 Backported from master: 1684 2020-10-27 Jonathan Wakely <jwakely@redhat.com> 1685 1686 * include/bits/locale_conv.h (__str_codecvt_out_all): 1687 Add cast to compare operands of the same signedness. 1688 * include/bits/locale_facets_nonio.tcc 1689 (time_get::_M_extract_wday_or_month): Likewise. 1690 * include/bits/sstream.tcc (basic_stringbuf::overflow): 1691 Likewise. 1692 * include/tr1/legendre_function.tcc (__sph_legendre): Use 1693 unsigned for loop variable. 1694 16952021-03-29 Jonathan Wakely <jwakely@redhat.com> 1696 1697 Backported from master: 1698 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 1699 1700 * include/bits/locale_conv.h (__do_str_codecvt, __str_codecvt_in_all): 1701 Add casts to compare types of the same signedness. 1702 17032021-03-29 Jonathan Wakely <jwakely@redhat.com> 1704 1705 Backported from master: 1706 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 1707 1708 * include/bits/ranges_algobase.h (__equal_fn): Remove unused 1709 typedef. 1710 17112021-03-29 Jonathan Wakely <jwakely@redhat.com> 1712 1713 Backported from master: 1714 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 1715 1716 * include/experimental/bits/shared_ptr.h (shared_ptr(auto_ptr&&)) 1717 (operator=(auto_ptr&&)): Add diagnostic pragmas to suppress 1718 warnings for uses of std::auto_ptr. 1719 * include/experimental/type_traits (is_literal_type_v): 1720 Likewise, for use of std::is_literal_type. 1721 * include/std/condition_variable (condition_variable_any::_Unlock): 1722 Likewise, for use of std::uncaught_exception. 1723 17242021-03-29 Jonathan Wakely <jwakely@redhat.com> 1725 1726 Backported from master: 1727 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 1728 1729 * include/bits/fs_path.h (path::_List::type()): Avoid narrowing 1730 conversion. 1731 17322021-03-29 Jonathan Wakely <jwakely@redhat.com> 1733 1734 Backported from master: 1735 2020-09-07 Jonathan Wakely <jwakely@redhat.com> 1736 1737 * include/std/ranges (__box): Simplify constraints as per LWG 3477. 1738 17392021-03-29 Jonathan Wakely <jwakely@redhat.com> 1740 1741 Backported from master: 1742 2020-08-24 Jonathan Wakely <jwakely@redhat.com> 1743 1744 * include/std/ranges (ranges::iota_view::size()): Perform all 1745 calculations in the right unsigned types. 1746 * testsuite/std/ranges/iota/size.cc: New test. 1747 17482021-03-29 Jonathan Wakely <jwakely@redhat.com> 1749 1750 Backported from master: 1751 2020-08-11 Jonathan Wakely <jwakely@redhat.com> 1752 1753 * include/experimental/executor (system_context::_M_run()): 1754 Fix predicate. 1755 (system_context::join()): Do not join unless joinable. 1756 * testsuite/experimental/net/system_context/1.cc: New test. 1757 17582021-03-29 Jonathan Wakely <jwakely@redhat.com> 1759 1760 Backported from master: 1761 2020-08-10 Jonathan Wakely <jwakely@redhat.com> 1762 1763 * include/bits/stl_iterator.h (inserter): Do not deduce 1764 iterator type (LWG 561). 1765 * testsuite/24_iterators/insert_iterator/dr561.cc: New test. 1766 17672021-03-29 Jonathan Wakely <jwakely@redhat.com> 1768 1769 Backported from master: 1770 2020-10-27 Jonathan Wakely <jwakely@redhat.com> 1771 1772 * include/bits/fs_path.h (path::_List::begin, path::_List::end): 1773 Add noexcept to match definitions in src/c++17/fs_path.cc. 1774 17752021-03-29 Jonathan Wakely <jwakely@redhat.com> 1776 1777 Backported from master: 1778 2020-10-27 Jonathan Wakely <jwakely@redhat.com> 1779 1780 * src/c++17/fs_dir.cc (fs::directory_iterator::operator*): 1781 Add noexcept. Do not throw on precondition violation. 1782 17832021-03-19 Jakub Jelinek <jakub@redhat.com> 1784 1785 Backported from master: 1786 2021-02-23 Jakub Jelinek <jakub@redhat.com> 1787 1788 PR libstdc++/99181 1789 * testsuite/21_strings/char_traits/requirements/char/99181.cc: New 1790 test. 1791 17922021-03-19 Jakub Jelinek <jakub@redhat.com> 1793 1794 Backported from master: 1795 2021-02-23 Jakub Jelinek <jakub@redhat.com> 1796 1797 PR libstdc++/99181 1798 * include/bits/char_traits.h (char_traits<char>::compare): For 1799 constexpr evaluation don't call 1800 __gnu_cxx::char_traits<char_type>::compare but do the comparison loop 1801 directly. 1802 18032021-02-09 Jonathan Wakely <jwakely@redhat.com> 1804 1805 Backported from master: 1806 2021-02-09 Jonathan Wakely <jwakely@redhat.com> 1807 1808 PR libstdc++/99021 1809 * include/std/coroutine (coroutine_handle<P>::from_address): Add 1810 noexcept. 1811 18122021-01-13 Jonathan Wakely <jwakely@redhat.com> 1813 1814 PR libstdc++/98605 1815 * include/std/mutex (call_once): Use NOLINT to suppress clang 1816 analyzer warnings. 1817 18182021-01-11 Jonathan Wakely <jwakely@redhat.com> 1819 1820 Backported from master: 1821 2020-12-02 Jonathan Wakely <jwakely@redhat.com> 1822 1823 * python/libstdcxx/v6/printers.py (StdExpPathPrinter): Store the 1824 name of the type and pass it to the iterator. 1825 (StdPathPrinter): Likewise. 1826 * testsuite/libstdc++-prettyprinters/filesystem-ts.cc: New test. 1827 18282021-01-11 Jonathan Wakely <jwakely@redhat.com> 1829 1830 Backported from master: 1831 2020-12-16 Jonathan Wakely <jwakely@redhat.com> 1832 1833 PR libstdc++/96083 1834 * include/ext/throw_allocator.h: Use __has_builtin to check for 1835 __builtin_sprintf support, and use std::sprintf if necessary. 1836 18372021-01-11 Jonathan Wakely <jwakely@redhat.com> 1838 1839 Backported from master: 1840 2020-12-02 Jonathan Wakely <jwakely@redhat.com> 1841 1842 PR libstdc++/65480 1843 PR libstdc++/68735 1844 * python/libstdcxx/v6/printers.py (function_pointer_to_name): 1845 New helper function to get the name of a function from its 1846 address. 1847 (StdExpAnyPrinter.__init__): Use it. 1848 18492021-01-11 Jonathan Wakely <jwakely@redhat.com> 1850 1851 Backported from master: 1852 2020-07-31 Jonathan Wakely <jwakely@redhat.com> 1853 1854 * testsuite/experimental/filesystem/filesystem_error/cons.cc: 1855 Remove -std=gnu++17 option. 1856 18572021-01-08 Iain Sandoe <iain@sandoe.co.uk> 1858 1859 Backported from master: 1860 2020-07-17 Iain Sandoe <iain@sandoe.co.uk> 1861 1862 * include/std/coroutine: Mark the methods of the 1863 trivial awaitables as constexpr. 1864 18652021-01-03 Iain Sandoe <iain@sandoe.co.uk> 1866 Jakub Jelinek <jakub@redhat.com> 1867 1868 PR target/97865 1869 * configure: Regenerate. 1870 18712020-12-03 Jonathan Wakely <jwakely@redhat.com> 1872 1873 Backported from master: 1874 2020-12-03 Jonathan Wakely <jwakely@redhat.com> 1875 1876 * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: 1877 Update. 1878 * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: 1879 Update. 1880 18812020-12-01 Patrick Palka <ppalka@redhat.com> 1882 1883 Backported from master: 1884 2020-10-12 Patrick Palka <ppalka@redhat.com> 1885 1886 PR libstdc++/95322 1887 * include/std/ranges (take_view::_CI): Define this alias 1888 template as per LWG 3449 and remove ... 1889 (take_view::_Sentinel::_CI): ... this type alias. 1890 (take_view::_Sentinel::operator==): Adjust use of _CI 1891 accordingly. Define a second overload that accepts an iterator 1892 of the opposite constness as per LWG 3449. 1893 (take_while_view::_Sentinel::operator==): Likewise. 1894 * testsuite/std/ranges/adaptors/95322.cc: Add tests for LWG 3449. 1895 18962020-11-26 Jonathan Wakely <jwakely@redhat.com> 1897 1898 Backported from master: 1899 2020-11-26 Jonathan Wakely <jwakely@redhat.com> 1900 1901 PR libstdc++/98001 1902 * testsuite/ext/stdio_filebuf/char/79820.cc: Do not pass invalid 1903 FILE* to constructor. 1904 19052020-11-25 Jonathan Wakely <jwakely@redhat.com> 1906 1907 Backported from master: 1908 2020-11-25 Jonathan Wakely <jwakely@redhat.com> 1909 1910 PR libstdc++/97935 1911 * include/bits/iterator_concepts.h (__detail::__iter_without_category): 1912 New helper concept. 1913 (__iterator_traits::__cat): Use __detail::__iter_without_category. 1914 * testsuite/24_iterators/associated_types/iterator.traits.cc: New test. 1915 19162020-11-25 Jonathan Wakely <jwakely@redhat.com> 1917 1918 Backported from master: 1919 2020-06-04 Jonathan Wakely <jwakely@redhat.com> 1920 1921 * include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref) 1922 (__detail::__cat, __detail::__diff): Move to class scope in the 1923 relevant __iterator_traits specializations. 1924 (__iterator_traits<>): Use nested class templates instead of ones from 1925 namespace __detail. 1926 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to 1927 class scope in iterator_traits<common_iterator<I, S>>. 1928 (iterator_traits<common_iterator<I, S>>): Use nested class template 1929 instead of __detail::__common_iter_ptr. 1930 19312020-11-24 Jonathan Wakely <jwakely@redhat.com> 1932 1933 Backported from master: 1934 2020-10-02 Jonathan Wakely <jwakely@redhat.com> 1935 1936 * testsuite/29_atomics/atomic_float/value_init.cc: Use float 1937 instead of double so that __atomic_load_8 isn't needed. 1938 19392020-11-20 Jonathan Wakely <jwakely@redhat.com> 1940 1941 Backported from master: 1942 2020-11-20 Jonathan Wakely <jwakely@redhat.com> 1943 1944 PR libstdc++/92546 1945 * include/std/regex (pmr::smatch, pmr::wsmatch): Declare using 1946 underlying __normal_iterator type, not nested typedef 1947 basic_string::const_iterator. 1948 19492020-11-20 Jonathan Wakely <jwakely@redhat.com> 1950 1951 PR libstdc++/97876 1952 * include/std/stop_token (_Stop_state_t): Define default 1953 constructor as user-provided not defaulted. 1954 19552020-11-20 Jonathan Wakely <jwakely@redhat.com> 1956 1957 Backported from master: 1958 2020-11-19 Jonathan Wakely <jwakely@redhat.com> 1959 1960 PR libstdc++/95989 1961 * config/os/gnu-linux/os_defines.h (_GLIBCXX_NATIVE_THREAD_ID): 1962 Define new macro to get reliable thread ID. 1963 * include/std/stop_token (_Stop_state_t::_M_request_stop): 1964 Use new macro if it's defined. 1965 (_Stop_state_t::_M_remove_callback): Likewise. 1966 * include/std/thread (this_thread::get_id): Likewise. 1967 * testsuite/30_threads/jthread/95989.cc: New test. 1968 * testsuite/30_threads/this_thread/95989.cc: New test. 1969 19702020-11-18 Patrick Palka <ppalka@redhat.com> 1971 1972 Backported from master: 1973 2020-11-18 Patrick Palka <ppalka@redhat.com> 1974 1975 * include/std/ranges (join_view::_Iterator::_M_satisfy): Uglify 1976 local variable inner. 1977 (join_view::_Iterator::operator->): Use _Inner_iter instead of 1978 _Outer_iter in the function signature as per LWG 3500. 1979 * testsuite/std/ranges/adaptors/join.cc (test08): Test it. 1980 19812020-11-18 Jonathan Wakely <jwakely@redhat.com> 1982 1983 Backported from master: 1984 2020-10-06 Jonathan Wakely <jwakely@redhat.com> 1985 1986 * include/std/ranges (join_view): Remove deduction guide. 1987 (views::join): Add explicit template argument list to prevent 1988 deducing the wrong type. 1989 * testsuite/std/ranges/adaptors/join.cc: Move test for LWG 3474 1990 here, from ... 1991 * testsuite/std/ranges/adaptors/join_lwg3474.cc: Removed. 1992 19932020-11-18 Jonathan Wakely <jwakely@redhat.com> 1994 1995 Backported from master: 1996 2020-08-24 Jonathan Wakely <jwakely@redhat.com> 1997 1998 * include/std/ranges (join_view): Add deduction guide (LWG 3474). 1999 * testsuite/std/ranges/adaptors/join_lwg3474.cc: New test. 2000 20012020-11-18 Jonathan Wakely <jwakely@redhat.com> 2002 2003 Backported from master: 2004 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 2005 2006 * include/std/version (__cpp_lib_array_constexpr) 2007 (__cpp_lib_constexpr_char_traits): Only define C++17 value when 2008 compiling C++17. 2009 20102020-11-18 Jonathan Wakely <jwakely@redhat.com> 2011 2012 Backported from master: 2013 2020-06-15 Jonathan Wakely <jwakely@redhat.com> 2014 2015 * include/bits/char_traits.h (__cpp_lib_constexpr_char_traits): 2016 Update value for C++20. 2017 * include/std/version (__cpp_lib_constexpr_char_traits): Likewise. 2018 * testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc: 2019 Update expected value. 2020 20212020-11-18 Jonathan Wakely <jwakely@redhat.com> 2022 2023 Backported from master: 2024 2020-11-17 Jonathan Wakely <jwakely@redhat.com> 2025 2026 PR libstdc++/97869 2027 * include/precompiled/stdc++.h: Include <coroutine>. 2028 * include/std/version (__cpp_lib_span): Check __cpp_lib_concepts 2029 before defining. 2030 20312020-11-17 Patrick Palka <ppalka@redhat.com> 2032 2033 Backported from master: 2034 2020-11-17 Patrick Palka <ppalka@redhat.com> 2035 2036 PR libstdc++/97828 2037 * include/bits/ranges_algo.h (__search_n_fn::operator()): Check 2038 random_access_iterator before using the backtracking 2039 implementation. When the backwards scan fails prematurely, 2040 reset __remainder appropriately. 2041 * testsuite/25_algorithms/search_n/97828.cc: New test. 2042 20432020-11-16 Jonathan Wakely <jwakely@redhat.com> 2044 2045 Backported from master: 2046 2020-11-13 Jonathan Wakely <jwakely@redhat.com> 2047 2048 PR libstdc++/93456 2049 * src/c++11/futex.cc (relative_timespec): Remove redundant check 2050 negative values. 2051 * testsuite/30_threads/future/members/93456.cc: New. 2052 20532020-11-16 Jonathan Wakely <jwakely@redhat.com> 2054 2055 Backported from master: 2056 2020-11-16 Jonathan Wakely <jwakely@redhat.com> 2057 2058 * src/c++11/futex.cc (relative_timespec): New function to 2059 create relative time from two absolute times. 2060 (__atomic_futex_unsigned_base::_M_futex_wait_until): Use 2061 relative_timespec. 2062 20632020-11-16 Jonathan Wakely <jwakely@redhat.com> 2064 2065 Backported from master: 2066 2020-11-12 Jonathan Wakely <jwakely@redhat.com> 2067 2068 * include/std/future (future::wait_for): Do not wait for 2069 durations less than or equal to zero. 2070 * testsuite/30_threads/future/members/poll.cc: New test. 2071 20722020-11-13 Jonathan Wakely <jwakely@redhat.com> 2073 2074 Backported from master: 2075 2020-11-13 Jonathan Wakely <jwakely@redhat.com> 2076 2077 PR libstdc++/97798 2078 * include/ext/numeric_traits.h (__glibcxx_signed) 2079 (__glibcxx_digits, __glibcxx_min, __glibcxx_max): Remove 2080 macros. 2081 (__is_integer_nonstrict::__width): Define new constant. 2082 (__numeric_traits_integer): Define constants in terms of each 2083 other and __is_integer_nonstrict::__width, rather than the 2084 removed macros. 2085 (_GLIBCXX_INT_N_TRAITS): Macro to define explicit 2086 specializations for non-standard integer types. 2087 20882020-11-13 Jonathan Wakely <jwakely@redhat.com> 2089 2090 PR libstdc++/96042 2091 * testsuite/std/ranges/iota/96042.cc: Only assert that the 2092 difference type is wider than long long if __int128 is 2093 supported. 2094 20952020-11-12 Jonathan Wakely <jwakely@redhat.com> 2096 2097 Backported from master: 2098 2020-08-20 Jonathan Wakely <jwakely@redhat.com> 2099 2100 * include/bits/iterator_concepts.h [__STRICT_ANSI__] 2101 (incrementable_traits<__int128>): Define specialization. 2102 (incrementable_traits<unsigned __int128>): Likewise. 2103 * testsuite/std/ranges/iota/96042.cc: Test iota_view with 2104 __int128. 2105 21062020-11-12 Jonathan Wakely <jwakely@redhat.com> 2107 2108 Backported from master: 2109 2020-08-19 Jonathan Wakely <jwakely@redhat.com> 2110 Patrick Palka <ppalka@redhat.com> 2111 2112 PR libstdc++/96042 2113 * include/bits/range_access.h (__detail::__to_unsigned_like): 2114 Do not use make_unsigned_t<T> in the return type, as it can 2115 result in an error before the integral<T> constraint is checked. 2116 [__STRICT_ANSI__]: Add overloads for 128-bit integer types. 2117 (__detail::__make_unsigned_like_t): Define as the return type 2118 of __to_unsigned_like. 2119 * testsuite/std/ranges/subrange/96042.cc: New test. 2120 21212020-11-12 Jonathan Wakely <jwakely@redhat.com> 2122 2123 Backported from master: 2124 2020-08-19 Jonathan Wakely <jwakely@redhat.com> 2125 2126 PR libstdc++/96042 2127 * include/ext/numeric_traits.h (__is_integer_nonstrict): New 2128 trait which is true for 128-bit integers even in strict modes. 2129 (__numeric_traits_integer, __numeric_traits): Use 2130 __is_integer_nonstrict instead of __is_integer. 2131 * include/std/limits [__STRICT_ANSI__ && __SIZEOF_INT128__] 2132 (numeric_limits<__int128>, (numeric_limits<unsigned __int128>): 2133 Define. 2134 * testsuite/std/ranges/iota/96042.cc: New test. 2135 21362020-11-11 Paul Scharnofske <asynts@gmail.com> 2137 2138 Backported from master: 2139 2020-11-11 Paul Scharnofske <asynts@gmail.com> 2140 2141 * include/std/thread (jthread::operator=(jthread&&)): Transfer 2142 any existing state to a temporary that will request a stop and 2143 then join. 2144 * testsuite/30_threads/jthread/jthread.cc: Test move assignment. 2145 21462020-11-05 Jonathan Wakely <jwakely@redhat.com> 2147 2148 Backported from master: 2149 2020-11-05 Jonathan Wakely <jwakely@redhat.com> 2150 2151 PR libstdc++/96269 2152 * include/std/optional (operator==, operator!=, operator<) 2153 (operator>, operator<=, operator>=): Fix types used in 2154 SFINAE constraints. 2155 * testsuite/20_util/optional/relops/96269.cc: New test. 2156 21572020-11-05 Jonathan Wakely <jwakely@redhat.com> 2158 2159 Backported from master: 2160 2020-11-05 Jonathan Wakely <jwakely@redhat.com> 2161 2162 PR libstdc++/97731 2163 * src/filesystem/dir.cc (recursive_directory_iterator): Call the 2164 right overload of _Dir::advance. 2165 * testsuite/experimental/filesystem/iterators/97731.cc: New test. 2166 21672020-11-05 Jonathan Wakely <jwakely@redhat.com> 2168 2169 Backported from master: 2170 2020-10-10 Jonathan Wakely <jwakely@redhat.com> 2171 2172 PR libstdc++/97362 2173 * doc/html/manual/source_code_style.html: Regenerate. 2174 * doc/xml/manual/appendix_contributing.xml: Add __deref to 2175 BADNAMES. 2176 * include/debug/functions.h (_Irreflexive_checker::__deref): 2177 Rename to __ref. 2178 * testsuite/17_intro/badnames.cc: Check __deref. 2179 21802020-11-04 Jonathan Wakely <jwakely@redhat.com> 2181 2182 Backported from master: 2183 2020-11-04 Jonathan Wakely <jwakely@redhat.com> 2184 2185 PR libstdc++/92285 2186 * doc/xml/manual/evolution.xml: Document change to base class. 2187 * doc/html/manual/api.html: Regenerate. 2188 21892020-11-04 Jonathan Wakely <jwakely@redhat.com> 2190 2191 * doc/xml/manual/evolution.xml: Document new C++20 headers. 2192 * doc/html/*: Regenerate. 2193 21942020-11-04 Jonathan Wakely <jwakely@redhat.com> 2195 2196 Backported from master: 2197 2020-06-01 Jonathan Wakely <jwakely@redhat.com> 2198 2199 * doc/xml/manual/evolution.xml: Document deprecation of 2200 __is_nullptr_t and removal of std::allocator members. 2201 * doc/html/manual/api.html: Regenerate. 2202 22032020-11-04 Jonathan Wakely <jwakely@redhat.com> 2204 2205 Backported from master: 2206 2020-06-01 Jonathan Wakely <jwakely@redhat.com> 2207 2208 * doc/xml/manual/containers.xml: Replace <xref> with <link>. 2209 * doc/xml/manual/evolution.xml: Likewise. 2210 * doc/html/manual/api.html: Regenerate. 2211 * doc/html/manual/containers.html: Regenerate. 2212 22132020-10-29 Patrick Palka <ppalka@redhat.com> 2214 2215 Backported from master: 2216 2020-10-29 Patrick Palka <ppalka@redhat.com> 2217 2218 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: 2219 (test03): Fix initializing the vector vy with the array y of size 4. 2220 22212020-10-28 Patrick Palka <ppalka@redhat.com> 2222 2223 Backported from master: 2224 2020-10-23 Patrick Palka <ppalka@redhat.com> 2225 2226 * include/std/ranges (single_view::single_view): Mark the 2227 in place constructor explicit as per LWG 3428. 2228 (take_view): Remove the constraint on the deduction guide's 2229 template parameter as per LWG 3447. 2230 22312020-10-21 Patrick Palka <ppalka@redhat.com> 2232 2233 Backported from master: 2234 2020-09-22 Patrick Palka <ppalka@redhat.com> 2235 2236 * include/std/span (span::front): Remove static_assert. 2237 (span::back): Likewise. 2238 (span::operator[]): Likewise. 2239 * testsuite/23_containers/span/back_neg.cc: Rewrite to verify 2240 that we check the preconditions of back() only when it's called. 2241 * testsuite/23_containers/span/front_neg.cc: Likewise for 2242 front(). 2243 * testsuite/23_containers/span/index_op_neg.cc: Likewise for 2244 operator[]. 2245 22462020-10-21 Patrick Palka <ppalka@redhat.com> 2247 2248 Backported from master: 2249 2020-10-12 Patrick Palka <ppalka@redhat.com> 2250 2251 * include/std/ranges (take_while_view::begin): Constrain the 2252 const overload further as per LWG 3450. 2253 (take_while_view::end): Likewise. 2254 * testsuite/std/ranges/adaptors/take_while.cc: Add test for LWG 2255 3450. 2256 22572020-10-21 Patrick Palka <ppalka@redhat.com> 2258 2259 Backported from master: 2260 2020-09-22 Patrick Palka <ppalka@redhat.com> 2261 2262 * include/bits/stl_algo.h (__sample): Exit early when the 2263 input range is empty. 2264 * testsuite/25_algorithms/sample/3.cc: New test. 2265 22662020-10-21 Patrick Palka <ppalka@redhat.com> 2267 2268 Backported from master: 2269 2020-09-22 Patrick Palka <ppalka@redhat.com> 2270 2271 * include/bits/stl_algo.h (for_each_n): Mark constexpr for C++20. 2272 (search): Likewise for the overload that takes a searcher. 2273 * testsuite/25_algorithms/for_each/constexpr.cc: Test constexpr 2274 std::for_each_n. 2275 * testsuite/25_algorithms/search/constexpr.cc: Test constexpr 2276 std::search overload that takes a searcher. 2277 22782020-10-21 Patrick Palka <ppalka@redhat.com> 2279 2280 Backported from master: 2281 2020-08-27 Patrick Palka <ppalka@redhat.com> 2282 2283 PR libstdc++/95322 2284 * include/std/ranges (transform_view::sentinel::__distance_from): 2285 Give this a deduced return type. 2286 (transform_view::sentinel::operator-): Adjust the return type so 2287 that it's based on the constness of the iterator rather than 2288 that of the sentinel. 2289 * testsuite/std/ranges/adaptors/95322.cc: Refer to LWG 3488. 2290 22912020-10-21 Patrick Palka <ppalka@redhat.com> 2292 2293 Backported from master: 2294 2020-08-27 Patrick Palka <ppalka@redhat.com> 2295 2296 * include/std/ranges (elements_view::begin): Adjust constraints. 2297 (elements_view::end): Likewise. 2298 (elements_view::_Sentinel::operator==): Templatize to take both 2299 _Iterator<true> and _Iterator<false>. 2300 (elements_view::_Sentinel::operator-): Likewise. 2301 * testsuite/std/ranges/adaptors/elements.cc: Add testcase for 2302 the example from P1994R1. 2303 * testsuite/std/ranges/adaptors/lwg3406.cc: New test. 2304 23052020-10-21 Patrick Palka <ppalka@redhat.com> 2306 2307 Backported from master: 2308 2020-08-27 Patrick Palka <ppalka@redhat.com> 2309 2310 * include/std/ranges (elements_view::end): Replace these two 2311 overloads with four new overloads. 2312 (elements_view::_Iterator::operator==): Remove. 2313 (elements_view::_Iterator::operator-): Likewise. 2314 (elements_view::_Sentinel): Define. 2315 23162020-10-20 Jonathan Wakely <jwakely@redhat.com> 2317 2318 Backported from master: 2319 2020-08-10 Jonathan Wakely <jwakely@redhat.com> 2320 2321 * python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): 2322 Use gdb.Type.strip_typedefs(). 2323 * testsuite/libstdc++-prettyprinters/compat.cc: Use a typedef in 2324 the emulated old type. 2325 23262020-10-20 Jonathan Wakely <jwakely@redhat.com> 2327 2328 Backported from master: 2329 2020-10-14 Jonathan Wakely <jwakely@redhat.com> 2330 2331 * include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI] 2332 (basic_string(const _CharT*, const _Alloc&)): Constrain to 2333 require an allocator-like type to fix CTAD ambiguity (LWG 3706). 2334 Define inline. 2335 * include/bits/basic_string.tcc [!_GLIBCXX_USE_CXX11_ABI] 2336 (basic_string(const _CharT*, const _Alloc&)): Remove non-inline 2337 definition. 2338 * testsuite/21_strings/basic_string/cons/char/deduction.cc: 2339 Remove dg-skip-if. 2340 * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: 2341 Likewise. 2342 23432020-10-20 Jonathan Wakely <jwakely@redhat.com> 2344 2345 Backported from master: 2346 2020-10-14 Jonathan Wakely <jwakely@redhat.com> 2347 2348 * testsuite/21_strings/basic_string/allocator/char/minimal.cc: 2349 Do not require cxx11-abi effective target. 2350 * testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc: 2351 Likewise. 2352 * testsuite/27_io/basic_fstream/cons/base.cc: Likewise. 2353 23542020-10-20 Jonathan Wakely <jwakely@redhat.com> 2355 2356 Backported from master: 2357 2020-10-08 Jonathan Wakely <jwakely@redhat.com> 2358 2359 * include/bits/ios_base.h (ios_base::failure): Add constructors 2360 takeing error_code argument. Add code() member function. 2361 * testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to 2362 run for the old ABI but do not check for derivation from 2363 std::system_error. 2364 * testsuite/27_io/ios_base/failure/error_code.cc: New test. 2365 23662020-10-20 Nuno Lopes <nuno.lopes@ist.utl.pt> 2367 2368 Backported from master: 2369 2020-10-13 Nuno Lopes <nuno.lopes@ist.utl.pt> 2370 2371 * include/bits/stl_algo.h (any_of): Fix incorrect description 2372 in comment. 2373 23742020-10-20 Jonathan Wakely <jwakely@redhat.com> 2375 2376 Backported from master: 2377 2020-10-12 Jonathan Wakely <jwakely@redhat.com> 2378 2379 * include/bits/stl_algobase.h (copy, move, copy_backward) 2380 (move_backward): Fix documentation for returned iterator. 2381 23822020-10-20 Jonathan Wakely <jwakely@redhat.com> 2383 2384 Backported from master: 2385 2020-09-24 Jonathan Wakely <jwakely@redhat.com> 2386 2387 * doc/xml/manual/configure.xml: Correct name of option. 2388 * doc/html/*: Regenerate. 2389 23902020-10-19 Jonathan Wakely <jwakely@redhat.com> 2391 2392 Backported from master: 2393 2020-09-21 Jonathan Wakely <jwakely@redhat.com> 2394 2395 PR libstdc++/97132 2396 * include/std/memory (assume_aligned): Do not use 2397 __builtin_assume_aligned during constant evaluation. 2398 * testsuite/20_util/assume_aligned/1.cc: Improve test. 2399 * testsuite/20_util/assume_aligned/97132.cc: New test. 2400 24012020-10-15 Jonathan Wakely <jwakely@redhat.com> 2402 2403 Backported from master: 2404 2020-10-15 Jonathan Wakely <jwakely@redhat.com> 2405 2406 * include/std/concepts: Fix typos in copyright notice. 2407 * include/std/ranges: Likewise. 2408 24092020-10-15 Jonathan Wakely <jwakely@redhat.com> 2410 2411 * doc/xml/manual/status_cxx2020.xml: Remove red background for 2412 completed feature. 2413 * doc/html/manual/status.html: Regenerate. 2414 24152020-10-13 Patrick Palka <ppalka@redhat.com> 2416 2417 Backported from master: 2418 2020-10-08 Patrick Palka <ppalka@redhat.com> 2419 2420 PR libstdc++/95788 2421 * include/bits/ranges_uninitialized.h: 2422 (__construct_at_fn::operator()): Rewrite in terms of 2423 std::construct_at. Declare it conditionally noexcept. Qualify 2424 calls to declval in its requires-clause. 2425 * testsuite/20_util/specialized_algorithms/construct_at/95788.cc: 2426 New test. 2427 24282020-10-08 Jonathan Wakely <jwakely@redhat.com> 2429 2430 Backported from master: 2431 2020-10-07 Jonathan Wakely <jwakely@redhat.com> 2432 2433 * include/bits/random.h (seed_seq(initializer_list<T>)): Rename 2434 parameter to use reserved name. 2435 * include/bits/ranges_algo.h (shift_left, shift_right): Rename 2436 template parameters to use reserved name. 2437 * testsuite/17_intro/names.cc: Check "il". Do not check "d" and 2438 "y" in C++20 mode. 2439 24402020-10-06 Patrick Palka <ppalka@redhat.com> 2441 2442 Backported from master: 2443 2020-10-02 Patrick Palka <ppalka@redhat.com> 2444 2445 * include/bits/stl_iterator.h (reverse_iterator::iter_move): 2446 Define for C++20 as per P0896. 2447 (reverse_iterator::iter_swap): Likewise. 2448 (move_iterator::operator*): Apply P0896 changes for C++20. 2449 (move_iterator::operator[]): Likewise. 2450 * testsuite/24_iterators/reverse_iterator/cust.cc: New test. 2451 24522020-09-22 Jonathan Wakely <jwakely@redhat.com> 2453 2454 Backported from master: 2455 2020-09-22 Jonathan Wakely <jwakely@redhat.com> 2456 2457 PR libstdc++/97167 2458 * src/c++17/fs_path.cc (path::_Parser::root_path()): Check 2459 for empty string before inspecting the first character. 2460 * testsuite/27_io/filesystem/path/append/source.cc: Append 2461 empty string_view to path. 2462 24632020-09-22 Jonathan Wakely <jwakely@redhat.com> 2464 2465 Backported from master: 2466 2020-09-22 Jonathan Wakely <jwakely@redhat.com> 2467 2468 PR libstdc++/96803 2469 * include/std/tuple 2470 (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)): 2471 Use correct value category in __use_alloc call. 2472 * testsuite/20_util/tuple/cons/96803.cc: Check with constructors 2473 that require correct value category to be used. 2474 24752020-09-22 Jonathan Wakely <jwakely@redhat.com> 2476 2477 Backported from master: 2478 2020-08-26 Jonathan Wakely <jwakely@redhat.com> 2479 2480 PR libstdc++/96803 2481 * include/std/tuple 2482 (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl<U...>&)): 2483 Replace parameter pack with a type parameter and a pack and pass 2484 the first type to __use_alloc. 2485 * testsuite/20_util/tuple/cons/96803.cc: New test. 2486 24872020-09-21 Jonathan Wakely <jwakely@redhat.com> 2488 2489 Backported from master: 2490 2020-08-10 Jonathan Wakely <jwakely@redhat.com> 2491 2492 PR libstdc++/94681 2493 * src/c++17/fs_ops.cc (read_symlink): Use posix::lstat instead 2494 of calling ::lstat directly. 2495 * src/filesystem/ops.cc (read_symlink): Likewise. 2496 24972020-09-21 Jonathan Wakely <jwakely@redhat.com> 2498 2499 Backported from master: 2500 2020-08-10 Jonathan Wakely <jwakely@redhat.com> 2501 2502 PR libstdc++/94681 2503 * acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Do not depend on 2504 $enable_libstdcxx_filesystem_ts. 2505 * configure: Regenerate. 2506 25072020-09-21 Jonathan Wakely <jwakely@redhat.com> 2508 2509 Backported from master: 2510 2020-09-20 Jonathan Wakely <jwakely@redhat.com> 2511 2512 PR libstdc++/97101 2513 * include/std/functional (bind_front): Fix order of parameters 2514 in is_nothrow_constructible_v specialization. 2515 * testsuite/20_util/function_objects/bind_front/97101.cc: New test. 2516 25172020-09-21 Jonathan Wakely <jwakely@redhat.com> 2518 2519 Backported from master: 2520 2020-09-10 Jonathan Wakely <jwakely@redhat.com> 2521 2522 PR libstdc++/94160 2523 * src/c++17/memory_resource.cc (munge_options): Round 2524 max_blocks_per_chunk to a multiple of four. 2525 (__pool_resource::_M_alloc_pools()): Simplify slightly. 2526 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: 2527 Check that valid pointers are returned when small values are 2528 used for max_blocks_per_chunk. 2529 25302020-09-03 Jonathan Wakely <jwakely@redhat.com> 2531 2532 Backported from master: 2533 2020-07-07 Jonathan Wakely <jwakely@redhat.com> 2534 2535 * include/Makefile.am: Remove bits/int_limits.h. 2536 * include/Makefile.in: Regenerate. 2537 * include/bits/int_limits.h: Removed. 2538 * include/bits/parse_numbers.h (_Select_int_base): Replace 2539 __int_limits with __int_traits. 2540 * include/bits/range_access.h (_SSize::operator()): Likewise. 2541 * include/ext/numeric_traits.h (__numeric_traits_integer): Add 2542 static assertion. 2543 (__int_traits): New alias template. 2544 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one) 2545 (__countr_zero, __countr_one, __popcount, __bit_ceil) 2546 (__bit_floor, __bit_width) Replace __int_limits with 2547 __int_traits. 2548 * include/std/charconv (__to_chars_8, __from_chars_binary) 2549 (__from_chars_alpha_to_num, from_chars): Likewise. 2550 * include/std/memory_resource (polymorphic_allocator::allocate) 2551 (polymorphic_allocator::allocate_object): Likewise. 2552 * include/std/string_view (basic_string_view::_S_compare): 2553 Likewise. 2554 * include/std/utility (cmp_equal, cmp_less, in_range): Likewise. 2555 25562020-09-02 Jonathan Wakely <jwakely@redhat.com> 2557 2558 Backported from master: 2559 2020-08-28 Jonathan Wakely <jwakely@redhat.com> 2560 2561 PR libstdc++/92978 2562 * include/std/numeric (__abs_integral): Replace with ... 2563 (__detail::__absu): New function template that returns an 2564 unsigned type, guaranteeing it can represent the most 2565 negative signed value. 2566 (__detail::__gcd, __detail::__lcm): Require arguments to 2567 be unsigned and therefore already non-negative. 2568 (gcd, lcm): Convert arguments to absolute value as unsigned 2569 type before calling __detail::__gcd or __detail::__lcm. 2570 * include/experimental/numeric (gcd, lcm): Likewise. 2571 * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected 2572 errors. 2573 * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise. 2574 * testsuite/26_numerics/gcd/92978.cc: New test. 2575 * testsuite/26_numerics/lcm/92978.cc: New test. 2576 * testsuite/experimental/numeric/92978.cc: New test. 2577 25782020-09-02 Jonathan Wakely <jwakely@redhat.com> 2579 2580 Backported from master: 2581 2020-09-02 Jonathan Wakely <jwakely@redhat.com> 2582 2583 PR libstdc++/96851 2584 * include/bits/cpp_type_traits.h (__is_memcmp_ordered): 2585 New trait that says if memcmp can be used for ordering. 2586 (__is_memcmp_ordered_with): Likewise, for two types. 2587 * include/bits/ranges_algo.h (__lexicographical_compare_fn): 2588 Use new traits instead of __is_byte and __numeric_traits. 2589 * include/bits/stl_algobase.h (__lexicographical_compare_aux1) 2590 (__is_byte_iter): Likewise. 2591 * include/std/array (operator<=>): Likewise. Only use memcmp 2592 when std::is_constant_evaluated() is false. 2593 * testsuite/23_containers/array/comparison_operators/96851.cc: 2594 New test. 2595 * testsuite/23_containers/array/tuple_interface/get_neg.cc: 2596 Adjust dg-error line numbers. 2597 25982020-09-02 Jonathan Wakely <jwakely@redhat.com> 2599 2600 * include/bits/stl_iterator.h (counted_iterator::operator++(int)): 2601 Use __throw_exception_again macro. 2602 26032020-08-26 Jonathan Wakely <jwakely@redhat.com> 2604 2605 Backported from master: 2606 2020-08-26 Jonathan Wakely <jwakely@redhat.com> 2607 2608 PR libstdc++/71960 2609 * include/experimental/string_view (basic_string_view): 2610 Enable debug assertions. 2611 * include/std/string_view (basic_string_view): 2612 Likewise. 2613 26142020-08-26 Jonathan Wakely <jwakely@redhat.com> 2615 2616 Backported from master: 2617 2020-08-24 Jonathan Wakely <jwakely@redhat.com> 2618 2619 PR libstdc++/96766 2620 * include/std/variant (_Variant_storage): Replace implicit 2621 conversions from size_t to __index_type with explicit casts. 2622 26232020-08-21 Jonathan Wakely <jwakely@redhat.com> 2624 2625 Backported from master: 2626 2020-08-21 Jonathan Wakely <jwakely@redhat.com> 2627 2628 PR libstdc++/96718 2629 * testsuite/25_algorithms/pstl/feature_test-2.cc: Require 2630 tbb-backend effective target. 2631 * testsuite/25_algorithms/pstl/feature_test-3.cc: Likewise. 2632 * testsuite/25_algorithms/pstl/feature_test-5.cc: Likewise. 2633 * testsuite/25_algorithms/pstl/feature_test.cc: Likewise. 2634 26352020-08-19 Jonathan Wakely <jwakely@redhat.com> 2636 2637 Backported from master: 2638 2020-08-19 Jonathan Wakely <jwakely@redhat.com> 2639 2640 * include/bits/c++config (_GLIBCXX_DEPRECATED_SUGGEST): New 2641 macro for "use 'foo' instead" message in deprecated warnings. 2642 * include/bits/ios_base.h (io_state, open_mode, seek_dir) 2643 (streampos, streamoff): Use _GLIBCXX_DEPRECATED_SUGGEST. 2644 * include/std/streambuf (stossc): Replace C++11 attribute 2645 with _GLIBCXX_DEPRECATED_SUGGEST. 2646 * include/std/type_traits (__is_nullptr_t): Use 2647 _GLIBCXX_DEPRECATED_SUGGEST instead of _GLIBCXX_DEPRECATED. 2648 * testsuite/27_io/types/1.cc: Check for deprecated warnings. 2649 Also check for io_state, open_mode and seek_dir typedefs. 2650 26512020-08-11 Jonathan Wakely <jwakely@redhat.com> 2652 2653 PR libstdc++/89760 2654 * testsuite/experimental/net/execution_context/make_service.cc: 2655 Add dg-require-gthreads. 2656 * testsuite/experimental/net/executor/1.cc: Likewise. 2657 * testsuite/experimental/net/headers.cc: Likewise. 2658 * testsuite/experimental/net/internet/address/v4/comparisons.cc: 2659 Likewise. 2660 * testsuite/experimental/net/internet/address/v4/cons.cc: 2661 Likewise. 2662 * testsuite/experimental/net/internet/address/v4/creation.cc: 2663 Likewise. 2664 * testsuite/experimental/net/internet/address/v4/members.cc: 2665 Likewise. 2666 * testsuite/experimental/net/internet/resolver/base.cc: 2667 Likewise. 2668 * testsuite/experimental/net/internet/resolver/ops/lookup.cc: 2669 Likewise. 2670 * testsuite/experimental/net/internet/resolver/ops/reverse.cc: 2671 Likewise. 2672 * testsuite/experimental/net/socket/basic_socket.cc: Likewise. 2673 * testsuite/experimental/net/timer/waitable/cons.cc: Likewise. 2674 * testsuite/experimental/net/timer/waitable/dest.cc: Likewise. 2675 * testsuite/experimental/net/timer/waitable/ops.cc: Likewise. 2676 26772020-08-10 Jonathan Wakely <jwakely@redhat.com> 2678 2679 Backported from master: 2680 2020-08-10 Jonathan Wakely <jwakely@redhat.com> 2681 2682 PR libstdc++/95749 2683 * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS] 2684 (stat_type): Change to __stat64. 2685 (stat): Use _wstat64. 2686 26872020-08-07 Jonathan Wakely <jwakely@redhat.com> 2688 2689 Backported from master: 2690 2020-08-07 Jonathan Wakely <jwakely@redhat.com> 2691 2692 PR libstdc++/96303 2693 * include/debug/bitset (bitset::operator==): Call _M_base() on 2694 right operand. 2695 (bitset::operator!=): Likewise, but don't define it at all when 2696 default comparisons are supported by the compiler. 2697 * testsuite/23_containers/bitset/operations/96303.cc: New test. 2698 26992020-08-06 Jonathan Wakely <jwakely@redhat.com> 2700 2701 Backported from master: 2702 2020-08-06 Jonathan Wakely <jwakely@redhat.com> 2703 2704 PR libstdc++/96484 2705 * src/c++17/fs_ops.cc (fs::read_symlink): Return an error 2706 immediately for non-symlinks. 2707 * src/filesystem/ops.cc (fs::read_symlink): Likewise. 2708 27092020-07-23 Release Manager 2710 2711 * GCC 10.2.0 released. 2712 27132020-07-09 Jonathan Wakely <jwakely@redhat.com> 2714 2715 Backported from master: 2716 2020-06-08 Jonathan Wakely <jwakely@redhat.com> 2717 2718 * include/bits/unique_ptr.h (operator<<): Define for C++20. 2719 * testsuite/20_util/unique_ptr/io/lwg2948.cc: New test. 2720 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error 2721 line number. 2722 * testsuite/20_util/default_delete/void_neg.cc: Likewise. 2723 27242020-07-09 Jonathan Wakely <jwakely@redhat.com> 2725 2726 Backported from master: 2727 2020-05-27 Jonathan Wakely <jwakely@redhat.com> 2728 2729 PR libstdc++/95322 2730 * include/std/ranges (transform_view::_Sentinel): Allow hidden 2731 friends to work with _Iterator<true> and _Iterator<false>. 2732 (join_view::_Sentinel): Likewise. 2733 * testsuite/std/ranges/adaptors/95322.cc: New test. 2734 27352020-07-09 Jonathan Wakely <jwakely@redhat.com> 2736 2737 Backported from master: 2738 2020-05-04 Jonathan Wakely <jwakely@redhat.com> 2739 2740 PR libstdc++/94936 2741 * src/c++17/memory_resource.cc (synchronized_pool_resource::_TPools): 2742 Add comment about single-threaded behaviour. 2743 (synchronized_pool_resource::_TPools::move_nonempty_chunks()): Hoist 2744 class member access out of loop. 2745 (synchronized_pool_resource::synchronized_pool_resource()) 2746 (synchronized_pool_resource::~synchronized_pool_resource()) 2747 (synchronized_pool_resource::release()): Check __gthread_active_p 2748 before creating and/or deleting the thread-specific data key. 2749 (synchronized_pool_resource::_M_thread_specific_pools()): Adjust 2750 assertions. 2751 (synchronized_pool_resource::do_allocate(size_t, size_t)): Add fast 2752 path for single-threaded case. 2753 (synchronized_pool_resource::do_deallocate(void*, size_t, size_t)): 2754 Likewise. Return if unable to find a pool that owns the allocation. 2755 * testsuite/20_util/synchronized_pool_resource/allocate_single.cc: 2756 New test. 2757 * testsuite/20_util/synchronized_pool_resource/cons_single.cc: New 2758 test. 2759 * testsuite/20_util/synchronized_pool_resource/release_single.cc: New 2760 test. 2761 27622020-07-09 Jonathan Wakely <jwakely@redhat.com> 2763 2764 Backported from master: 2765 2020-05-19 Jonathan Wakely <jwakely@redhat.com> 2766 2767 PR libstdc++/94087 2768 * src/c++11/random.cc (__x86_rdseed): Allow fallback function to be 2769 passed in. 2770 (__x86_rdseed_rdrand): New function that uses rdseed with rdrand 2771 fallback. 2772 (random_device::_M_init): Use __x86_rdseed_rdrand when both 2773 instructions are available. 2774 * testsuite/26_numerics/random/random_device/94087.cc: New test. 2775 27762020-07-02 Ville Voutilainen <ville.voutilainen@gmail.com> 2777 2778 Backported from master: 2779 2020-07-02 Ville Voutilainen <ville.voutilainen@gmail.com> 2780 2781 PR libstdc++/91807 2782 * include/std/variant 2783 (_Copy_assign_base::operator=(const _Copy_assign_base&): 2784 Do the move-assignment from a temporary so that the temporary 2785 is constructed with an explicit index. 2786 * testsuite/20_util/variant/91807.cc: New. 2787 27882020-07-02 Jonathan Wakely <jwakely.gcc@gmail.com> 2789 2790 Backported from master: 2791 2020-07-02 Jonathan Wakely <jwakely.gcc@gmail.com> 2792 2793 PR libstdc++/91153 2794 PR target/93224 2795 * testsuite/29_atomics/atomic_float/1.cc: Use different values 2796 for tests. 2797 * testsuite/29_atomics/atomic_ref/float.cc: Likewise. 2798 27992020-07-01 Jonathan Wakely <jwakely@redhat.com> 2800 2801 Backported from master: 2802 2020-06-16 Jonathan Wakely <jwakely@redhat.com> 2803 2804 PR libstdc++/95282 2805 * include/bits/atomic_base.h (__atomic_impl::load): Add 2806 const-qualifier to parameter so that _Tp is deduced as the 2807 non-const type, and use _Val to get the unqualified type. 2808 (__atomic_impl::exchange): Use the _Val alias to remove 2809 volatile from the reinterpret_cast result type. 2810 * testsuite/29_atomics/atomic_float/95282.cc: New test. 2811 28122020-07-01 Jonathan Wakely <jwakely@redhat.com> 2813 2814 Backported from master: 2815 2020-07-01 Jonathan Wakely <jwakely@redhat.com> 2816 2817 PR libstdc++/94627 2818 * include/bits/regex.h (operator==, operator!=): Remove noexcept 2819 equality comparisons for match_results. 2820 * testsuite/28_regex/match_results/94627.cc: New test. 2821 28222020-06-29 Ville Voutilainen <ville.voutilainen@gmail.com> 2823 2824 Backported from master: 2825 2020-06-28 Ville Voutilainen <ville.voutilainen@gmail.com> 2826 2827 PR libstdc++/95915 2828 * include/std/variant (_Uninitialized): 2829 Adjust the condition and the comment. 2830 * testsuite/20_util/variant/95915.cc: New. 2831 * testsuite/20_util/variant/compile.cc: Add new test. 2832 28332020-06-24 Jonathan Wakely <jwakely@redhat.com> 2834 2835 Backported from master: 2836 2020-06-24 Jonathan Wakely <jwakely@redhat.com> 2837 2838 * include/std/charconv (__from_chars_binary): Ignore leading zeros. 2839 * testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases, 2840 not just 10 and 16. 2841 * testsuite/20_util/from_chars/3.cc: New test. 2842 28432020-06-24 Jonathan Wakely <jwakely@redhat.com> 2844 2845 Backported from master: 2846 2020-06-24 Jonathan Wakely <jwakely@redhat.com> 2847 2848 * include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers. 2849 * include/std/charconv (__detail::__to_chars): Avoid 2850 -Wsign-compare warning. 2851 28522020-06-24 Jonathan Wakely <jwakely@redhat.com> 2853 2854 Backported from master: 2855 2020-06-24 Jonathan Wakely <jwakely@redhat.com> 2856 2857 PR libstdc++/95851 2858 * include/std/charconv (__to_chars_i): Check for zero-sized 2859 buffer unconditionally. 2860 * testsuite/20_util/to_chars/95851.cc: New test. 2861 28622020-06-22 Jason Merrill <jason@redhat.com> 2863 2864 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: 2865 Remove greedy_ops tests. 2866 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: 2867 Remove greedy_ops tests. 2868 28692020-06-11 Patrick Palka <ppalka@redhat.com> 2870 2871 PR libstdc++/95578 2872 * include/bits/ranges_algo.h (__lexicographical_compare_fn): 2873 Also check that the iterator and sentinel have the same type before 2874 applying the unwrapping optimization for __normal_iterator. 2875 Split the check into two, one for the first iterator/sentinel 2876 pair and another for second iterator/sentinel pair. Remove uses 2877 of __niter_base, and remove uses of std::move on a 2878 __normal_iterator. 2879 * include/bits/ranges_algobase.h (__equal_fn): Likewise. 2880 (__copy_or_move): Likewise. Perform similar adjustments for 2881 the reverse_iterator and move_iterator optimizations. Inline 2882 the checks into the if-constexprs, and use using-declarations to 2883 make them less visually noisy. Remove uses of __niter_wrap. 2884 (__copy_or_move_backward): Likewise. 2885 * testsuite/25_algorithms/copy/95578.cc: New test. 2886 * testsuite/25_algorithms/copy_backward/95578.cc: New test. 2887 * testsuite/25_algorithms/equal/95578.cc: New test. 2888 * testsuite/25_algorithms/lexicographical_compare/95578.cc: New test. 2889 * testsuite/25_algorithms/move/95578.cc: New test. 2890 * testsuite/25_algorithms/move_backward/95578.cc: New test. 2891 28922020-05-28 Patrick Palka <ppalka@redhat.com> 2893 2894 PR libstdc++/95322 2895 * include/bits/stl_iterator.h (__detail::_Common_iter_proxy): 2896 Remove and instead define it ... 2897 (common_iterator::_Proxy): ... here. 2898 (common_iterator::operator->): Use it. 2899 * testsuite/24_iterators/common_iterator/2.cc: New test. 2900 * testsuite/std/ranges/adaptors/95322.cc: New test. 2901 29022020-05-26 Alexandre Oliva <oliva@adacore.com> 2903 2904 PR libstdc++/77691 2905 * include/experimental/memory_resource 2906 (__resource_adaptor_imp::do_allocate): Handle max_align_t on 2907 x86-vxworks as on x86-solaris. 2908 (__resource_adaptor_imp::do_deallocate): Likewise. 2909 * testsuite/experimental/memory_resource/new_delete_resource.cc: 2910 Drop xfail. 2911 (BAD_MAX_ALIGN_T): Define on x86-vxworks as on x86-solaris. 2912 (test03): Drop max-align test for char-aligned alloc. 2913 29142020-05-23 Jonathan Wakely <jwakely@redhat.com> 2915 2916 Backport from mainline 2917 2020-05-23 Jonathan Wakely <jwakely@redhat.com> 2918 2919 * include/bits/fs_path.h (__detail::_S_range_begin) 2920 (__detail::_S_range_end): Remove unintentional static specifiers. 2921 * include/experimental/bits/fs_path.h (__detail::_S_range_begin) 2922 (__detail::_S_range_end): Likewise. 2923 29242020-05-23 Jonathan Wakely <jwakely@redhat.com> 2925 2926 Backport from mainline 2927 2020-05-23 Jonathan Wakely <jwakely@redhat.com> 2928 2929 PR libstdc++/95289 2930 * include/debug/helper_functions.h (__get_distance): Only declare 2931 as a constexpr function for C++14 and up. 2932 * testsuite/25_algorithms/copy/debug/95289.cc: New test. 2933 29342020-05-21 Jonathan Wakely <jwakely@redhat.com> 2935 2936 Backport from mainline 2937 2020-05-21 Jonathan Wakely <jwakely@redhat.com> 2938 2939 * include/experimental/executor (use_future_t::use_future_t()): Fix 2940 incorrect noexcept-specifier. 2941 * include/experimental/internet (basic_resolver_results): Adjust 2942 whitespace. 2943 * include/experimental/socket (__basic_socket_impl::release): Add 2944 member function. 2945 (basic_socket(io_context&, const endpoint_type&)): Fix argument to 2946 target constructor. 2947 (basic_socket::release(), basic_socket::release(error_code&)): Add 2948 missing member functions. 2949 (basic_socket::is_open()): Add nodiscard attribute. 2950 (basic_socket::close(error_code&)): Pass argument to base function. 2951 (basic_socket_acceptor::release()) 2952 (basic_socket_acceptor::release(error_code&)): Add missing member 2953 functions. 2954 (basic_socket_acceptor::is_open()): Add nodiscard attribute. 2955 (basic_socket_streambuf::error()): Add noexcept. 2956 (basic_socket_iostream::error()): Likewise. 2957 * testsuite/experimental/net/socket/basic_socket.cc: New test. 2958 29592020-05-21 Jonathan Wakely <jwakely@redhat.com> 2960 2961 Backport from mainline 2962 2020-05-21 Jonathan Wakely <jwakely@redhat.com> 2963 2964 PR libstdc++/93983 2965 * include/bits/iterator_concepts.h (__detail::__cpp17_iterator): 2966 Reorder constraints to avoid recursion when constructors use 2967 iterator_traits (LWG 3420). 2968 * testsuite/24_iterators/customization_points/lwg3420.cc: New test. 2969 29702020-05-12 Jonathan Wakely <jwakely@redhat.com> 2971 2972 Backport from mainline 2973 2020-05-04 Jonathan Wakely <jwakely@redhat.com> 2974 2975 PR libstdc++/94906 2976 * src/c++17/memory_resource.cc 2977 (monotonic_buffer_resource::_Chunk::release): Use size_t for shift 2978 operands. 2979 2980 Backport from mainline 2981 2020-05-03 Jonathan Wakely <jwakely@redhat.com> 2982 2983 PR libstdc++/94933 2984 * include/bits/stl_algobase.h (__fill_a1): Make overload for byte types 2985 usable in constant expressions. 2986 * testsuite/25_algorithms/fill_n/constexpr.cc: Test with bytes and 2987 non-scalars. 2988 29892020-05-07 Jonathan Wakely <jwakely@redhat.com> 2990 2991 Backport from mainline 2992 2020-05-01 Jonathan Wakely <jwakely@redhat.com> 2993 Patrick Palka <ppalka@redhat.com> 2994 2995 PR libstdc++/92894 2996 * include/bits/iterator_concepts.h (ranges::__cust_imove::_IMove): 2997 Add trait to determine return type and an alias for it. 2998 (ranges::__cust_imove::_IMove::operator()): Use __result instead of 2999 deduced return type. 3000 * testsuite/24_iterators/customization_points/92894.cc: New test. 3001 * testsuite/24_iterators/indirect_callable/92894.cc: New test. 3002 30032020-05-07 Release Manager 3004 3005 * GCC 10.1.0 released. 3006 30072020-05-07 Eric Botcazou <ebotcazou@adacore.com> 3008 3009 * config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Update. 3010 * config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise. 3011 30122020-05-06 H.J. Lu <hongjiu.lu@intel.com> 3013 3014 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. 3015 30162020-05-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 3017 3018 * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate. 3019 * config/abi/post/i386-solaris/amd64/baseline_symbols.txt: 3020 Likewise. 3021 * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise. 3022 * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt: 3023 Likewise. 3024 30252020-05-06 Jonathan Wakely <jwakely@redhat.com> 3026 3027 * doc/xml/manual/abi.xml (abi.versioning.history): Document library 3028 versions for GCC 9.[123] and 10.1 releases. 3029 * doc/html/*: Regenerate. 3030 30312020-05-06 Jakub Jelinek <jakub@redhat.com> 3032 3033 * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update. 3034 * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update. 3035 * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update. 3036 * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update. 3037 * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Update. 3038 * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Update. 3039 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update. 3040 30412020-05-04 Jonathan Wakely <jwakely@redhat.com> 3042 3043 * doc/xml/faq.xml: Use working link for SGI STL FAQ. 3044 * doc/html/*: Regenerate. 3045 30462020-05-01 Jonathan Wakely <jwakely@redhat.com> 3047 3048 Backport from mainline 3049 2020-05-01 Jonathan Wakely <jwakely@redhat.com> 3050 3051 PR libstdc++/94901 3052 * include/std/type_traits (__is_complete_or_unbounded): Replace 3053 BADNAME _T with _Tp. 3054 * testsuite/17_intro/badnames.cc: New test. 3055 30562020-04-30 Jonathan Wakely <jwakely@redhat.com> 3057 3058 PR libstdc++/89510 3059 * include/bits/alloc_traits.h (allocator_traits::_S_construct) 3060 (allocator_traits::_S_destroy) 3061 (allocator_traits<allocator<T>>::construct): Use traits in 3062 noexcept-specifiers. 3063 * include/bits/allocator.h (allocator<void>::construct) 3064 (allocator<void>::destroy): Likewise. 3065 * include/ext/malloc_allocator.h (malloc_allocator::construct) 3066 (malloc_allocator::destroy): Likewise. 3067 * include/ext/new_allocator.h (new_allocator::construct) 3068 (new_allocator::destroy): Likewise. 3069 * testsuite/20_util/allocator/89510.cc: New test. 3070 * testsuite/ext/malloc_allocator/89510.cc: New test. 3071 * testsuite/ext/new_allocator/89510.cc: New test. 3072 30732020-04-29 Jonathan Wakely <jwakely@redhat.com> 3074 3075 PR libstdc++/94854 3076 * include/bits/basic_string.tcc: Update comment about explicit 3077 instantiations. 3078 30792020-04-28 Jonathan Wakely <jwakely@redhat.com> 3080 3081 PR libstdc++/91480 3082 * include/bits/allocator.h (__cpp_lib_allocator_is_always_equal): 3083 Remove non-standard macro. 3084 * include/bits/stl_iterator.h (__cpp_lib_constexpr_iterator): Define 3085 to indicate P1032R1 support. 3086 * include/bits/stl_pair.h (__cpp_lib_constexpr_utility): Likewise. 3087 * include/std/string_view (__cpp_lib_constexpr_string_view): Likewise. 3088 * include/std/tuple (__cpp_lib_constexpr_tuple): Likewise. 3089 * include/std/version (__cpp_lib_allocator_is_always_equal): Remove. 3090 (__cpp_lib_constexpr_iterator, __cpp_lib_constexpr_string_view) 3091 (__cpp_lib_constexpr_tuple, __cpp_lib_constexpr_utility): Define. 3092 * testsuite/20_util/function_objects/constexpr_searcher.cc: Check 3093 feature test macro. 3094 * testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc: Likewise. 3095 * testsuite/21_strings/basic_string_view/operations/copy/char/ 3096 constexpr.cc: Likewise. 3097 * testsuite/24_iterators/insert_iterator/constexpr.cc: Likewise. 3098 3099 PR libstdc++/94831 3100 * include/bits/alloc_traits.h (_S_construct): Restore placement 3101 new-expression for C++11/14/17 and call std::construct_at directly 3102 for C++20. 3103 * include/bits/stl_construct.h (_Construct): Revert to non-constexpr 3104 function returning void. 3105 * testsuite/20_util/specialized_algorithms/ 3106 uninitialized_value_construct/94831.cc: New test. 3107 * testsuite/23_containers/vector/cons/94831.cc: New test. 3108 31092020-04-28 Patrick Palka <ppalka@redhat.com> 3110 3111 LWG 3433 subrange::advance(n) has UB when n < 0 3112 * include/std/ranges (subrange::prev): Fix typo. 3113 (subrange::advance): Handle a negative argument as per the proposed 3114 resolution of LWG 3433. 3115 * testsuite/std/ranges/subrange/lwg3433.cc: New test. 3116 31172020-04-28 Jonathan Wakely <jwakely@redhat.com> 3118 Iain Sandoe <iain@sandoe.co.uk> 3119 3120 PR c++/94759 3121 * include/std/coroutine: Implement handing for non- 3122 class coroutine return types. 3123 31242020-04-24 Jonathan Wakely <jwakely@redhat.com> 3125 3126 * include/experimental/executor (service_already_exists): Make default 3127 constructor public (LWG 3414). 3128 * testsuite/experimental/net/execution_context/make_service.cc: Check 3129 the service_already_exists can be default constructed. 3130 31312020-04-24 Kamlesh Kumar <kamleshbhalui@gmail.com> 3132 Jonathan Wakely <jwakely@redhat.com> 3133 3134 PR libstdc++/90415 3135 PR libstdc++/92156 3136 * include/std/any (any): Rename template parameters for consistency 3137 with the standard. 3138 (any::_Decay): Rename to _Decay_if_not_any. 3139 (any::any(T&&):: Remove is_constructible from constraints. Remove 3140 non-standard overload. 3141 (any::any(in_place_type_t<T>, Args&&...)) 3142 (any::any(in_place_type_t<T>, initializer_list<U>, Args&&...)) 3143 (any::emplace(Args&&...)) 3144 (any::emplace(initializer_list<U>, Args&&...)): 3145 Use decay_t instead of _Decay. 3146 * testsuite/20_util/any/cons/90415.cc: New test. 3147 * testsuite/20_util/any/cons/92156.cc: New Test. 3148 * testsuite/20_util/any/misc/any_cast_neg.cc: Make dg-error directives 3149 more robust. 3150 * testsuite/20_util/any/modifiers/92156.cc: New test. 3151 31522020-04-23 Jonathan Wakely <jwakely@redhat.com> 3153 3154 * doc/xml/manual/status_cxx2020.xml: Update C++20 status table. 3155 * doc/html/*: Regenerate. 3156 3157 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Revert 3158 value for C++17 to 201803L because P0858R0 is supported for C++17. 3159 * include/std/version (__cpp_lib_array_constexpr): Likewise. 3160 * testsuite/23_containers/array/element_access/constexpr_c++17.cc: 3161 Check for value corresponding to P0031R0 features being tested. 3162 * testsuite/23_containers/array/requirements/constexpr_iter.cc: 3163 Check for value corresponding to P0858R0 features being tested. 3164 3165 * include/std/version (__cpp_lib_three_way_comparison): Define for 3166 freestanding builds. 3167 31682020-04-23 Thomas Rodgers <rodgert@appliantology.com> 3169 3170 * include/experimental/net/executor (system_context): Mark 3171 system_context::system_context() = delete. 3172 * testsuite/experimental/net/executor/1.cc: Add new 3173 test to check system_context is not default constructible. 3174 31752020-04-23 Iain Sandoe <iain@sandoe.co.uk> 3176 3177 * include/std/coroutine: Update the inline namespace to __n4861. 3178 Add the __cpp_lib_coroutine define, set to 201902L. 3179 * include/std/version: Add __cpp_lib_coroutine, set to 201902L. 3180 31812020-04-22 Jonathan Wakely <jwakely@redhat.com> 3182 3183 * include/std/execution (__cpp_lib_execution): Define to indicate 3184 support for P0024R2 and P1001R2. 3185 * include/std/version (__cpp_lib_execution): Define. 3186 * testsuite/25_algorithms/pstl/feature_test.cc: Only test macro 3187 defined by <algorithm>, move other tests to new tests ... 3188 * testsuite/25_algorithms/pstl/feature_test-2.cc: New test. 3189 * testsuite/25_algorithms/pstl/feature_test-3.cc: New test. 3190 * testsuite/25_algorithms/pstl/feature_test-4.cc: New test. 3191 * testsuite/25_algorithms/pstl/feature_test-5.cc: New test. 3192 3193 * include/bits/stl_iterator.h (__cpp_lib_array_constexpr): Define 3194 different values for C++17 and C++20, to indicate different feature 3195 sets. Update value for C++20 to indicate P1032R1 support. 3196 * include/std/version (__cpp_lib_array_constexpr): Likewise. 3197 * testsuite/23_containers/array/comparison_operators/constexpr.cc: 3198 Check feature test macro. 3199 * testsuite/23_containers/array/element_access/constexpr_c++17.cc: 3200 New test. 3201 * testsuite/23_containers/array/requirements/constexpr_fill.cc: Check 3202 feature test macro. 3203 * testsuite/23_containers/array/requirements/constexpr_iter.cc: Test 3204 in C++17 mode and check feature test macro. 3205 3206 * include/std/utility (__cpp_lib_constexpr_algorithms): Do not define 3207 here. 3208 * testsuite/20_util/exchange/constexpr.cc: Do not expect macro to be 3209 defined by <utility>. 3210 3211 * include/std/functional (__cpp_lib_concepts): Update macro value to 3212 indicate P1964R2 support. 3213 * include/std/version (__cpp_lib_concepts): Likewise. 3214 * testsuite/std/concepts/1.cc: Adjust expected value. 3215 * testsuite/std/concepts/2.cc: Likewise. 3216 3217 * include/std/functional (__cpp_lib_constexpr_invoke): Rename to 3218 __cpp_lib_constexpr_functional. 3219 * include/std/version (__cpp_lib_constexpr_invoke): Likewise. 3220 * testsuite/20_util/function_objects/invoke/constexpr.cc: Adjust. 3221 3222 * include/bits/ptr_traits.h (__cpp_lib_constexpr_memory): Define to 3223 indicate P1006R1 support. 3224 (__cpp_lib_to_address): Define to indicate P0653R2 support. 3225 * include/bits/range_access.h (__cpp_lib_ssize): Define to indicate 3226 P1227R2 support. 3227 * include/bits/ranges_algo.h (__cpp_lib_shift): Define to indicate 3228 P0769R2 support. 3229 * include/std/atomic (__cpp_lib_atomic_float): Define to indicate 3230 P0020R6 support. 3231 * include/std/memory (__cpp_lib_assume_aligned): Define to indicate 3232 P1007R3 support. 3233 * include/std/memory_resource (__cpp_lib_polymorphic_allocator): 3234 Define to indicate P0339R6 support. 3235 * include/std/string_view (__cpp_lib_starts_ends_with): Define to 3236 indicate P0457R2 support. 3237 * include/std/type_traits (__cpp_lib_is_nothrow_convertible): Define 3238 to indicate P0758R1 support. 3239 (__cpp_lib_remove_cvref): Define to indicate P0550R2 support. 3240 (__cpp_lib_type_identity): Define to indicate P0887R1 support. 3241 * include/std/version (__cpp_lib_atomic_float) 3242 (__cpp_lib_is_nothrow_convertible, __cpp_lib_remove_cvref) 3243 (__cpp_lib_type_identity, __cpp_lib_assume_aligned) 3244 (__cpp_lib_constexpr_memory, __cpp_lib_polymorphic_allocator) 3245 (__cpp_lib_shift, __cpp_lib_ssize, __cpp_lib_starts_ends_with) 3246 (__cpp_lib_to_address): Define. 3247 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number. 3248 3249 * include/bits/stl_map.h (__cpp_lib_map_insertion): Remove old 3250 macro. 3251 * include/bits/unordered_map.h (__cpp_lib_unordered_map_insertion): 3252 Likewise. 3253 * include/std/version (__cpp_lib_map_insertion) 3254 (__cpp_lib_unordered_map_insertion): Remove. 3255 3256 * include/std/condition_variable (__cpp_lib_jthread): Remove 3257 redundant definition. 3258 * include/std/stop_token (__cpp_lib_jthread): Update macro value to 3259 indicate P1869R1 support. 3260 * include/std/version (__cpp_lib_jthread): Update value. 3261 * testsuite/30_threads/condition_variable_any/stop_token/1.cc: Check 3262 for updated macro value. 3263 * testsuite/30_threads/condition_variable_any/stop_token/2.cc: 3264 Likewise. 3265 * testsuite/30_threads/jthread/1.cc: Likewise. 3266 * testsuite/30_threads/jthread/2.cc: Likewise. 3267 * testsuite/30_threads/stop_token/1.cc: Likewise. 3268 * testsuite/30_threads/stop_token/2.cc: Likewise. 3269 3270 * testsuite/21_strings/basic_string/erasure.cc: Check for 3271 __cpp_lib_erase_if macro. 3272 * testsuite/23_containers/deque/erasure.cc: Add header name to #error 3273 messages. 3274 * testsuite/23_containers/forward_list/erasure.cc: Likewise. 3275 * testsuite/23_containers/list/erasure.cc: Likewise. 3276 * testsuite/23_containers/map/erasure.cc: Likewise. 3277 * testsuite/23_containers/set/erasure.cc: Likewise. 3278 * testsuite/23_containers/unordered_map/erasure.cc: Likewise. 3279 * testsuite/23_containers/unordered_set/erasure.cc: Likewise. 3280 * testsuite/23_containers/vector/erasure.cc: Likewise. 3281 32822020-04-21 Jonathan Wakely <jwakely@redhat.com> 3283 3284 * include/bits/stl_iterator.h (__normal_iterator): Use synth-three-way 3285 to define operator<=>. 3286 * testsuite/24_iterators/normal_iterator/cmp_c++20.cc: New test. 3287 3288 * doc/Makefile.am (xml_sources_manual): Add missing XML files. 3289 * doc/Makefile.in: Regenerate. 3290 * doc/xml/manual/status_cxx1998.xml: Refer to "this section" instead 3291 of "this page". 3292 * doc/xml/manual/status_cxx2011.xml: Formatting and other corrections 3293 to the C++11 status table. 3294 * doc/xml/manual/status_cxx2014.xml: Replace list of C++14 feature 3295 proposals with table matching contents of the C++14 standard. 3296 * doc/xml/manual/status_cxx2017.xml: Add table matching contents of 3297 the C++17 standard. 3298 * doc/html/*: Regenerate. 3299 3300 PR c++/94149 3301 * include/std/type_traits (__is_nt_constructible_impl): Add partial 3302 specializations for bounded arrays with non-empty initializers. 3303 * testsuite/20_util/is_nothrow_constructible/value_c++20.cc: New test. 3304 33052020-04-20 Thomas Rodgers <trodgers@redhat.com> 3306 3307 * testsuite/lib/libstdc++.exp: Add additional_flags= 3308 -DTBB_SUPRESS_DEPRECATED_MESSAGES=1 to suppress warnings when 3309 compiling with a newer Thread Building Blocks. 3310 33112020-04-20 Jonathan Wakely <jwakely@redhat.com> 3312 3313 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test. 3314 3315 * testsuite/20_util/is_constructible/51185.cc: Make test class a 3316 non-aggregate so that the test verifies the same thing in all -std 3317 modes. 3318 * testsuite/20_util/is_constructible/value-2.cc: Adjust expected 3319 results for some types when paren-init for aggregates is supported. 3320 3321 * include/std/version (__cpp_lib_three_way_comparison): Update value. 3322 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise. 3323 (__detail::__synth3way): Add noexcept-specifier. 3324 3325 * include/bits/stl_map.h (map): Define operator<=> and remove 3326 operator< for C++20. 3327 * include/bits/stl_multimap.h (multimap): Likewise. 3328 * include/bits/stl_multiset.h (multiset): Likewise. 3329 * include/bits/stl_set.h (set): Likewise. 3330 * include/bits/stl_tree.h (_Rb_tree): Likewise. 3331 (_Rb_tree_iterator, _Rb_tree_const_iterator): Remove redundant 3332 operator!= for C++20. 3333 * include/debug/map.h (__gnu_debug::map): Define operator<=> for C++20. 3334 * include/debug/multimap.h (__gnu_debug::multimap): Likewise. 3335 * include/debug/multiset.h (__gnu_debug::multiset): Likewise. 3336 * include/debug/set.h (__gnu_debug::set): Likewise. 3337 * testsuite/23_containers/map/operators/cmp_c++20.cc: New test. 3338 * testsuite/23_containers/multimap/operators/cmp_c++20.cc: New test. 3339 * testsuite/23_containers/multiset/operators/cmp_c++20.cc: New test. 3340 * testsuite/23_containers/set/operators/cmp_c++20.cc: New test. 3341 33422020-04-20 Matthias Kretz <kretz@kde.org> 3343 3344 * testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose. 3345 33462020-04-19 Jonathan Wakely <jwakely@redhat.com> 3347 3348 * include/bits/stl_queue.h (queue): Define operator<=> for C++20. 3349 * include/bits/stl_stack.h (stack): Likewise. 3350 * testsuite/23_containers/queue/cmp_c++20.cc: New test. 3351 * testsuite/23_containers/stack/cmp_c++20.cc: New test. 3352 3353 * include/bits/unordered_map.h (unordered_map, unordered_multimap): 3354 Remove redundant operator!= for C++20. 3355 * include/bits/unordered_set.h (unordered_set, unordered_multiset): 3356 Likewise. 3357 * include/debug/unordered_map (unordered_map, unordered_multimap): 3358 Likewise. 3359 * include/debug/unordered_set (unordered_set, unordered_multiset): 3360 Likewise. 3361 3362 PR other/94629 3363 * include/debug/formatter.h (_Error_formatter::_Parameter): Fix 3364 redundant assignment in constructor. 3365 33662020-04-18 Jonathan Wakely <jwakely@redhat.com> 3367 3368 * include/std/chrono (duration, time_point): Define operator<=> and 3369 remove redundant operator!= for C++20. 3370 * testsuite/20_util/duration/comparison_operators/three_way.cc: New 3371 test. 3372 * testsuite/20_util/time_point/comparison_operators/three_way.cc: New 3373 test. 3374 3375 * testsuite/util/native_type/native_priority_queue.hpp: Use 3376 allocator_traits to rebind allocator. 3377 33782020-04-17 Jonathan Wakely <jwakely@redhat.com> 3379 3380 * include/bits/forward_list.h (forward_list): Define operator<=> and 3381 remove redundant comparison operators for C++20. 3382 * include/bits/stl_bvector.h (vector<bool, Alloc>): Likewise. 3383 * include/bits/stl_deque.h (deque): Likewise. 3384 * include/bits/stl_iterator.h (__normal_iterator): Likewise. 3385 * include/bits/stl_list.h (list): Likewise. 3386 * include/bits/stl_vector.h (vector): Likewise. 3387 * include/debug/deque (__gnu_debug::deque): Likewise. 3388 * include/debug/forward_list (__gnu_debug::forward_list): Likewise. 3389 * include/debug/list (__gnu_debug::list): Likewise. 3390 * include/debug/safe_iterator.h (__gnu_debug::_Safe_iterator): 3391 Likewise. 3392 * include/debug/vector (__gnu_debug::vector): Likewise. 3393 * include/ext/pointer.h (__gnu_cxx::_Pointer_adapter): Define 3394 operator<=> for C++20. 3395 * testsuite/23_containers/deque/operators/cmp_c++20.cc: New test. 3396 * testsuite/23_containers/forward_list/cmp_c++20.cc: New test. 3397 * testsuite/23_containers/list/cmp_c++20.cc: New test. 3398 * testsuite/23_containers/vector/bool/cmp_c++20.cc: New test. 3399 * testsuite/23_containers/vector/cmp_c++20.cc: New test. 3400 3401 * include/bits/basic_string.h (basic_string): Define operator<=> and 3402 remove redundant comparison operators for C++20. 3403 * include/bits/char_traits.h (__gnu_cxx::char_traits, char_traits): 3404 Add comparison_category members. 3405 (__detail::__char_traits_cmp_cat): New helper to get comparison 3406 category from char traits class. 3407 * include/bits/regex.h (regex_traits::_RegexMask::operator!=): Do not 3408 define for C++20. 3409 (sub_match): Define operator<=> and remove redundant comparison 3410 operators for C++20. 3411 (match_results): Remove redundant operator!= for C++20. 3412 * include/std/string_view (basic_string_view): Define operator<=> and 3413 remove redundant comparison operators for C++20. 3414 * testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc: New 3415 test. 3416 * testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc: 3417 New test. 3418 * testsuite/21_strings/basic_string_view/operations/copy/char/ 3419 constexpr.cc: Initialize variable. 3420 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/ 3421 constexpr.cc: Likewise. 3422 * testsuite/21_strings/basic_string_view/operators/char/2.cc: Add 3423 dg-do directive and remove comments showing incorrect signatures. 3424 * testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc: 3425 Likewise. 3426 * testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc: 3427 New test. 3428 * testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc: 3429 New test. 3430 * testsuite/28_regex/sub_match/compare_c++20.cc: New test. 3431 34322020-04-16 Jonathan Wakely <jwakely@redhat.com> 3433 3434 * testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Remove 3435 name of unused parameter. 3436 34372020-04-15 Jonathan Wakely <jwakely@redhat.com> 3438 3439 * include/bits/fs_dir.h (file_status): Define operator== for C++20. 3440 (directory_entry): Define operator<=> and remove redundant comparison 3441 operators for C++20. 3442 * include/bits/fs_fwd.h (space_info): Define operator== for C++20. 3443 * include/bits/fs_path.h (path): Define operator<=> and remove 3444 redundant comparison operators for C++20. 3445 * testsuite/27_io/filesystem/path/compare/compare.cc: Fix comment. 3446 * testsuite/27_io/filesystem/path/compare/lwg2936.cc: Likewise. 3447 * testsuite/27_io/filesystem/path/compare/path.cc: Likewise. 3448 * testsuite/27_io/filesystem/path/compare/strings.cc: Likewise. 3449 3450 * include/bits/allocator.h (operator!=): Do not define for C++20. 3451 * include/bits/locale_classes.h (operator!=): Likewise. 3452 * include/bits/std_function.h (operator==(nullptr_t, const function&)) 3453 (operator!=(const function&, nullptr_t)) 3454 (operator!=(nullptr_t, const function&)): Likewise. 3455 * include/ext/bitmap_allocator.h (operator!=): Likewise. 3456 * include/ext/debug_allocator.h (operator!=): Likewise. 3457 * include/ext/extptr_allocator.h (operator!=): Likewise. 3458 * include/ext/malloc_allocator.h (operator!=): Likewise. 3459 * include/ext/mt_allocator.h (operator!=): Likewise. 3460 * include/ext/new_allocator.h (operator!=): Likewise. 3461 * include/ext/pool_allocator.h (operator!=): Likewise. 3462 * include/ext/throw_allocator.h (operator!=): Likewise. 3463 * include/std/bitset (bitset::operator!=): Likewise. 3464 * include/std/memory_resource (operator!=): Likewise. 3465 * include/std/scoped_allocator (operator!=): Likewise. 3466 3467 * include/std/typeindex (operator<=>): Define for C++20. 3468 * testsuite/20_util/typeindex/comparison_operators_c++20.cc: New test. 3469 34702020-04-14 Jonathan Wakely <jwakely@redhat.com> 3471 3472 * libsupc++/compare (compare_three_way): Fix constraint so that 3473 BUILTIN-PTR-THREE-WAY does not require three_way_comparable_with. 3474 * testsuite/18_support/comparisons/object/builtin-ptr-three-way.cc: 3475 New test. 3476 3477 PR libstdc++/94562 3478 * include/bits/shared_ptr.h (operator<=>): Define for C++20. 3479 * include/bits/shared_ptr_base.h (operator<=>): Likewise. 3480 * include/bits/unique_ptr.h (operator<=>): Add inline specifier. 3481 * testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc: New test. 3482 * testsuite/20_util/shared_ptr/comparison/less.cc: Do not expect 3483 std::less<A*> to be used when comparing std::shared_ptr<A> objects in 3484 C++20. 3485 3486 PR libstdc++/94565 3487 * libsupc++/compare (__unspec): Add noexcept-specifier to constructor. 3488 * testsuite/18_support/comparisons/categories/94565.cc: New test. 3489 34902020-04-13 Iain Sandoe <iain@sandoe.co.uk> 3491 3492 * include/std/coroutine: Update coroutines builtin define, 3493 per n4861. 3494 34952020-04-09 Jonathan Wakely <jwakely@redhat.com> 3496 3497 * libsupc++/compare (compare_three_way): Fix noexcept-specifier. 3498 (strong_order, weak_order, partial_order): Replace uses of <=> with 3499 compare_three_way function object (LWG 3324). 3500 * testsuite/18_support/comparisons/algorithms/partial_order.cc: Add 3501 equality operator so that X satisfies three_way_comparable. 3502 * testsuite/18_support/comparisons/algorithms/strong_order.cc: 3503 Likewise. 3504 * testsuite/18_support/comparisons/algorithms/weak_order.cc: Likewise. 3505 3506 * include/bits/unique_ptr.h (operator<=>): Define for C++20. 3507 * testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line. 3508 * testsuite/20_util/default_delete/void_neg.cc: Likewise. 3509 * testsuite/20_util/unique_ptr/comparison/compare.cc: New test. 3510 * testsuite/20_util/unique_ptr/comparison/compare_c++20.cc: New test. 3511 35122020-04-08 Jonathan Wakely <jwakely@redhat.com> 3513 3514 * include/bits/slice_array.h (operator==(const slice&, const slice&)): 3515 Define for C++20. 3516 * include/std/complex (operator==(const T&, const complex<T>&)) 3517 (operator!=(const complex<T>&, const complex<T>&)) 3518 (operator!=(const complex<T>&, const T&)) 3519 (operator!=(const T&, const complex<T>&)): Do not declare for C++20. 3520 * testsuite/26_numerics/slice/compare.cc: New test. 3521 3522 * include/std/charconv (to_chars_result, from_chars_result): Add 3523 defaulted equality comparisons for C++20. 3524 * testsuite/20_util/from_chars/compare.cc: New test. 3525 * testsuite/20_util/to_chars/compare.cc: New test. 3526 35272020-04-07 Jonathan Wakely <jwakely@redhat.com> 3528 3529 PR libstdc++/94520 3530 * include/std/charconv (__integer_to_chars_result_type) 3531 (__integer_from_chars_result_type): Use __or_ instead of __or_v_ to 3532 allow use in C++14. 3533 * testsuite/20_util/from_chars/1.cc: Run test as C++14 and replace 3534 use of std::string_view with std::string. 3535 * testsuite/20_util/from_chars/2.cc: Likewise. 3536 * testsuite/20_util/to_chars/1.cc: Likewise. 3537 * testsuite/20_util/to_chars/2.cc: Likewise. 3538 35392020-04-06 Jonathan Wakely <jwakely@redhat.com> 3540 3541 PR libstdc++/94498 3542 * include/bits/char_traits.h (__gnu_cxx::char_traits::move): Make it 3543 usable in constant expressions for C++20. 3544 (__gnu_cxx::char_traits::copy, __gnu_cxx::char_traits::assign): Add 3545 _GLIBCXX20_CONSTEXPR. 3546 (std::char_traits<char>, std::char_traits<wchar_t>) 3547 (std::char_traits<char8_t>): Make move, copy and assign usable in 3548 constant expressions for C++20. 3549 (std::char_traits<char16_t>, std::char_traits<char32_t>): Make move 3550 and copy usable in constant expressions for C++20. 3551 * include/std/string_view (basic_string_view::copy): Add 3552 _GLIBCXX20_CONSTEXPR. 3553 * testsuite/21_strings/basic_string_view/operations/copy/char/ 3554 constexpr.cc: New test. 3555 * testsuite/21_strings/basic_string_view/operations/copy/wchar_t/ 3556 constexpr.cc: New test. 3557 35582020-04-05 Gerald Pfeifer <gerald@pfeifer.com> 3559 3560 * doc/xml/manual/appendix_contributing.xml: Refer to Git 3561 documentation instead of Subversion. Switch to https. 3562 * doc/html/manual/appendix_contributing.html: Regenerate. 3563 35642020-04-03 Jonathan Wakely <jwakely@redhat.com> 3565 3566 PR libstdc++/93960 3567 * include/bits/ptr_traits.h (__to_address): Add special case for debug 3568 iterators, to avoid dereferenceable check. 3569 * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number. 3570 * testsuite/20_util/to_address/debug.cc: New test. 3571 35722020-04-01 Andrea Corallo <andrea.corallo@arm.com> 3573 3574 * testsuite/experimental/net/execution_context/use_service.cc: 3575 Require pthread and gthreads. 3576 35772020-04-01 Gerald Pfeifer <gerald@pfeifer.com> 3578 3579 * doc/xml/manual/appendix_free.xml: Move "free books" list from 3580 fsf.org to gnu.org. 3581 * doc/html/manual/appendix_free.html: Regenerate. 3582 35832020-03-31 Ville Voutilainen <ville.voutilainen@gmail.com> 3584 3585 Library-side tests for parenthesized aggregate init 3586 3587 PR c++/92878 3588 PR c++/92947 3589 3590 * testsuite/20_util/allocator_traits/members/92878_92947.cc: New. 3591 * testsuite/20_util/any/assign/92878_92947.cc: Likewise. 3592 * testsuite/20_util/any/cons/92878_92947.cc: Likewise. 3593 * testsuite/20_util/is_constructible/92878_92947.cc: Likewise. 3594 * testsuite/20_util/optional/assignment/92878_92947.cc: Likewise. 3595 * testsuite/20_util/optional/cons/92878_92947.cc: Likewise. 3596 * testsuite/20_util/pair/cons/92878_92947.cc: Likewise. 3597 * testsuite/20_util/shared_ptr/creation/92878_92947.cc: Likewise. 3598 * testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc: 3599 Likewise. 3600 * testsuite/20_util/unique_ptr/creation/92878_92947.cc: Likewise. 3601 * testsuite/20_util/uses_allocator/92878_92947.cc: Likewise. 3602 * testsuite/20_util/variant/92878_92947.cc: Likewise. 3603 * testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc: 3604 Likewise. 3605 * testsuite/23_containers/forward_list/modifiers/92878_92947.cc: 3606 Likewise. 3607 * testsuite/23_containers/list/modifiers/emplace/92878_92947.cc: 3608 Likewise. 3609 * testsuite/23_containers/map/modifiers/emplace/92878_92947.cc: 3610 Likewise. 3611 * testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc: 3612 Likewise. 3613 * testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc: 3614 Likewise. 3615 * testsuite/23_containers/priority_queue/92878_92947.cc: Likewise. 3616 * testsuite/23_containers/queue/92878_92947.cc: Likewise. 3617 * testsuite/23_containers/set/modifiers/emplace/92878_92947.cc: 3618 Likewise. 3619 * testsuite/23_containers/stack/92878_92947.cc: Likewise. 3620 * testsuite/23_containers/unordered_map/modifiers/92878_92947.cc: 3621 Likewise. 3622 * testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc: 3623 Likewise. 3624 * testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc: 3625 Likewise. 3626 * testsuite/23_containers/unordered_set/modifiers/92878_92947.cc: 3627 Likewise. 3628 * testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc: 3629 Likewise. 3630 36312020-03-28 Jonathan Wakely <jwakely@redhat.com> 3632 3633 * testsuite/20_util/is_constructible/value-2.cc: Fix test to account 3634 for changes due to parenthesized aggregate-initialization in C++20. 3635 * testsuite/20_util/time_point/cons/81468.cc: Fix test to not clash 3636 with std::chrono::sys_time in C++20. 3637 3638 * include/bits/stl_iterator.h (reverse_iterator): Use requires-clause 3639 to constrain C++20 versions of comparison operators. Fix backwards 3640 logic of relational operators. 3641 (move_iterator): Use requires-clause to constrain comparison operators 3642 in C++20. Do not declare non-standard same-type overloads for C++20. 3643 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: Check result 3644 of comparisons and check using greedy_ops type. 3645 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: Likewise. 3646 * testsuite/24_iterators/move_iterator/greedy_ops.cc: Remove redundant 3647 main function from compile-only test. 3648 * testsuite/24_iterators/reverse_iterator/greedy_ops.cc: Likewise. 3649 36502020-03-27 Jonathan Wakely <jwakely@redhat.com> 3651 3652 * include/bits/range_cmp.h (__cpp_lib_ranges): Define. 3653 * include/bits/stl_iterator.h: Check value of __cpp_concepts so that 3654 C++20 concepts are required. 3655 * include/bits/stl_iterator_base_types.h: Likewise. 3656 * include/std/concepts: Likewise. 3657 * include/std/version: Likewise. 3658 * testsuite/std/ranges/headers/ranges/synopsis.cc: Check feature test 3659 macro. 3660 3661 * include/bits/stl_iterator.h (reverse_iterator::iterator_concept) 3662 (reverse_iterator::iterator_category): Define for C++20. 3663 (reverse_iterator): Define comparison operators correctly for C++20. 3664 (__normal_iterator): Add constraints to comparison operators for C++20. 3665 (move_iterator::operator++(int)) [__cpp_lib_concepts]: Define new 3666 overload for input iterators. 3667 (move_iterator): Add constraints to comparison operators for C++20. 3668 Define operator<=> for C++20. 3669 * testsuite/24_iterators/move_iterator/input_iterator.cc: New test. 3670 * testsuite/24_iterators/move_iterator/move_only.cc: New test. 3671 * testsuite/24_iterators/move_iterator/rel_ops_c++20.cc: New test. 3672 * testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc: New test. 3673 3674 * include/bits/iterator_concepts.h (__detail::__decay_copy) 3675 (__detail::__member_begin, __detail::__adl_begin): Move here from 3676 <bits/range_access.h>. 3677 (__detail::__ranges_begin, __detail::__range_iter_t): Define. 3678 * bits/range_access.h (__cust_access::__decay_copy) 3679 (__cust_access::__member_begin, __cust_access::__adl_begin): Move to 3680 <bits/iterator_concepts.h>. 3681 (ranges::iterator_t): Use __detail::__range_iter_t. 3682 * include/bits/stl_iterator.h (back_insert_iterator): Simplify 3683 conditional compilation. Add _GLIBCXX20_CONSTEXPR to all members. 3684 (front_insert_iterator): Likewise. 3685 (insert_iterator): Implement changes from P0896R4 for C++20. 3686 * testsuite/24_iterators/back_insert_iterator/constexpr.cc: New test. 3687 * testsuite/24_iterators/front_insert_iterator/constexpr.cc: New test. 3688 * testsuite/24_iterators/headers/iterator/synopsis_c++17.cc: Adjust 3689 for inclusion in synopsis_c++20.cc which expects different signatures 3690 for some function templates. 3691 * testsuite/24_iterators/insert_iterator/constexpr.cc: New test. 3692 3693 * include/std/type_traits (__is_array_convertible): Move definition 3694 to immediately after is_convertible. 3695 36962020-03-26 Jonathan Wakely <jwakely@redhat.com> 3697 3698 * include/std/chrono (chrono::days, chrono::weeks, chrono::years) 3699 (chrono::months, chrono::sys_days, chrono::local_t) 3700 (chrono::local_time, chrono::local_seconds, chrono::local_days): 3701 Define for C++20. 3702 (chrono::time_point): Add missing static assert. 3703 * testsuite/20_util/time_point/requirements/duration_neg.cc: New test. 3704 * testsuite/std/time/clock/file/overview.cc: New test. 3705 * testsuite/std/time/clock/file/members.cc: New test. 3706 * testsuite/std/time/syn_c++20.cc: New test. 3707 37082020-03-25 Mike Crowe <mac@mcrowe.com> 3709 3710 * testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc: New 3711 test. 3712 * testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc: New 3713 test. 3714 37152020-03-25 Jonathan Wakely <jwakely@redhat.com> 3716 3717 * include/bits/fs_fwd.h (filesystem::__file_clock): Move to ... 3718 * include/std/chrono (filesystem::__file_clock): Here. 3719 (filesystem::__file_clock::from_sys, filesystem::__file_clock::to_sys): 3720 Define public member functions for C++20. 3721 (is_clock, is_clock_v): Define traits for C++20. 3722 * include/std/condition_variable (condition_variable::wait_until): Add 3723 check for valid clock. 3724 * include/std/future (_State_baseV2::wait_until): Likewise. 3725 * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Likewise. 3726 * include/std/shared_mutex (shared_timed_mutex::try_lock_shared_until): 3727 Likewise. 3728 * include/std/thread (this_thread::sleep_until): Likewise. 3729 * testsuite/30_threads/condition_variable/members/2.cc: Qualify 3730 slow_clock with new namespace. 3731 * testsuite/30_threads/condition_variable/members/clock_neg.cc: New 3732 test. 3733 * testsuite/30_threads/condition_variable_any/members/clock_neg.cc: 3734 New test. 3735 * testsuite/30_threads/future/members/clock_neg.cc: New test. 3736 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc: 3737 Qualify slow_clock with new namespace. 3738 * testsuite/30_threads/recursive_timed_mutex/try_lock_until/ 3739 clock_neg.cc: New test. 3740 * testsuite/30_threads/shared_future/members/clock_neg.cc: New 3741 test. 3742 * testsuite/30_threads/shared_lock/locking/clock_neg.cc: New test. 3743 * testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc: 3744 New test. 3745 * testsuite/30_threads/timed_mutex/try_lock_until/3.cc: Qualify 3746 slow_clock with new namespace. 3747 * testsuite/30_threads/timed_mutex/try_lock_until/4.cc: Likewise. 3748 * testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc: New 3749 test. 3750 * testsuite/30_threads/unique_lock/locking/clock_neg.cc: New test. 3751 * testsuite/std/time/traits/is_clock.cc: New test. 3752 * testsuite/util/slow_clock.h (slow_clock): Move to __gnu_test 3753 namespace. 3754 37552020-03-21 Jonathan Wakely <jwakely@redhat.com> 3756 3757 PR libstdc++/93245 3758 * include/experimental/bits/fs_path.h (path::generic_string<C,T,A>()): 3759 * testsuite/experimental/filesystem/path/generic/generic_string.cc: 3760 Improve test coverage. 3761 3762 PR libstdc++/94242 3763 * include/bits/fs_path.h (path::_S_str_convert): Replace first 3764 parameter with basic_string_view so that strings with different 3765 allocators can be accepted. 3766 (path::generic_string<C,T,A>()): Use basic_string object that uses the 3767 right allocator type. 3768 * testsuite/27_io/filesystem/path/generic/94242.cc: New test. 3769 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve 3770 test coverage. 3771 37722020-03-18 Jonathan Wakely <jwakely@redhat.com> 3773 3774 PR libstdc++/94033 3775 * include/std/type_traits (__is_nt_default_constructible_atom): Remove. 3776 (__is_nt_default_constructible_impl): Remove. 3777 (__is_nothrow_default_constructible_impl): Remove. 3778 (__is_nt_constructible_impl): Add bool template parameter. Adjust 3779 partial specializations. 3780 (__is_nothrow_constructible_impl): Replace class template with alias 3781 template. 3782 (is_nothrow_default_constructible): Derive from alias template 3783 __is_nothrow_constructible_impl instead of 3784 __is_nothrow_default_constructible_impl. 3785 * testsuite/20_util/is_nothrow_constructible/94003.cc: New test. 3786 3787 * include/std/stop_token (stop_token::_Stop_state_ref): Define 3788 comparison operators explicitly if the compiler won't synthesize them. 3789 3790 * include/bits/stl_algobase.h (__lexicographical_compare_aux): Check 3791 __cpp_lib_concepts before using iter_reference_t. 3792 * include/bits/stream_iterator.h (istream_iterator): Check 3793 __cpp_lib_concepts before using default_sentinel_t. 3794 * include/bits/streambuf_iterator.h (istreambuf_iterator): Likewise. 3795 3796 PR libstdc++/94203 3797 * include/experimental/executor (executor::executor(Executor)): Call 3798 make_shared directly instead of _M_create. Create _Tgt1 object. 3799 (executor::executor(allocator_arg_t, const ProtoAlloc&, Executor)): 3800 Call allocate_shared directly instead of _M_create. Create _Tgt2 3801 object. 3802 (executor::target_type): Add cast needed for new _Tgt interface. 3803 (executor::target): Define when RTTI is disabled. Use _Tgt::_M_func. 3804 (executor::_Tgt): Define the same interface whether RTTI is enabled or 3805 not. 3806 (executor::_Tgt::target_type, executor::_Tgt::target): Do not use 3807 std::type_info in the interface. 3808 (executor::_Tgt::_M_func): Add data member. 3809 (executor::_TgtImpl): Replace with _Tgt1 and _Tgt2 class templates. 3810 (executor::_Tgt1::_S_func): Define function to access target without 3811 depending on RTTI. 3812 (executor::_M_create): Remove. 3813 (operator==, operator!=): Simplify comparisons for executor. 3814 * include/experimental/socket (is_error_code_enum<socket_errc>): 3815 Define specialization before use. 3816 * testsuite/experimental/net/executor/1.cc: New test. 3817 38182020-03-16 Jonathan Wakely <jwakely@redhat.com> 3819 3820 PR libstdc++/94199 3821 * include/experimental/executor (service_already_exists): Add default 3822 constructor. Declare make_service to be a friend. 3823 * testsuite/experimental/net/execution_context/make_service.cc: New 3824 test. 3825 38262020-03-12 Jonathan Wakely <jwakely@redhat.com> 3827 3828 * testsuite/tr1/8_c_compatibility/cstdlib/functions.cc: Do not pass 3829 a null pointer to functions with nonnull(1) attribute. 3830 38312020-03-11 Patrick Palka <ppalka@redhat.com> 3832 3833 * include/std/ranges (split_view::_OuterIter::_OuterIter): Typo fix, 3834 'address' -> 'std::__addressof'. 3835 * testsuite/std/ranges/adaptors/split.cc: Test taking the split_view of 3836 a non-forward input_range. 3837 * testsuite/util/testsuite_iterators.h (output_iterator_wrapper): Make 3838 default constructor protected instead of deleted, like with 3839 input_iterator_wrapper. 3840 (test_range::iterator): Add comment explaining that this type is used 3841 only when the underlying wrapper is input_iterator_wrapper or 3842 output_iterator_wrapper. Remove delegating defaulted constructor so 3843 that the inherited default constructor is used instead. 3844 3845 LWG 3286 ranges::size is not required to be valid after a call to 3846 ranges::begin on an input range 3847 * include/std/ranges (subrange::subrange): Split single-argument 3848 constructor into two, one constrained by _S_store_size and another by 3849 !_S_store_size. 3850 (take_view::begin): Call size() before calling ranges::begin(_M_base). 3851 * testsuite/std/ranges/adaptors/lwg3286.cc: New test. 3852 * testsuite/std/ranges/subrange/lwg3286.cc: New test. 3853 38542020-03-10 Jonathan Wakely <jwakely@redhat.com> 3855 3856 * include/std/ranges (split_view::_OuterIter::__at_end): Use __current 3857 instead of _M_current. 3858 (split_view::_OuterIter::operator++): Likewise. 3859 3860 * include/std/ranges (transform_view::_Iterator::__iter_move): Remove. 3861 (transform_view::_Iterator::operator*): Add noexcept-specifier. 3862 (transform_view::_Iterator::iter_move): Inline __iter_move body here. 3863 (split_view::_OuterIter::__current): Add noexcept. 3864 (split_view::_InnerIter::__iter_swap): Remove. 3865 (split_view::_InnerIter::__iter_move): Remove. 3866 (split_view::_InnerIter::_M_i_current): New accessors. 3867 (split_view::_InnerIter::__at_end): Use _M_i_current(). 3868 (split_view::_InnerIter::operator*): Likewise. 3869 (split_view::_InnerIter::operator++): Likewise. 3870 (iter_move(const _InnerIter&)): Likewise. 3871 (iter_swap(const _InnerIter&, const _InnerIter&)): Likewise. 3872 * testsuite/std/ranges/adaptors/split.cc: Check noexcept-specifier 3873 for iter_move and iter_swap on split_view's inner iterator. 3874 3875 PR c++/94117 3876 * include/std/ranges (ranges::transform_view::_Iterator::iter_move): 3877 Change expression in noexcept-specifier to match function body. 3878 3879 * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Add 3880 comment explaining multiple dg-do directives. 3881 * testsuite/24_iterators/ostream_iterator/1.cc: Fix do-do directive 3882 so test is run as well as compiled. 3883 38842020-03-09 Jonathan Wakely <jwakely@redhat.com> 3885 3886 PR libstdc++/94063 3887 * src/c++17/fs_path.cc (path::operator+=(const path&)): Add kluge to 3888 handle concatenations that change the type of the first component. 3889 (path::operator+=(basic_string_view<value_type>)): Likewise. 3890 * testsuite/27_io/filesystem/path/concat/94063.cc: New test. 3891 38922020-03-06 Patrick Palka <ppalka@redhat.com> 3893 3894 * include/std/ranges (join_view::_Sentinel<_Const>): Befriend 3895 join_view::_Sentinel<!_Const>. 3896 * testsuite/std/ranges/adaptors/join.cc: Augment test. 3897 3898 PR libstdc++/93978 3899 * include/bits/range_access.h (__cust_access::_Empty::operator()): 3900 Declare return type to be bool instead of auto. 3901 * testsuite/std/ranges/adaptors/93978.cc: New test. 3902 39032020-03-06 Jonathan Wakely <jwakely@redhat.com> 3904 3905 PR libstdc++/94069 3906 * include/std/shared_mutex [!PTHREAD_RWLOCK_INITIALIZER] 3907 (__shared_mutex_pthread::__shared_mutex_pthread()): Remove incorrect 3908 second argument to __glibcxx_rwlock_init. 3909 * testsuite/30_threads/shared_timed_mutex/94069.cc: New test. 3910 3911 PR libstdc++/93244 3912 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Adjust 3913 test to not fail due to PR 94063. 3914 * testsuite/27_io/filesystem/path/generic/utf.cc: Likewise. 3915 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: Likewise. 3916 39172020-03-06 Andreas Krebbel <krebbel@linux.ibm.com> 3918 3919 * src/c++11/system_error.cc: Omit the ENOTSUP case statement if it 3920 would match ENOSYS. 3921 39222020-03-05 Jonathan Wakely <jwakely@redhat.com> 3923 3924 * testsuite/27_io/filesystem/operations/all.cc: Mark unused variable. 3925 * testsuite/27_io/filesystem/operations/copy.cc: Fix typo. 3926 * testsuite/experimental/filesystem/operations/copy.cc: Likewise. 3927 * testsuite/27_io/filesystem/operations/file_size.cc: Use correct type 3928 for return value, and in comparison. 3929 * testsuite/experimental/filesystem/operations/file_size.cc: Likewise. 3930 3931 PR libstdc++/94051 3932 * include/std/string_view: Include <bits/ostream_insert.h>. 3933 * testsuite/21_strings/basic_string_view/inserters/94051.cc: New test. 3934 39352020-03-04 Jonathan Wakely <jwakely@redhat.com> 3936 3937 * include/bits/cpp_type_traits.h (__memcpyable): Fix comment. 3938 39392020-03-04 Patrick Palka <ppalka@redhat.com> 3940 3941 PR libstdc++/94017 3942 * include/bits/ranges_algobase.h (__fill_n_fn::operator()): Refine 3943 condition for when to use memset, making sure to additionally check that 3944 the output pointer's value type is a non-volatile byte type. Instead of 3945 requiring that the fill type is a byte type, just require that it's an 3946 integral type. 3947 * testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc: 3948 New test. 3949 * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc: 3950 New test. 3951 * testsuite/25_algorithms/fill/94013.cc: Uncomment part of test that was 3952 blocked by PR 94017. 3953 * testsuite/25_algorithms/fill/94017.cc: New test. 3954 * testsuite/25_algorithms/fill_n/94017.cc: New test. 3955 3956 LWG 3355 The memory algorithms should support move-only input iterators 3957 introduced by P1207 3958 * include/bits/ranges_uninitialized.h 3959 (__uninitialized_copy_fn::operator()): Use std::move to avoid attempting 3960 to copy __ifirst, which could be a move-only input iterator. Use 3961 operator- instead of ranges::distance to compute distance from a sized 3962 sentinel. 3963 (__uninitialized_copy_n_fn::operator()): Likewise. 3964 (__uninitialized_move_fn::operator()): Likewise. 3965 (__uninitialized_move_n_fn::operator()): Likewise. 3966 (__uninitialized_destroy_fn::operator()): Use std::move to avoid 3967 attempting to copy __first. 3968 (__uninitialized_destroy_n_fn::operator()): Likewise. 3969 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: 3970 Augment test. 3971 * .../specialized_algorithms/uninitialized_copy/constrained.cc: 3972 Likewise. 3973 * .../specialized_algorithms/uninitialized_move/constrained.cc: 3974 Likewise. 3975 3976 * testsuite/util/testsuite_iterators.h (test_range::get_iterator): Make 3977 protected instead of private. 3978 (test_sized_range_sized_sent): New. 3979 3980 * testsuite/util/testsuite_iterators.h (input_iterator_wrapper_nocopy): 3981 New testsuite iterator. 3982 * testsuite/24_iterators/counted_iterator/lwg3389.cc: use it. 3983 * testsuite/24_iterators/move_iterator/lwg3390.cc: Likewise. 3984 3985 * include/bits/ranges_uninitialized.h 3986 (uninitialized_copy_fn::operator()): Pass a reference type as the first 3987 argument to is_nothrow_assignable_v. 3988 (uninitialized_copy_fn::operator()): Likewise. 3989 (uninitialized_move_fn::operator()): Likewise. Return an in_out_result 3990 with the input iterator stripped of its move_iterator. 3991 (uninitialized_move_n_fn::operator()): Likewise. 3992 (uninitialized_fill_fn::operator()): Pass a reference type as the first 3993 argument to is_nothrow_assignable_v. 3994 (uninitialized_fill_n_fn::operator()): Likewise. 3995 39962020-03-03 Jonathan Wakely <jwakely@redhat.com> 3997 3998 PR libstdc++/94013 3999 * include/bits/cpp_type_traits.h (__memcpyable, __memcmpable): New 4000 traits to control when to use memmove and memcmp optimizations. 4001 (__is_nonvolatile_trivially_copyable): New helper trait. 4002 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Do not 4003 use memcmp optimization with volatile data. 4004 * include/bits/ranges_algobase.h (__equal_fn): Use __memcmpable. 4005 (__copy_or_move, __copy_or_move_backward): Use __memcpyable. 4006 * include/bits/stl_algobase.h (__copy_move_a2): Use __memcpyable. 4007 (__copy_move_backward_a2): Likewise. 4008 (__equal_aux1): Use __memcmpable. 4009 (__lexicographical_compare_aux): Do not use memcmp optimization with 4010 volatile data. 4011 * testsuite/25_algorithms/copy/94013.cc: New test. 4012 * testsuite/25_algorithms/copy_backward/94013.cc: New test. 4013 * testsuite/25_algorithms/equal/94013.cc: New test. 4014 * testsuite/25_algorithms/fill/94013.cc: New test. 4015 * testsuite/25_algorithms/lexicographical_compare/94013.cc: New test. 4016 * testsuite/25_algorithms/move/94013.cc: New test. 4017 * testsuite/25_algorithms/move_backward/94013.cc: New test. 4018 4019 * include/bits/stl_algobase.h (lexicographical_compare_three_way): 4020 Avoid redundant iterator comparisons (LWG 3410). 4021 40222020-03-02 Jonathan Wakely <jwakely@redhat.com> 4023 4024 PR libstdc++/93972 4025 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to 4026 differ. 4027 * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test. 4028 4029 * include/std/ranges (__detail::__maybe_empty_t): Rename to 4030 __maybe_present_t. 4031 (__adaptor::_RangeAdaptor, join_view, split_view): Use new name. 4032 4033 * include/bits/ranges_algo.h (shift_right): Add 'typename' to 4034 dependent type. 4035 40362020-03-01 H.J. Lu <hongjiu.lu@intel.com> 4037 4038 * config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt: Updated. 4039 40402020-02-29 John David Anglin <danglin@gcc.gnu.org> 4041 4042 * testsuite/17_intro/headers/c++1998/charset.cc: Skip on *-*-hpux*. 4043 * testsuite/17_intro/headers/c++2011/charset.cc: Likewise. 4044 * testsuite/17_intro/headers/c++2014/charset.cc: Likewise. 4045 * testsuite/17_intro/headers/c++2017/charset.cc: Likewise. 4046 * testsuite/17_intro/headers/c++2020/charset.cc: Likewise. 4047 4048 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc: 4049 Add libatomic option. 4050 * testsuite/30_threads/jthread/jthread.cc: Likewise. 4051 40522020-02-29 François Dumont <fdumont@gcc.gnu.org> 4053 4054 * include/bits/stl_algo.h 4055 (__find_if, __count_if, __is_permutation, std::is_permutation): Move... 4056 * include/bits/stl_algobase.h: ...here. 4057 * include/bits/hashtable_policy.h: Remove <bits/stl_algo.h> include. 4058 40592020-02-29 John David Anglin <danglin@gcc.gnu.org> 4060 4061 * testsuite/30_threads/stop_token/stop_callback.cc: Add libatomic 4062 option. 4063 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: 4064 Likewise. 4065 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: Likewise. 4066 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: Likewise. 4067 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: Likewise. 4068 * testsuite/30_threads/stop_token/stop_source.cc: Likewise. 4069 * testsuite/30_threads/stop_token/stop_source/assign.cc: Likewise. 4070 * testsuite/30_threads/stop_token/stop_token.cc: Likewise. 4071 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: 4072 Likewise. 4073 4074 PR libstdc++/92906 4075 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. 4076 40772020-02-28 Patrick Palka <ppalka@redhat.com> 4078 4079 PR libstdc++/93972 4080 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()): 4081 Fix condition for when to use memcmp, making it consistent with the 4082 corresponding condition used in std::lexicographical_compare. 4083 * testsuite/25_algorithms/lexicographical_compare/93972.cc: New test. 4084 4085 * testsuite/26_numerics/headers/numeric/synopsis.cc: Add signatures for 4086 functions introduced in C++11, C++17 and C++2a. Add 'constexpr' to 4087 existing signatures for C++2a. 4088 40892020-02-28 Jonathan Wakely <jwakely@redhat.com> 4090 4091 * testsuite/24_iterators/range_operations/advance_debug_neg.cc: Run 4092 test instead of just compiling it. 4093 40942020-02-28 Patrick Palka <ppalka@redhat.com> 4095 4096 * include/std/ranges (reverse_view::_S_needs_cached_begin): Set to false 4097 whenever the underlying range models common_range. 4098 4099 * include/std/ranges (__detail::_CachedPosition): New struct. 4100 (views::filter_view::_S_needs_cached_begin): New member variable. 4101 (views::filter_view::_M_cached_begin): New member variable. 4102 (views::filter_view::begin): Use _M_cached_begin to cache its 4103 result. 4104 (views::drop_view::_S_needs_cached_begin): New static member variable. 4105 (views::drop_view::_M_cached_begin): New member variable. 4106 (views::drop_view::begin): Use _M_cached_begin to cache its result 4107 when _S_needs_cached_begin. 4108 (views::drop_while_view::_M_cached_begin): New member variable. 4109 (views::drop_while_view::begin): Use _M_cached_begin to cache its 4110 result. 4111 (views::reverse_view::_S_needs_cached_begin): New static member 4112 variable. 4113 (views::reverse_view::_M_cached_begin): New member variable. 4114 (views::reverse_view::begin): Use _M_cached_begin to cache its result 4115 when _S_needs_cached_begin. 4116 * testsuite/std/ranges/adaptors/drop.cc: Augment test to check that 4117 drop_view::begin caches its result. 4118 * testsuite/std/ranges/adaptors/drop_while.cc: Augment test to check 4119 that drop_while_view::begin caches its result. 4120 * testsuite/std/ranges/adaptors/filter.cc: Augment test to check that 4121 filter_view::begin caches its result. 4122 * testsuite/std/ranges/adaptors/reverse.cc: Augment test to check that 4123 reverse_view::begin caches its result. 4124 41252020-02-28 Jonathan Wakely <jwakely@redhat.com> 4126 4127 * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for 4128 filesystems that silently truncate timestamps. 4129 * testsuite/experimental/filesystem/operations/last_write_time.cc: 4130 Likewise. 4131 4132 * testsuite/21_strings/basic_string/cons/char/1.cc: Disable 4133 -Wstringop-overflow warnings. 4134 41352020-02-27 Jonathan Wakely <jwakely@redhat.com> 4136 4137 * testsuite/lib/libstdc++.exp (v3_target_compile): Add 4138 -fdiagnostics-urls=never to options. 4139 41402020-02-27 Patrick Palka <ppalka@redhat.com> 4141 4142 * include/std/ranges (transform_view::_Iterator<_Const>): Befriend 4143 _Iterator<!_Const>. 4144 (transform_view::_Sentinel<_Const>): Befriend _Sentinel<!_Const>. 4145 (take_view::_Sentinel<_Const>): Likewise. 4146 (take_while_view::_Sentinel<_Const>): Likewise. 4147 (split_view::_OuterIter<_Const>): Befriend _OuterIter<!_Const>. 4148 * testsuite/std/ranges/adaptors/split.cc: Augment test. 4149 * testsuite/std/ranges/adaptors/take.cc: Augment test. 4150 * testsuite/std/ranges/adaptors/take_while.cc: Augment test. 4151 * testsuite/std/ranges/adaptors/transform.cc: Augment test. 4152 4153 * testsuite/25_algorithms/copy/constrained.cc: Don't assume that the 4154 base() of a vector<>::iterator is a pointer. 4155 * testsuite/25_algorithms/copy_backward/constrained.cc: Likewise. 4156 * testsuite/25_algorithms/move/constrained.cc: Likewise. 4157 * testsuite/25_algorithms/move_backward/constrained.cc: Likewise. 4158 * testsuite/25_algorithms/inplace_merge/constrained.cc: Use foo.data() 4159 instead of &foo[0]. 4160 * testsuite/25_algorithms/partial_sort/constrained.cc: Likewise. 4161 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: Likewise. 4162 * testsuite/25_algorithms/shuffle/constrained.cc: Likewise. 4163 * testsuite/25_algorithms/sort/constrained.cc: Likewise. 4164 * testsuite/25_algorithms/stable_sort/constrained.cc: Likewise. 4165 41662020-02-27 Jonathan Wakely <jwakely@redhat.com> 4167 4168 * include/debug/array (operator<=>): Define for C++20. 4169 * testsuite/23_containers/array/tuple_interface/get_debug_neg.cc: 4170 Adjust dg-error line numbers. 4171 * testsuite/23_containers/array/tuple_interface/ 4172 tuple_element_debug_neg.cc: Likewise. 4173 4174 * testsuite/23_containers/span/back_assert_neg.cc: Add #undef before 4175 defining _GLIBCXX_ASSERTIONS. 4176 * testsuite/23_containers/span/first_2_assert_neg.cc: Likewise. 4177 * testsuite/23_containers/span/first_assert_neg.cc: Likewise. 4178 * testsuite/23_containers/span/front_assert_neg.cc: Likewise. 4179 * testsuite/23_containers/span/index_op_assert_neg.cc: Likewise. 4180 * testsuite/23_containers/span/last_2_assert_neg.cc: Likewise. 4181 * testsuite/23_containers/span/last_assert_neg.cc: Likewise. 4182 * testsuite/23_containers/span/subspan_2_assert_neg.cc: Likewise. 4183 * testsuite/23_containers/span/subspan_3_assert_neg.cc: Likewise. 4184 * testsuite/23_containers/span/subspan_4_assert_neg.cc: Likewise. 4185 * testsuite/23_containers/span/subspan_5_assert_neg.cc: Likewise. 4186 * testsuite/23_containers/span/subspan_6_assert_neg.cc: Likewise. 4187 * testsuite/23_containers/span/subspan_assert_neg.cc: Likewise. 4188 4189 * include/debug/string (__gnu_debug::basic_string::insert): Fix for 4190 C++98 where the member function of the base class returns void. 4191 4192 * testsuite/util/testsuite_iterators.h (forward_iterator_wrapper): Add 4193 equality comparisons that support value-initialized iterators. 4194 4195 * include/bits/boost_concept_check.h (__function_requires): Add 4196 _GLIBCXX14_CONSTEXPR. 4197 * testsuite/25_algorithms/min/concept_checks.cc: New test. 4198 41992020-02-26 Patrick Palka <ppalka@redhat.com> 4200 4201 PR libstdc++/93936 4202 * include/std/ranges (split_view::_InnerIter::operator==): Compare 4203 the operands' _M_i rather than their _M_i.current(). 4204 * testsuite/std/ranges/adaptors/split.cc: Augment test. 4205 4206 P1645R1 constexpr for <numeric> algorithms 4207 * include/bits/stl_numeric.h (iota, accumulate, inner_product, 4208 partial_sum, adjacent_difference): Make conditionally constexpr for 4209 C++20. 4210 * include/std/numeric (__cpp_lib_constexpr_numeric): Define this feature 4211 test macro. 4212 (reduce, transform_reduce, exclusive_scan, inclusive_scan, 4213 transform_exclusive_scan, transform_inclusive_scan): Make conditionally 4214 constexpr for C++20. 4215 * include/std/version (__cpp_lib_constexpr_numeric): Define. 4216 * testsuite/26_numerics/accumulate/constexpr.cc: New test. 4217 * testsuite/26_numerics/adjacent_difference/constexpr.cc: Likewise. 4218 * testsuite/26_numerics/exclusive_scan/constexpr.cc: Likewise. 4219 * testsuite/26_numerics/inclusive_scan/constexpr.cc: Likewise. 4220 * testsuite/26_numerics/inner_product/constexpr.cc: Likewise. 4221 * testsuite/26_numerics/iota/constexpr.cc: Likewise. 4222 * testsuite/26_numerics/partial_sum/constexpr.cc: Likewise. 4223 * testsuite/26_numerics/reduce/constexpr.cc: Likewise. 4224 * testsuite/26_numerics/transform_exclusive_scan/constexpr.cc: Likewise. 4225 * testsuite/26_numerics/transform_inclusive_scan/constexpr.cc: Likewise. 4226 * testsuite/26_numerics/transform_reduce/constexpr.cc: Likewise. 4227 42282020-02-26 Jonathan Wakely <jwakely@redhat.com> 4229 4230 * include/bits/ranges_algo.h (__lexicographical_compare_fn): Declare 4231 variables in smaller scope and avoid calling ranges::distance when we 4232 know they are pointers. Remove statically-unreachable use of 4233 __builtin_unreachable(). 4234 * include/bits/stl_algobase.h (__lexicographical_compare::__lc): 4235 Define inline. 4236 4237 * include/std/ranges (__detail::__maybe_empty_t): Define new helper 4238 alias. 4239 (__detail::__maybe_const_t): Likewise. 4240 (__adaptor::_RangeAdaptor): Use __maybe_empty_t. 4241 (transform_view, take_view, take_while_view, elements_view): Use 4242 __maybe_const_t. 4243 (join_view, split_view): Use both. 4244 42452020-02-25 Patrick Palka <ppalka@redhat.com> 4246 4247 LWG 3397 basic_istream_view::iterator should not provide 4248 iterator_category 4249 * include/std/ranges (basic_istream_view:_Iterator::iterator_category): 4250 Rename to ... 4251 (basic_istream_view:_Iterator::iterator_concept): ... this. 4252 * testsuite/std/ranges/istream_view.cc: Augment test. 4253 4254 LWG 3325 Constrain return type of transformation function for 4255 transform_view 4256 * include/std/ranges (transform_view): Constrain the return type of the 4257 transformation function as per LWG 3325. 4258 * testsuite/std/ranges/adaptors/lwg3325_neg.cc: New test. 4259 4260 LWG 3313 join_view::_Iterator::operator-- is incorrectly constrained 4261 * include/std/ranges (join_view::_Iterator::operator--): Require that 4262 range_reference_t<_Base> models common_range. 4263 * testsuite/std/ranges/adaptors/lwg3313_neg.cc: New test. 4264 4265 LWG 3301 transform_view::_Iterator has incorrect iterator_category 4266 * include/std/ranges (transform_view::_Iterator::_S_iter_cat): Adjust 4267 determination of iterator_category as per LWG 3301. 4268 * testsuite/std/ranges/adaptors/transform.cc: Augment test. 4269 4270 LWG 3292 iota_view is under-constrained 4271 * include/std/ranges (iota_view): Require that _Winc models semiregular 4272 as per LWG 3292. 4273 * testsuite/std/ranges/iota/lwg3292_neg.cc: New test. 4274 42752020-02-25 Jonathan Wakely <jwakely@redhat.com> 4276 4277 * include/bits/ranges_algobase.h (__copy_or_move): Do not use memmove 4278 during constant evaluation. Call __builtin_memmove directly instead of 4279 __memmove. 4280 (__copy_or_move_backward): Likewise. 4281 * include/bits/stl_algobase.h (__memmove): Remove. 4282 (__copy_move<M, true, random_access_iterator_tag>::__copy_m) 4283 (__copy_move_backward<M, true, random_access_iterator_tag>::__copy_m): 4284 Use __builtin_memmove directly instead of __memmove. 4285 (__copy_move_a2): Do not use memmove during constant evaluation. 4286 (__copy_move_backward_a2): Use _IsMove constant to select correct 4287 __copy_move_backward specialization. 4288 * testsuite/25_algorithms/copy_backward/constexpr.cc: Check for copies 4289 begin turned into moves during constant evaluation. 4290 4291 * testsuite/25_algorithms/move_backward/93872.cc: Add test left out of 4292 previous commit. 4293 4294 PR libstdc++/93872 4295 * include/bits/stl_algobase.h (__memmove): Cast away const before 4296 doing move assignment. 4297 * testsuite/25_algorithms/move/93872.cc: New test. 4298 * testsuite/25_algorithms/move_backward/93872.cc: New test. 4299 43002020-02-24 Patrick Palka <ppalka@redhat.com> 4301 4302 PR libstdc++/93884 4303 * include/bits/ranges_algobase.h (__copy_or_move, 4304 __copy_or_move_backward): Don't inspect the iter_value_t of the output 4305 iterator, instead inspect its iterator_traits directly. 4306 * include/bits/stl_iterator.h (back_insert_iterator::container): 4307 Conditionally initialize. 4308 (back_insert_iterator::difference_type): Conditionally define. 4309 (back_insert_iterator::back_insert_iterator): Conditionally define this 4310 default constructor. 4311 (front_insert_iterator::container): Conditionally initialize. 4312 (front_insert_iterator::difference_type): Conditionally define. 4313 (front_insert_iterator::front_insert_iterator): Conditionally define 4314 this default constructor. 4315 * 24_iterators/back_insert_iterator/pr93884.cc: New test. 4316 * 24_iterators/front_insert_iterator/pr93884.cc: New test. 4317 4318 P0769R2 Add shift to <algorithm> 4319 * include/bits/ranges_algo.h (shift_left, shift_right): New. 4320 * testsuite/25_algorithms/shift_left/1.cc: New test. 4321 * testsuite/25_algorithms/shift_right/1.cc: New test. 4322 43232020-02-24 Jonathan Wakely <jwakely@redhat.com> 4324 4325 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)): 4326 Make noexcept-specifier conditional. 4327 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: Check 4328 noexcept-specifier. 4329 4330 * include/bits/stream_iterator.h (istream_iterator(default_sentinel_t)): 4331 Add constructor. 4332 (operator==(istream_iterator, default_sentinel_t)): Add operator. 4333 (ostream_iterator::difference_type): Define to ptrdiff_t for C++20. 4334 * include/bits/streambuf_iterator.h 4335 (istreambuf_iterator(default_sentinel_t)): Add constructor. 4336 (operator==(istreambuf_iterator, default_sentinel_t)): Add operator. 4337 * testsuite/24_iterators/istream_iterator/cons/sentinel.cc: 4338 New test. 4339 * testsuite/24_iterators/istream_iterator/sentinel.cc: New test. 4340 * testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc: 4341 New test. 4342 * testsuite/24_iterators/istreambuf_iterator/sentinel.cc: New test. 4343 4344 * include/std/ranges (__deep_const_range, __enable_view_impl): Remove. 4345 (ranges::enable_view): Simplify (LWG 3326). 4346 * include/bits/range_access.h (ranges::enable_view): Declare. 4347 * include/bits/regex.h (__enable_view_impl): Remove partial 4348 specialization. 4349 * include/bits/stl_multiset.h (__enable_view_impl): Likewise. 4350 * include/bits/stl_set.h (__enable_view_impl): Likewise. 4351 * include/bits/unordered_set.h (__enable_view_impl): Likewise. 4352 * include/debug/multiset.h (__enable_view_impl): Likewise. 4353 * include/debug/set.h (__enable_view_impl): Likewise. 4354 * include/debug/unordered_set (__enable_view_impl): Likewise. 4355 * include/experimental/string_view (ranges::enable_view): Define 4356 partial specialization. 4357 * include/std/span (ranges::enable_view): Likewise. 4358 * include/std/string_view (ranges::enable_view): Likewise. 4359 * testsuite/std/ranges/view.cc: Check satisfaction of updated concept. 4360 43612020-02-21 Jonathan Wakely <jwakely@redhat.com> 4362 4363 * include/std/optional (operator<=>(optional<T>, optional<U>)) 4364 (operator<=>(optional<T>, nullopt), operator<=>(optional<T>, U)): 4365 Define for C++20. 4366 * include/std/tuple (__tuple_cmp): New helper function for <=>. 4367 (operator<=>(tuple<T...>, tuple<U>...)): Define for C++20. 4368 * include/std/variant (operator<=>(variant<T...>, variant<T...>)) 4369 (operator<=>(monostate, monostate)): Define for C++20. 4370 * testsuite/20_util/optional/relops/three_way.cc: New test. 4371 * testsuite/20_util/tuple/comparison_operators/three_way.cc: New test. 4372 * testsuite/20_util/variant/89851.cc: Move to ... 4373 * testsuite/20_util/variant/relops/89851.cc: ... here. 4374 * testsuite/20_util/variant/90008.cc: Move to ... 4375 * testsuite/20_util/variant/relops/90008.cc: ... here. 4376 * testsuite/20_util/variant/relops/three_way.cc: New test. 4377 43782020-02-20 Patrick Palka <ppalka@redhat.com> 4379 4380 * include/std/ranges (views::__adaptor::__maybe_refwrap): New utility 4381 function. 4382 (views::__adaptor::_RangeAdaptor::operator()): Add comments. Use 4383 __maybe_refwrap to capture lvalue references by reference, and then use 4384 unwrap_reference_t to forward the by-reference captures as references. 4385 * testsuite/std/ranges/adaptors/split.cc: Augment test. 4386 * testsuite/std/ranges/adaptors/split_neg.cc: New test. 4387 4388 * include/std/ranges (iota_view): Forward declare _Sentinel. 4389 (iota_view::_Iterator): Befriend _Sentinel. 4390 (iota_view::_Sentinel::_M_equal): New member function. 4391 (iota_view::_Sentinel::operator==): Use it. 4392 (views::_Iota::operator()): Forward __f using the correct type. 4393 * testsuite/std/ranges/access/ssize.cc (test06): Don't call views::iota 4394 with integers of different signedness, to appease iota_view's deduction 4395 guide. 4396 * testsuite/std/ranges/iota/iota_view.cc: Augment test. 4397 43982020-02-20 Jonathan Wakely <jwakely@redhat.com> 4399 4400 * include/bits/range_access.h (ranges::begin): Reject array of 4401 incomplete type. 4402 (ranges::end, ranges::size): Require arrays to be bounded. 4403 (ranges::data): Require lvalue or borrowed_range. 4404 (ranges::iterator_t): Remove constraint. 4405 * testsuite/std/ranges/access/begin.cc: Do not check array of 4406 incomplete type. 4407 * testsuite/std/ranges/access/begin_neg.cc: New test. 4408 * testsuite/std/ranges/access/end_neg.cc: Adjust expected error. 4409 * testsuite/std/ranges/access/size_neg.cc: Adjust expected error. 4410 * testsuite/std/ranges/access/ssize.cc: Do not check array of 4411 incomplete type. 4412 4413 * include/std/system_error (error_category::operator<=>) 4414 (operator<=>(const error_code&, const error_code&)) 4415 (operator<=>(const error_condition&, const error_condition&)): Define 4416 for C++20. 4417 * testsuite/19_diagnostics/error_category/operators/less.cc: New test. 4418 * testsuite/19_diagnostics/error_category/operators/three_way.cc: New 4419 test. 4420 * testsuite/19_diagnostics/error_code/operators/equal.cc: Remove 4421 incorrect comment. 4422 * testsuite/19_diagnostics/error_code/operators/less.cc: New test. 4423 * testsuite/19_diagnostics/error_code/operators/not_equal.cc: Remove 4424 incorrect comment. 4425 * testsuite/19_diagnostics/error_code/operators/three_way.cc: New test. 4426 * testsuite/19_diagnostics/error_condition/operators/equal.cc: Remove 4427 incorrect comment. 4428 * testsuite/19_diagnostics/error_condition/operators/less.cc: New test. 4429 * testsuite/19_diagnostics/error_condition/operators/not_equal.cc: 4430 Remove incorrect comment. 4431 * testsuite/19_diagnostics/error_condition/operators/three_way.cc: New 4432 test. 4433 4434 * libsupc++/typeinfo (type_info::operator!=): Remove for C++20. 4435 4436 * include/std/thread (thread::id::operator<=>): Define for C++20. 4437 * testsuite/30_threads/thread/id/70294.cc: Do not take addresses of 4438 functions in namespace std. 4439 * testsuite/30_threads/thread/id/operators_c++20.cc: New test. 4440 44412020-02-19 Patrick Palka <ppalka@redhat.com> 4442 4443 * testsuite/std/ranges/adaptors/split.cc (test03): Don't include the 4444 null terminator of the underlying string as part of the test_range. 4445 (main): Call test03. 4446 44472020-02-19 Jonathan Wakely <jwakely@redhat.com> 4448 4449 * include/bits/stl_iterator.h (common_iterator): Add copyable<I> 4450 requirement (LWG 3385). 4451 * testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Adjust 4452 expected declaration. 4453 4454 * include/std/ranges (take_while_view, drop_view, drop_while_view) 4455 (elements_view:_Iterator): Initialize data members (LWG 3364). 4456 4457 * libsupc++/compare (three_way_comparable): Remove always-false check 4458 that should have been removed with weak_equality (P1959R0). 4459 (three_way_comparable_with): Likewise. Reorder requirements (LWG 3360). 4460 4461 * include/std/concepts (__detail::__partially_ordered_with): Move here 4462 from <compare>. 4463 (totally_ordered, totally_ordered_with): Use __partially_ordered_with 4464 to simplify definition (LWG 3331). 4465 * libsupc++/compare (__detail::__partially_ordered_with): Move to 4466 <concepts>. 4467 4468 * include/std/concepts (totally_ordered_with): Remove redundant 4469 requirement (LWG 3329). 4470 4471 * include/std/ranges (__detail::__convertible_to_non_slicing): New 4472 helper concept. 4473 (__detail::__pair_like_convertible_to): Remove. 4474 (__detail::__pair_like_convertible_from): Add requirements for 4475 non-slicing conversions. 4476 (subrange): Constrain constructors with __convertible_to_non_slicing. 4477 Remove constructors from pair-like types. Add new deduction guide. 4478 * testsuite/std/ranges/subrange/lwg3282_neg.cc: New test. 4479 4480 * include/bits/iterator_concepts.h (iter_move): Add declaration to 4481 prevent unqualified lookup finding a suitable declaration (LWG 3247). 4482 4483 * include/std/memory_resource (polymorphic_allocator::allocate) 4484 (polymorphic_allocator::allocate_object): Change type of exception to 4485 bad_array_new_length (LWG 3237). 4486 * testsuite/20_util/polymorphic_allocator/lwg3237.cc: New test. 4487 4488 * include/std/type_traits (__cpp_lib_unwrap_ref): Define (LWG 3348). 4489 * include/std/version (__cpp_lib_unwrap_ref): Likewise. 4490 * testsuite/20_util/unwrap_reference/1.cc: Check macro. 4491 * testsuite/20_util/unwrap_reference/3.cc: New test. 4492 4493 * include/std/numeric (midpoint(T8, T*)): Do not check for complete 4494 type during overload resolution, use static assert instead (LWG 3200). 4495 * testsuite/26_numerics/midpoint/pointer.cc: Do not test with 4496 incomplete type. 4497 * testsuite/26_numerics/midpoint/pointer_neg.cc: New test. 4498 4499 * include/std/span (span(T (&)[N])): Use non-deduced context to 4500 prevent first parameter from interfering with class template argument 4501 deduction (LWG 3369). 4502 * testsuite/23_containers/span/deduction.cc: Add missing 'const'. 4503 * testsuite/23_containers/span/lwg3255.cc: Check for construction from 4504 rvalues. 4505 4506 * include/std/span (span::const_iterator, span::const_reverse_iterator) 4507 (span::cbegin(), span::cend(), span::crbegin(), span::crend()): 4508 Remove (LWG 3320). 4509 * testsuite/23_containers/span/everything.cc: Replace uses of cbegin 4510 and cend. 4511 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: 4512 Likewise. 4513 * testsuite/20_util/specialized_algorithms/uninitialized_copy/ 4514 constrained.cc: Likewise. 4515 * testsuite/20_util/specialized_algorithms/ 4516 uninitialized_default_construct/constrained.cc: Likewise. 4517 * testsuite/20_util/specialized_algorithms/uninitialized_fill/ 4518 constrained.cc: Likewise. 4519 * testsuite/20_util/specialized_algorithms/uninitialized_move/ 4520 constrained.cc: Likewise. 4521 * testsuite/20_util/specialized_algorithms/ 4522 uninitialized_value_construct/constrained.cc: Likewise. 4523 4524 * include/bits/range_access.h (range_size_t): Define alias template. 4525 * include/std/ranges (all_view): Rename to views::all_t (LWG 3335). 4526 * testsuite/std/ranges/adaptors/filter.cc: Adjust to new name. 4527 4528 * include/std/ranges (filter_view, transform_view, take_view) 4529 (join_view, split_view, reverse_view): Remove commented-out converting 4530 constructors (LWG 3280). 4531 4532 * include/std/memory (uninitialized_construct_using_allocator): Use 4533 std::construct_at (LWG 3321). 4534 4535 * include/std/memory_resource (polymorphic_allocator::allocate_bytes) 4536 (polymorphic_allocator::allocate_object) 4537 (polymorphic_allocator::new_object): Add nodiscard attribute (LWG3304). 4538 4539 LWG 3379. "safe" in several library names is misleading 4540 * include/bits/range_access.h (enable_safe_range): Rename to 4541 enable_borrowed_range. 4542 (__detail::__maybe_safe_range): Rename to __maybe_borrowed_range. 4543 (safe_range): Rename to borrowed_range. 4544 * include/bits/ranges_algo.h: Adjust to use new names. 4545 * include/bits/ranges_algobase.h: Likewise. 4546 * include/bits/ranges_uninitialized.h: Likewise. 4547 * include/std/ranges: Likewise. 4548 (safe_iterator_t): Rename to borrowed_iterator_t. 4549 (safe_subrange_t): Rename to borrowed_subrange_t. 4550 * include/std/span: Adjust to use new names. 4551 * include/std/string_view: Likewise. 4552 * include/experimental/string_view: Likewise. 4553 * testsuite/std/ranges/access/begin.cc: Likewise. 4554 * testsuite/std/ranges/access/cbegin.cc: Likewise. 4555 * testsuite/std/ranges/access/cdata.cc: Likewise. 4556 * testsuite/std/ranges/access/cend.cc: Likewise. 4557 * testsuite/std/ranges/access/crbegin.cc: Likewise. 4558 * testsuite/std/ranges/access/crend.cc: Likewise. 4559 * testsuite/std/ranges/access/data.cc: Likewise. 4560 * testsuite/std/ranges/access/end.cc: Likewise. 4561 * testsuite/std/ranges/access/rbegin.cc: Likewise. 4562 * testsuite/std/ranges/access/rend.cc: Likewise. 4563 * testsuite/std/ranges/safe_range.cc: Likewise. 4564 * testsuite/std/ranges/safe_range_types.cc: Likewise. 4565 * testsuite/util/testsuite_iterators.h: Likewise. 4566 4567 * include/std/ranges (tuple_element<0, const subrange<I, S, K>>) 4568 (tuple_element<1, const subrange<I, S, K>>): Add partial 4569 specializations (LWG 3398). 4570 * testsuite/std/ranges/subrange/tuple_like.cc: New test. 4571 4572 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn) 4573 (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn) 4574 (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool. 4575 45762020-02-18 Patrick Palka <ppalka@redhat.com> 4577 4578 P1983R0 Wording for GB301, US296, US292, US291, and US283 4579 * include/std/ranges (filter_view::pred): New member function. 4580 (join_view::_Iterator::_Iterator): Remove now-redundant comment since 4581 P1983R0 fixes the highlighted issue in the same way. 4582 (join_view::_Iterator<_Const>): Add friend 4583 join_view::_Iterator<!_Const>. 4584 (join_view::_M_inner): Remove mutable specifier, effectively reverting 4585 the proposed wording changes of P3278. 4586 (join_view::begin): Refine the condition for when to return a const 4587 iterator. 4588 (split_view::_OuterIter::_OuterIter): Adjust constraints. 4589 * testsuite/std/ranges/adaptors/filter.cc: Test that filter_view::pred 4590 exists and works. 4591 45922020-02-18 Jonathan Wakely <jwakely@redhat.com> 4593 4594 PR libstdc++/93818 4595 * include/std/ranges (_RangeAdaptor): Add deduction guide. 4596 (filter_view::_Iterator): Add alias _Vp_iter and use in place of 4597 iterator_t<_Vp>. 4598 (filter_view::_Iterator::_S_iter_cat()): Add 'typename'. 4599 (transform_view::_Iterator): Add alias _Base_iter and use in place of 4600 iterator_t<_Base>. 4601 (transform_view::_Iterator::_S_iter_cat()): Add 'typename'. 4602 (join_view::_Iterator): Add _Outer_iter and _Inner_iter aliases. 4603 (join_view::_Iterator::_S_iter_cat()): Add 'typename'. 4604 (split_view::_InnerIter::_S_iter_cat()): Likewise. 4605 4606 * testsuite/20_util/integer_comparisons/equal.cc: Fix invalid 4607 assumption that long is wider than int. 4608 * testsuite/20_util/integer_comparisons/greater_equal.cc: Likewise. 4609 * testsuite/20_util/integer_comparisons/less.cc: Likewise. 4610 * testsuite/20_util/integer_comparisons/less_equal.cc: Likewise. 4611 * testsuite/20_util/integer_comparisons/not_equal.cc: Likewise. 4612 4613 P1976R2 Fixed-size span construction from dynamic range 4614 * include/std/span (__cpp_lib_span): Update value. 4615 (span(It, size_type), span(It, End)): Make conditionally explicit. Add 4616 assertion. 4617 (span(R&&), span(const span<OType, OExtent>&)): Likewise and relax 4618 constraints. 4619 (span::first<Count>(), span::last<Count>()): Use explicit type in 4620 return statement. 4621 (as_bytes, as_writable_bytes): Likewise. 4622 * include/std/version (__cpp_lib_span): Update value. 4623 * testsuite/23_containers/span/1.cc: Check new value. 4624 * testsuite/23_containers/span/2.cc: Check new value. 4625 * testsuite/23_containers/span/explicit.cc: New test. 4626 4627 * include/std/span (span::__is_compatible_array): Simplify alias 4628 template by using requires-clause. 4629 (span::__is_compatible_ref): New alias template for constraining 4630 constructors. 4631 (span::__is_compatible_iterator, span::__is_compatible_range): Remove. 4632 (span(It, size_type), span(It, End)): Use __is_compatible_ref. 4633 (span(T(&)[N], span(array<T, N>&), span(const array<T, N>&)): Remove 4634 redundant parentheses. 4635 (span(R&&)): Add missing constraints. 4636 4637 * include/std/span (span): Reorder members and rename template 4638 parameters to match declarations in the C++2a working paper. 4639 4640 P2116R0 Remove tuple-like protocol support from fixed-extent span 4641 * include/std/span (get, tuple_size, tuple_element): Remove. 4642 * testsuite/23_containers/span/everything.cc: Remove checks for 4643 tuple-like API. 4644 * testsuite/23_containers/span/get_neg.cc: Remove. 4645 * testsuite/23_containers/span/tuple_element_dynamic_neg.cc: Remove. 4646 * testsuite/23_containers/span/tuple_element_oob_neg.cc: Remove. 4647 * testsuite/23_containers/span/tuple_size_neg.cc: Remove. 4648 46492020-02-17 Patrick Palka <ppalka@redhat.com> 4650 4651 P2106R0 Alternative wording for GB315 and GB316 4652 * include/bits/ranges_algo.h (in_fun_result): New. 4653 (for_each_result, for_each_n_result): Change into an alias of 4654 in_fun_result. 4655 (in_in_result): New. 4656 (mismatch_result): Change into an alias of in_in_result. 4657 (copy_if_result): Change into an alias of in_out_result. 4658 (swap_ranges_result): Change into an alias of in_in_result. 4659 (unary_transform_result): Change into an alias of in_out_result. 4660 (in_in_out_result): New. 4661 (binary_transform_result): Change into an alias of in_in_out_result. 4662 (replace_copy_result, replace_copy_if_result, remove_copy_if_result, 4663 remove_copy_result, unique_copy_result, reverse_copy_result, 4664 rotate_copy_result, partial_sort_copy_result): Change into an alias of 4665 in_out_result. 4666 (in_out_out_result): New. 4667 (partition_copy_result, merge_result): Change into an alias of 4668 in_out_out_result. 4669 (set_union_result, set_intersection_result): Change into an alias of 4670 in_in_out_result. 4671 (set_difference_result): Change into an alias of in_out_result. 4672 (set_symmetric_difference): Change into an alias of in_in_out_result. 4673 (min_max_result): New. 4674 (minmax_result, minmax_element_result): Change into an alias of 4675 min_max_result. 4676 (in_found_result): New. 4677 (next_permutation_result, prev_permutation_result): Change into an alias 4678 of in_found_result. 4679 (__next_permutation_fn::operator(), __prev_permutation_fn::operator()): 4680 Adjust following changes to next_permutation_result and 4681 prev_permutation_result. 4682 * include/bits/ranges_algobase.h (in_out_result): New. 4683 (copy_result, move_result, move_backward_result, copy_backward_result, 4684 copy_n_result): Change into an alias of in_out_result. 4685 * include/bits/ranges_uninitialized.h (uninitialized_copy_result, 4686 uninitialized_copy_n_result, uninitialized_move_result, 4687 uninitialized_move_n_result): Likewise. 4688 * testsuite/25_algorithms/next_permutation/constrained.cc: Adjust uses of 4689 structured bindings. 4690 * testsuite/25_algorithms/prev_permutation/constrained.cc: Likewise. 4691 4692 P1243R4 Rangify new algorithms 4693 * include/bits/ranges_algo.h (for_each_n_result, __for_each_n_fn, 4694 for_each_n, __sample_fn, sample, __clamp_fn, clamp): New. 4695 * testsuite/25_algorithms/clamp/constrained.cc: New test. 4696 * testsuite/25_algorithms/for_each/constrained.cc: Augment test. 4697 * testsuite/25_algorithms/sample/constrained.cc: New test. 4698 46992020-02-17 Jonathan Wakely <jwakely@redhat.com> 4700 4701 P1964R2 Wording for boolean-testable 4702 * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn) 4703 (__adjacent_find_fn): Cast result of predicate to bool. 4704 * include/std/concepts (__boolean): Remove. 4705 (__detail::__boolean_testable_impl, __detail::__boolean_testable): Add 4706 new helper concepts. 4707 (__detail::__weakly_eq_cmp_with, totally_ordered, totally_ordered_with) 4708 (predicate): Use __boolean_testable instead of boolean. 4709 * libsupc++/compare (__detail::__partially_ordered, _Synth3way): 4710 Likewise. 4711 4712 P1970R2 Consistency for size() functions: Add ranges::ssize 4713 * include/bits/range_access.h (_SSize, ssize): Define for C++20. 4714 * testsuite/std/ranges/access/ssize.cc: New test. 4715 4716 P1956R1 On the names of low-level bit manipulation functions 4717 * include/bits/hashtable_policy.h: Update comment. 4718 * include/std/bit (__ispow2, __ceil2, __floor2, __log2p1): Rename. 4719 (ispow2, ceil2, floor2, log2p1): Likewise. 4720 (__cpp_lib_int_pow2): Add feature test macro. 4721 * include/std/charconv (__to_chars_len_2): Adjust use of __log2p1. 4722 * include/std/memory (assume_aligned): Adjust use of ispow2. 4723 * include/std/version (__cpp_lib_int_pow2): Add. 4724 * libsupc++/new_opa.cc: Adjust use of __ispow2. 4725 * src/c++17/memory_resource.cc: Likewise, and for __ceil2 and __log2p1. 4726 * testsuite/17_intro/freestanding.cc: Adjust use of ispow2. 4727 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Rename to ... 4728 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc: ... here. 4729 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Rename to ... 4730 * testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc: ... here. 4731 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Rename to ... 4732 * testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc: ... here. 4733 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Rename to ... 4734 * testsuite/26_numerics/bit/bit.pow.two/bit_width.cc: ... here. 4735 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Rename to ... 4736 * testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc: ... here. 4737 4738 * include/std/charconv: Add comment. 4739 4740 PR libstdc++/92546 (partial) 4741 * include/bits/random.h (uniform_random_bit_generator): Move definition 4742 to <bits/uniform_int_dist.h>. 4743 * include/bits/ranges_algo.h: Include <bits/uniform_int_dist.h> instead 4744 of <bits/random.h>. 4745 * include/bits/ranges_algobase.h: Do not include <cmath>. 4746 * include/bits/uniform_int_dist.h (uniform_random_bit_generator): 4747 Move here. 4748 * include/std/ranges: Do not include <limits>. 4749 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno. 4750 4751 PR libstdc++/92546 (partial) 4752 * include/Makefile.am: Add new header. 4753 * include/Makefile.in: Regenerate. 4754 * include/bits/int_limits.h: New header. 4755 * include/bits/parse_numbers.h (__select_int::_Select_int): Replace 4756 numeric_limits with __detail::__int_limits. 4757 * include/std/bit (__rotl, __rotr, __countl_zero, __countl_one) 4758 (__countr_zero, __countr_one, __popcount, __ceil2, __floor2, __log2p1): 4759 Likewise. 4760 * include/std/charconv (__to_chars_8, __from_chars_binary) 4761 (__from_chars_alpha_to_num, from_chars): Likewise. 4762 * include/std/memory_resource (polymorphic_allocator::allocate) 4763 (polymorphic_allocator::allocate_object): Likewise. 4764 * include/std/string_view (basic_string_view::_S_compare): Likewise. 4765 * include/std/utility (in_range): Likewise. 4766 * testsuite/20_util/integer_comparisons/in_range_neg.cc: Adjust for 4767 extra error about incomplete type __int_limits<bool>. 4768 * testsuite/26_numerics/bit/bit.count/countl_one.cc: Include <limits>. 4769 * testsuite/26_numerics/bit/bit.count/countl_zero.cc: Likewise. 4770 * testsuite/26_numerics/bit/bit.count/countr_one.cc: Likewise. 4771 * testsuite/26_numerics/bit/bit.count/countr_zero.cc: Likewise. 4772 * testsuite/26_numerics/bit/bit.count/popcount.cc: Likewise. 4773 * testsuite/26_numerics/bit/bit.pow.two/ceil2_neg.cc: Likewise. 4774 * testsuite/26_numerics/bit/bit.pow.two/ceil2.cc: Likewise. 4775 * testsuite/26_numerics/bit/bit.pow.two/floor2.cc: Likewise. 4776 * testsuite/26_numerics/bit/bit.pow.two/ispow2.cc: Likewise. 4777 * testsuite/26_numerics/bit/bit.pow.two/log2p1.cc: Likewise. 4778 * testsuite/26_numerics/bit/bit.rotate/rotl.cc: Likewise. 4779 * testsuite/26_numerics/bit/bit.rotate/rotr.cc: Likewise. 4780 4781 * python/libstdcxx/v6/printers.py (StdCmpCatPrinter.to_string): Update 4782 value for partial_ordering::unordered. 4783 4784 * include/bits/iterator_concepts.h (indirectly_copyable_storable): Add 4785 const-qualified expression variations. 4786 * include/std/concepts (copyable): Likewise. 4787 4788 * include/std/type_traits (__is_standard_integer): New helper trait. 4789 * include/std/utility (cmp_equal, cmp_not_equal, cmp_less, cmp_greater) 4790 (cmp_less_equal, cmp_greater_equal, in_range): Define for C++20. 4791 * include/std/version (__cpp_lib_integer_comparison_functions): Define. 4792 * testsuite/20_util/integer_comparisons/1.cc: New test. 4793 * testsuite/20_util/integer_comparisons/2.cc: New test. 4794 * testsuite/20_util/integer_comparisons/equal.cc: New test. 4795 * testsuite/20_util/integer_comparisons/equal_neg.cc: New test. 4796 * testsuite/20_util/integer_comparisons/greater_equal.cc: New test. 4797 * testsuite/20_util/integer_comparisons/greater_equal_neg.cc: New test. 4798 * testsuite/20_util/integer_comparisons/greater_neg.cc: New test. 4799 * testsuite/20_util/integer_comparisons/in_range.cc: New test. 4800 * testsuite/20_util/integer_comparisons/in_range_neg.cc: New test. 4801 * testsuite/20_util/integer_comparisons/less.cc: New test. 4802 * testsuite/20_util/integer_comparisons/less_equal.cc: New test. 4803 * testsuite/20_util/integer_comparisons/less_equal_neg.cc: New test. 4804 * testsuite/20_util/integer_comparisons/less_neg.cc: New test. 4805 * testsuite/20_util/integer_comparisons/not_equal.cc: New test. 4806 * testsuite/20_util/integer_comparisons/not_equal_neg.cc: New test. 4807 48082020-02-16 Patrick Palka <ppalka@redhat.com> 4809 4810 * include/bits/ranges_algo.h (__lexicographical_compare_fn::operator()): 4811 Move code after an early exit constexpr if to under an else branch. 4812 * include/bits/ranges_algobase.h (__equal_fn::operator()): Likewise. 4813 48142020-02-15 Patrick Palka <ppalka@redhat.com> 4815 4816 * include/bits/ranges_algo.h: Adjust whitespace and formatting. 4817 * include/bits/ranges_algobase.h: Likewise. 4818 * include/bits/ranges_uninitialized.h: Likewise. 4819 4820 * include/bits/ranges_algo.h: (adjacent_find, all_of, any_of, 4821 binary_search, copy_if, count, count_if, equal_range, find, find_end, 4822 find_first_of, find_if, find_if_not, for_each, generate, generate_n, 4823 includes, inplace_merge, is_heap, is_heap_until, is_partitioned, 4824 is_permutation, is_sorted, is_sorted_until, lexicographical_compare, 4825 lower_bound, make_heap, max, max_element, merge, min, min_element, 4826 minmax, minmax_element, mismatch, next_permutation, none_of, 4827 nth_element, partial_sort, partial_sort_copy, partition, partition_copy, 4828 partition_point, pop_heap, prev_permutation, push_heap, remove, 4829 remove_copy, remove_copy_if, remove_if, replace, replace_copy, 4830 replace_copy_if, replace_if, reverse, reverse_copy, rotate, rotate_copy, 4831 search, search_n, set_difference, set_intersection, 4832 set_symmetric_difference, set_union, shuffle, sort, sort_heap, 4833 stable_partition, stable_sort, swap_ranges, transform, unique, 4834 unique_copy, upper_bound): Convert into function objects. 4835 * include/bits/ranges_algobase.h: (equal, copy, move, copy_n, fill_n, 4836 fill, move_backward, copy_backward): Likewise. 4837 * include/bits/ranges_uninitialized.h (uninitialized_default_construct, 4838 uninitialized_default_construct_n, uninitialized_value_construct, 4839 uninitialized_value_construct_n, uninitialized_copy, 4840 uninitialized_copy_n, uninitialized_move, uninitialized_move_n, 4841 uninitialized_fill, uninitialized_fill_n, construct_at, destroy_at, 4842 destroy, destroy_n): Likewise. 4843 4844 * include/bits/ranges_algo.h (ranges::__find_end): Fold into ... 4845 (ranges::find_end): ... here. 4846 (ranges::__lexicographical_compare): Fold into ... 4847 (ranges::lexicographical_compare): ... here. 4848 * include/bits/ranges_algobase.h (ranges::__equal): Fold into ... 4849 (ranges::equal): ... here. 4850 48512020-02-15 Jonathan Wakely <jwakely@redhat.com> 4852 4853 * include/bits/erase_if.h (__cpp_lib_erase_if): Define to 202002L. 4854 * include/std/deque: Likewise. 4855 * include/std/forward_list: Likewise. 4856 * include/std/list: Likewise. 4857 * include/std/string: Likewise. 4858 * include/std/vector: Likewise. 4859 * include/std/version: Likewise. 4860 * testsuite/23_containers/deque/erasure.cc: Test for new value. 4861 * testsuite/23_containers/forward_list/erasure.cc: Likewise. 4862 * testsuite/23_containers/list/erasure.cc: Likewise. 4863 * testsuite/23_containers/map/erasure.cc: Likewise. 4864 * testsuite/23_containers/set/erasure.cc: Likewise. 4865 * testsuite/23_containers/unordered_map/erasure.cc: Likewise. 4866 * testsuite/23_containers/unordered_set/erasure.cc: Likewise. 4867 * testsuite/23_containers/vector/erasure.cc: Likewise. 4868 48692020-02-15 Jonathan Wakely <jwakely@redhat.com> 4870 4871 * include/bits/random.h (uniform_random_bit_generator): Require min() 4872 and max() to be constant expressions and min() to be less than max(). 4873 * testsuite/26_numerics/random/concept.cc: Check additional cases. 4874 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error lineno. 4875 48762020-02-13 Patrick Palka <ppalka@redhat.com> 4877 4878 * include/Makefile.am: Add <bits/ranges_uninitialized.h>. 4879 * include/Makefile.in: Regenerate. 4880 * include/bits/ranges_uninitialized.h: New header. 4881 * include/std/memory: Include it. 4882 * testsuite/20_util/specialized_algorithms/destroy/constrained.cc: New 4883 test. 4884 * .../uninitialized_copy/constrained.cc: New test. 4885 * .../uninitialized_default_construct/constrained.cc: New test. 4886 * .../uninitialized_fill/constrained.cc: New test. 4887 * .../uninitialized_move/constrained.cc: New test. 4888 * .../uninitialized_value_construct/constrained.cc: New test. 4889 4890 * include/Makefile.am: Add bits/ranges_algobase.h 4891 * include/Makefile.in: Regenerate. 4892 * bits/ranges_algo.h: Include <bits/ranges_algobase.h> and refactor 4893 existing #includes. 4894 (__detail::__is_normal_iterator, __detail::is_reverse_iterator, 4895 __detail::__is_move_iterator, copy_result, move_result, 4896 __equal, equal, copy_result, move_result, move_backward_result, 4897 copy_backward_result, __copy_or_move_backward, __copy_or_move, copy, 4898 move, copy_backward, move_backward, copy_n_result, copy_n, fill_n, 4899 fill): Split out into ... 4900 * bits/range_algobase.h: ... this new header. 4901 49022020-02-12 Patrick Palka <ppalka@redhat.com> 4903 4904 LWG 3389 and LWG 3390 4905 * include/bits/stl_iterator.h (move_move_iterator): Use std::move when 4906 constructing the move_iterator with __i. 4907 (counted_iterator::counted_iterator): Use std::move when initializing 4908 M_current with __i. 4909 * testsuite/24_iterators/counted_iterator/lwg3389.cc: New test. 4910 * testsuite/24_iterators/move_iterator/lwg3390.cc: New test. 4911 49122020-02-12 Sandra Loosemore <sandra@codesourcery.com> 4913 4914 PR libstdc++/79193 4915 PR libstdc++/88999 4916 4917 * configure: Regenerated. 4918 49192020-02-12 François Dumont <fdumont@gcc.gnu.org> 4920 4921 * include/bits/hashtable.h 4922 (_Hashtable<>(_Hashtable&&, std::allocator_type&)): Add 4923 missing std namespace qualification to forward call. 4924 49252020-02-09 Jonathan Wakely <jwakely@redhat.com> 4926 4927 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Fix 4928 comment. 4929 * testsuite/20_util/function_objects/range.cmp/less.ccL Likewise. 4930 4931 * include/std/ranges: Fix non-ASCII characters in comment. 4932 4933 * include/bits/range_cmp.h (__detail::__eq_builtin_ptr_cmp): Require 4934 equality comparison to be valid and return bool. 4935 (__detail::__less_builtin_ptr_cmp): Likewise for less-than comparison. 4936 * testsuite/20_util/function_objects/range.cmp/equal_to.cc: Check 4937 type with ambiguous conversion to fundamental types. 4938 * testsuite/20_util/function_objects/range.cmp/less.cc: Likewise. 4939 49402020-02-07 Jonathan Wakely <jwakely@redhat.com> 4941 4942 * include/bits/iterator_concepts.h (iter_difference_t, iter_value_t): 4943 Use remove_cvref_t. 4944 (readable_traits): Rename to indirectly_readable_traits. 4945 (readable): Rename to indirectly_readable. 4946 (writable): Rename to indirectly_writable. 4947 (__detail::__iter_exchange_move): Do not use remove_reference_t. 4948 (indirectly_swappable): Adjust requires expression parameter types. 4949 expression. 4950 * include/bits/ranges_algo.h (ranges::transform, ranges::replace) 4951 (ranges::replace_if, ranges::generate_n, ranges::generate) 4952 (ranges::remove): Use new name for writable. 4953 * include/bits/stl_iterator.h (__detail::__common_iter_has_arrow): 4954 Use new name for readable. 4955 * include/ext/pointer.h (readable_traits<_Pointer_adapter<P>>): Use 4956 new name for readable_traits. 4957 * testsuite/24_iterators/associated_types/readable.traits.cc: Likewise. 4958 * testsuite/24_iterators/indirect_callable/projected.cc: Adjust for 4959 new definition of indirectly_readable. 4960 4961 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Change 4962 to take parameters of common_iterator, instead of the common_iterator 4963 type itself. Fix argument for __common_iter_has_arrow constraint. 4964 (iterator_traits<common_iterator<I, S>>::pointer): Adjust. 4965 49662020-02-07 Jonathan Wakely <jwakely@redhat.com> 4967 4968 * include/std/ranges (iota_view): Add braces to prevent -Wempty-body 4969 warning. 4970 (basic_istream_view::_Iterator::operator++()): Add missing return. 4971 49722020-02-07 Patrick Palka <ppalka@redhat.com> 4973 4974 * include/bits/ranges_algo.h: Remove extraneous &&. 4975 4976 * include/std/ranges (ranges::__detail::__stream_extractable, 4977 ranges::basic_istream_view, ranges::istream_view): Define. 4978 * testsuite/std/ranges/istream_view: New test. 4979 4980 Implement C++20 range adaptors 4981 * include/std/ranges: Include <bits/refwrap.h> and <tuple>. 4982 (subrange::_S_store_size): Mark as const instead of constexpr to 4983 avoid what seems to be a bug in GCC. 4984 (__detail::__box): Give it defaulted copy and move constructors. 4985 (ranges::views::_Single::operator()): Mark constexpr. 4986 (ranges::views::_Iota::operator()): Mark constexpr. 4987 (__detail::Empty): Define. 4988 (ranges::views::__closure::_RangeAdaptor, 4989 ranges::views::__closure::_RangeAdaptorClosure, ref_view, all_view, 4990 ranges::views::all, ranges::__detail::find_if, 4991 ranges::__detail::find_if_not, ranges::__detail::mismatch, 4992 ranges::detail::min, filter_view, ranges::views::filter, transform_view, 4993 ranges::views::transform, take_view, ranges::views::take, 4994 take_while_view, ranges::views::take_while, drop_view, 4995 ranges::views::drop, join_view, ranges::views::join, 4996 __detail::require_constant, __detail::tiny_range, split_view, 4997 ranges::views::split, ranges::views::_Counted, ranges::views::counted, 4998 common_view, ranges::views::common, reverse_view, 4999 ranges::views::reverse, 5000 ranges::views::__detail::__is_reversible_subrange, 5001 ranges::views::__detail::__is_reverse_view, reverse_view, 5002 ranges::views::reverse, __detail::__has_tuple_element, elements_view, 5003 ranges::views::elements, ranges::views::keys, ranges::views::values): 5004 Define. 5005 (views): Alias for ranges::views. 5006 (tuple_size<ranges::subrange<>>, tuple_element<0, ranges::subrange>, 5007 tuple_element<1, ranges::subrange>): New partial specializations. 5008 * testsuite/std/ranges/adaptors/all.cc: New test. 5009 * testsuite/std/ranges/adaptors/common.cc: Likewise. 5010 * testsuite/std/ranges/adaptors/counted.cc: Likewise. 5011 * testsuite/std/ranges/adaptors/drop.cc: Likewise. 5012 * testsuite/std/ranges/adaptors/drop_while.cc: Likewise. 5013 * testsuite/std/ranges/adaptors/elements.cc: Likewise. 5014 * testsuite/std/ranges/adaptors/filter.cc: Likewise. 5015 * testsuite/std/ranges/adaptors/join.cc: Likewise. 5016 * testsuite/std/ranges/adaptors/reverse.cc: Likewise. 5017 * testsuite/std/ranges/adaptors/split.cc: Likewise. 5018 * testsuite/std/ranges/adaptors/take.cc: Likewise. 5019 * testsuite/std/ranges/adaptors/take_while.cc: Likewise. 5020 * testsuite/std/ranges/adaptors/transform.cc: Likewise. 5021 50222020-02-07 Jonathan Wakely <jwakely@redhat.com> 5023 5024 * libsupc++/compare (__cmp_cat::type): Define typedef for underlying 5025 type of enumerations and comparison category types. 5026 (__cmp_cat::_Ord, __cmp_cat::_Ncmp): Add underlying type. 5027 (__cmp_cat::_Ncmp::unordered): Change value to 2. 5028 (partial_ordering::_M_value, weak_ordering::_M_value) 5029 (strong_ordering::_M_value): Change type to __cmp_cat::type. 5030 (partial_ordering::_M_is_ordered): Remove data member. 5031 (partial_ordering): Use second bit of _M_value for unordered. Adjust 5032 comparison operators. 5033 (weak_ordering::operator partial_ordering): Simplify to remove 5034 branches. 5035 (operator<=>(unspecified, weak_ordering)): Likewise. 5036 (strong_ordering::operator partial_ordering): Likewise. 5037 (strong_ordering::operator weak_ordering): Likewise. 5038 (operator<=>(unspecified, strong_ordering)): Likewise. 5039 * testsuite/18_support/comparisons/categories/partialord.cc: New test. 5040 * testsuite/18_support/comparisons/categories/strongord.cc: New test. 5041 * testsuite/18_support/comparisons/categories/weakord.cc: New test. 5042 5043 * include/std/ranges (iota_view::_Iterator): Fix typo in name of 5044 __cpp_lib_three_way_comparison macro and use deduced return type for 5045 operator<=>. 5046 * testsuite/std/ranges/iota/iterator.cc: New test. 5047 50482020-02-07 Patrick Palka <ppalka@redhat.com> 5049 Jonathan Wakely <jwakely@redhat.com> 5050 5051 Implement C++20 constrained algorithms 5052 * include/Makefile.am: Add new header. 5053 * include/Makefile.in: Regenerate. 5054 * include/std/algorithm: Include <bits/ranges_algo.h>. 5055 * include/bits/ranges_algo.h: New file. 5056 * testsuite/25_algorithms/adjacent_find/constrained.cc: New test. 5057 * testsuite/25_algorithms/all_of/constrained.cc: New test. 5058 * testsuite/25_algorithms/any_of/constrained.cc: New test. 5059 * testsuite/25_algorithms/binary_search/constrained.cc: New test. 5060 * testsuite/25_algorithms/copy/constrained.cc: New test. 5061 * testsuite/25_algorithms/copy_backward/constrained.cc: New test. 5062 * testsuite/25_algorithms/copy_if/constrained.cc: New test. 5063 * testsuite/25_algorithms/copy_n/constrained.cc: New test. 5064 * testsuite/25_algorithms/count/constrained.cc: New test. 5065 * testsuite/25_algorithms/count_if/constrained.cc: New test. 5066 * testsuite/25_algorithms/equal/constrained.cc: New test. 5067 * testsuite/25_algorithms/equal_range/constrained.cc: New test. 5068 * testsuite/25_algorithms/fill/constrained.cc: New test. 5069 * testsuite/25_algorithms/fill_n/constrained.cc: New test. 5070 * testsuite/25_algorithms/find/constrained.cc: New test. 5071 * testsuite/25_algorithms/find_end/constrained.cc: New test. 5072 * testsuite/25_algorithms/find_first_of/constrained.cc: New test. 5073 * testsuite/25_algorithms/find_if/constrained.cc: New test. 5074 * testsuite/25_algorithms/find_if_not/constrained.cc: New test. 5075 * testsuite/25_algorithms/for_each/constrained.cc: New test. 5076 * testsuite/25_algorithms/generate/constrained.cc: New test. 5077 * testsuite/25_algorithms/generate_n/constrained.cc: New test. 5078 * testsuite/25_algorithms/heap/constrained.cc: New test. 5079 * testsuite/25_algorithms/includes/constrained.cc: New test. 5080 * testsuite/25_algorithms/inplace_merge/constrained.cc: New test. 5081 * testsuite/25_algorithms/is_partitioned/constrained.cc: New test. 5082 * testsuite/25_algorithms/is_permutation/constrained.cc: New test. 5083 * testsuite/25_algorithms/is_sorted/constrained.cc: New test. 5084 * testsuite/25_algorithms/is_sorted_until/constrained.cc: New test. 5085 * testsuite/25_algorithms/lexicographical_compare/constrained.cc: New 5086 test. 5087 * testsuite/25_algorithms/lower_bound/constrained.cc: New test. 5088 * testsuite/25_algorithms/max/constrained.cc: New test. 5089 * testsuite/25_algorithms/max_element/constrained.cc: New test. 5090 * testsuite/25_algorithms/merge/constrained.cc: New test. 5091 * testsuite/25_algorithms/min/constrained.cc: New test. 5092 * testsuite/25_algorithms/min_element/constrained.cc: New test. 5093 * testsuite/25_algorithms/minmax/constrained.cc: New test. 5094 * testsuite/25_algorithms/minmax_element/constrained.cc: New test. 5095 * testsuite/25_algorithms/mismatch/constrained.cc: New test. 5096 * testsuite/25_algorithms/move/constrained.cc: New test. 5097 * testsuite/25_algorithms/move_backward/constrained.cc: New test. 5098 * testsuite/25_algorithms/next_permutation/constrained.cc: New test. 5099 * testsuite/25_algorithms/none_of/constrained.cc: New test. 5100 * testsuite/25_algorithms/nth_element/constrained.cc: New test. 5101 * testsuite/25_algorithms/partial_sort/constrained.cc: New test. 5102 * testsuite/25_algorithms/partial_sort_copy/constrained.cc: New test. 5103 * testsuite/25_algorithms/partition/constrained.cc: New test. 5104 * testsuite/25_algorithms/partition_copy/constrained.cc: New test. 5105 * testsuite/25_algorithms/partition_point/constrained.cc: New test. 5106 * testsuite/25_algorithms/prev_permutation/constrained.cc: New test. 5107 * testsuite/25_algorithms/remove/constrained.cc: New test. 5108 * testsuite/25_algorithms/remove_copy/constrained.cc: New test. 5109 * testsuite/25_algorithms/remove_copy_if/constrained.cc: New test. 5110 * testsuite/25_algorithms/remove_if/constrained.cc: New test. 5111 * testsuite/25_algorithms/replace/constrained.cc: New test. 5112 * testsuite/25_algorithms/replace_copy/constrained.cc: New test. 5113 * testsuite/25_algorithms/replace_copy_if/constrained.cc: New test. 5114 * testsuite/25_algorithms/replace_if/constrained.cc: New test. 5115 * testsuite/25_algorithms/reverse/constrained.cc: New test. 5116 * testsuite/25_algorithms/reverse_copy/constrained.cc: New test. 5117 * testsuite/25_algorithms/rotate/constrained.cc: New test. 5118 * testsuite/25_algorithms/rotate_copy/constrained.cc: New test. 5119 * testsuite/25_algorithms/search/constrained.cc: New test. 5120 * testsuite/25_algorithms/search_n/constrained.cc: New test. 5121 * testsuite/25_algorithms/set_difference/constrained.cc: New test. 5122 * testsuite/25_algorithms/set_intersection/constrained.cc: New test. 5123 * testsuite/25_algorithms/set_symmetric_difference/constrained.cc: New 5124 test. 5125 * testsuite/25_algorithms/set_union/constrained.cc: New test. 5126 * testsuite/25_algorithms/shuffle/constrained.cc: New test. 5127 * testsuite/25_algorithms/sort/constrained.cc: New test. 5128 * testsuite/25_algorithms/stable_partition/constrained.cc: New test. 5129 * testsuite/25_algorithms/stable_sort/constrained.cc: New test. 5130 * testsuite/25_algorithms/swap_ranges/constrained.cc: New test. 5131 * testsuite/25_algorithms/transform/constrained.cc: New test. 5132 * testsuite/25_algorithms/unique/constrained.cc: New test. 5133 * testsuite/25_algorithms/unique_copy/constrained.cc: New test. 5134 * testsuite/25_algorithms/upper_bound/constrained.cc: New test. 5135 51362020-02-06 Jonathan Wakely <jwakely@redhat.com> 5137 5138 * include/bits/stl_iterator.h (__detail::__common_iter_ptr): Fix PR 5139 number in comment. Fix indentation. 5140 5141 * include/bits/stl_algobase.h (__iter_swap, __iter_swap<true>): Remove 5142 redundant _GLIBCXX20_CONSTEXPR. 5143 5144 * include/std/ranges (viewable_range): Replace decay_t with 5145 remove_cvref_t (LWG 3375). 5146 51472020-02-05 Jonathan Wakely <jwakely@redhat.com> 5148 5149 * include/bits/iterator_concepts.h (iter_reference_t) 5150 (iter_rvalue_reference_t, iter_common_reference_t, indirect_result_t): 5151 Remove workarounds for PR c++/67704. 5152 * testsuite/24_iterators/aliases.cc: New test. 5153 51542020-02-05 Patrick Palka <ppalka@redhat.com> 5155 5156 * include/bits/stl_iterator.h (move_iterator::move_iterator): Move __i 5157 when initializing _M_current. 5158 (move_iterator::base): Split into two overloads differing in 5159 ref-qualifiers as in P1207R4 for C++20. 5160 51612020-02-04 Jonathan Wakely <jwakely@redhat.com> 5162 5163 * include/std/functional (_GLIBCXX_NOT_FN_CALL_OP): Un-define after 5164 use. 5165 5166 PR libstdc++/93562 5167 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define. 5168 (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it. 5169 * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test. 5170 51712020-02-01 Andrew Burgess <andrew.burgess@embecosm.com> 5172 5173 * configure: Regenerate. 5174 51752020-01-31 Patrick Palka <ppalka@redhat.com> 5176 5177 * testsuite/24_iterators/range_operations/distance.cc: Do not assume 5178 test_range::end() returns the same type as test_range::begin(). 5179 * testsuite/24_iterators/range_operations/next.cc: Likewise. 5180 * testsuite/24_iterators/range_operations/prev.cc: Likewise. 5181 * testsuite/util/testsuite_iterators.h (__gnu_test::test_range::end): 5182 Always return a sentinel<I>. 5183 51842020-01-29 Jonathan Wakely <jwakely@redhat.com> 5185 5186 PR libstdc++/92895 5187 * include/std/stop_token (stop_token::stop_possible()): Call new 5188 _M_stop_possible() function. 5189 (stop_token::stop_requested()): Do not use stop_possible(). 5190 (stop_token::binary_semaphore): New class, as temporary stand-in for 5191 std::binary_semaphore. 5192 (stop_token::_Stop_cb::_M_callback): Add noexcept to type. 5193 (stop_token::_Stop_cb::_M_destroyed, stop_token::_Stop_cb::_M_done): 5194 New data members for symchronization with stop_callback destruction. 5195 (stop_token::_Stop_cb::_Stop_cb): Make non-template. 5196 (stop_token::_Stop_cb::_M_linked, stop_token::_Stop_cb::_S_execute): 5197 Remove. 5198 (stop_token::_Stop_cb::_M_run): New member function. 5199 (stop_token::_Stop_state::_M_stopped, stop_token::_Stop_state::_M_mtx): 5200 Remove. 5201 (stop_token::_Stop_state::_M_owners): New data member to track 5202 reference count for ownership. 5203 (stop_token::_Stop_state::_M_value): New data member combining a 5204 spinlock, the stop requested flag, and the reference count for 5205 associated stop_source objects. 5206 (stop_token::_Stop_state::_M_requester): New data member for 5207 synchronization with stop_callback destruction. 5208 (stop_token::_Stop_state::_M_stop_possible()): New member function. 5209 (stop_token::_Stop_state::_M_stop_requested()): Inspect relevant bit 5210 of _M_value. 5211 (stop_token::_Stop_state::_M_add_owner) 5212 (stop_token::_Stop_state::_M_release_ownership) 5213 (stop_token::_Stop_state::_M_add_ssrc) 5214 (stop_token::_Stop_state::_M_sub_ssrc): New member functions for 5215 updating reference counts. 5216 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock) 5217 (stop_token::_Stop_state::_M_lock, stop_token::_Stop_state::_M_unlock) 5218 (stop_token::_Stop_state::_M_try_lock) 5219 (stop_token::_Stop_state::_M_try_lock_and_stop) 5220 (stop_token::_Stop_state::_M_do_try_lock): New member functions for 5221 managing spinlock. 5222 (stop_token::_Stop_state::_M_request_stop): Use atomic operations to 5223 read and update state. Release lock while running callbacks. Use new 5224 data members to synchronize with callback destruction. 5225 (stop_token::_Stop_state::_M_remove_callback): Likewise. 5226 (stop_token::_Stop_state::_M_register_callback): Use atomic operations 5227 to read and update state. 5228 (stop_token::_Stop_state_ref): Handle type to manage _Stop_state, 5229 replacing shared_ptr. 5230 (stop_source::stop_source(const stop_source&)): Update reference count. 5231 (stop_source::operator=(const stop_source&)): Likewise. 5232 (stop_source::~stop_source()): Likewise. 5233 (stop_source::stop_source(stop_source&&)): Define as defaulted. 5234 (stop_source::operator=(stop_source&&)): Establish postcondition on 5235 parameter. 5236 (stop_callback): Enforce preconditions on template parameter. Replace 5237 base class with data member of new _Cb_impl type. 5238 (stop_callback::stop_callback(const stop_token&, Cb&&)) 5239 (stop_callback::stop_callback(stop_token&&, Cb&&)): Fix TOCTTOU race. 5240 (stop_callback::_Cb_impl): New type wrapping _Callback member and 5241 defining the _S_execute member function. 5242 * testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc: New 5243 test. 5244 * testsuite/30_threads/stop_token/stop_callback/deadlock.cc: New test. 5245 * testsuite/30_threads/stop_token/stop_callback/destroy.cc: New test. 5246 * testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc: 5247 New test. 5248 * testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc: New 5249 test. 5250 * testsuite/30_threads/stop_token/stop_callback/invoke.cc: New test. 5251 * testsuite/30_threads/stop_token/stop_source/assign.cc: New test. 5252 * testsuite/30_threads/stop_token/stop_token/stop_possible.cc: New 5253 test. 5254 5255 * libsupc++/compare (__detail::__3way_builtin_ptr_cmp): Use 5256 three_way_comparable_with. 5257 (__detail::__3way_cmp_with): Remove workaround for fixed bug. 5258 (compare_three_way::operator()): Remove redundant constraint from 5259 requires-clause. 5260 (__detail::_Synth3way::operator()): Use three_way_comparable_with 5261 instead of workaround. 5262 * testsuite/18_support/comparisons/object/93479.cc: Prune extra 5263 output due to simplified constraints on compare_three_way::operator(). 5264 5265 PR libstdc++/93479 5266 * libsupc++/compare (__3way_builtin_ptr_cmp): Require <=> to be valid. 5267 * testsuite/18_support/comparisons/object/93479.cc: New test. 5268 5269 * testsuite/std/ranges/access/end.cc: Do not assume test_range::end() 5270 returns the same type as test_range::begin(). Add comments. 5271 * testsuite/std/ranges/access/rbegin.cc: Likewise. 5272 * testsuite/std/ranges/access/rend.cc: Likewise. 5273 * testsuite/std/ranges/range.cc: Do not assume the sentinel for 5274 test_range is the same as its iterator type. 5275 * testsuite/util/testsuite_iterators.h (test_range::sentinel): Add 5276 operator- overloads to satisfy sized_sentinel_for when the iterator 5277 satisfies random_access_iterator. 5278 52792020-01-28 Jonathan Wakely <jwakely@redhat.com> 5280 5281 PR libstdc++/93470 5282 * include/bits/refwrap.h (reference_wrapper::operator()): Restrict 5283 static assertion to object types. 5284 5285 PR libstdc++/93325 5286 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Use AC_SEARCH_LIBS for 5287 clock_gettime instead of explicit glibc version check. 5288 * configure: Regenerate. 5289 52902020-01-28 Martin Liska <mliska@suse.cz> 5291 5292 PR libstdc++/93478 5293 * include/std/atomic: Fix typo. 5294 * include/std/optional: Likewise. 5295 52962020-01-27 Andrew Burgess <andrew.burgess@embecosm.com> 5297 5298 * configure: Regenerate. 5299 53002020-01-27 Jonathan Wakely <jwakely@redhat.com> 5301 5302 PR libstdc++/93426 5303 * include/std/span (span): Fix deduction guide. 5304 * testsuite/23_containers/span/deduction.cc: New test. 5305 53062020-01-24 Jonathan Wakely <jwakely@redhat.com> 5307 5308 * libsupc++/compare (__cmp_cat::_Eq): Remove enumeration type. 5309 (__cmp_cat::_Ord::equivalent): Add enumerator. 5310 (__cmp_cat::_Ord::_Less, __cmp_cat::_Ord::_Greater): Rename to less 5311 and greater. 5312 (partial_ordering, weak_ordering, strong_ordering): Remove 5313 constructors taking __cmp_cat::_Eq parameters. Use renamed 5314 enumerators. 5315 53162020-01-24 Maciej W. Rozycki <macro@wdc.com> 5317 5318 * acinclude.m4: Handle `--with-toolexeclibdir='. 5319 * Makefile.in: Regenerate. 5320 * aclocal.m4: Regenerate. 5321 * configure: Regenerate. 5322 * doc/Makefile.in: Regenerate. 5323 * include/Makefile.in: Regenerate. 5324 * libsupc++/Makefile.in: Regenerate. 5325 * po/Makefile.in: Regenerate. 5326 * python/Makefile.in: Regenerate. 5327 * src/Makefile.in: Regenerate. 5328 * src/c++11/Makefile.in: Regenerate. 5329 * src/c++17/Makefile.in: Regenerate. 5330 * src/c++98/Makefile.in: Regenerate. 5331 * src/filesystem/Makefile.in: Regenerate. 5332 * testsuite/Makefile.in: Regenerate. 5333 53342020-01-23 Alexandre Oliva <oliva@adacore.com> 5335 5336 * crossconfig.m4 (GLIBCXX_CHECK_MATH_DECL): Reject macros. 5337 * configure: Rebuild. 5338 5339 * testsuite/27_io/fpos/mbstate_t/1.cc: Zero-init mbstate_t. 5340 53412020-01-23 Jonathan Wakely <jwakely@redhat.com> 5342 5343 PR libstdc++/91947 5344 * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify 5345 rule. 5346 * include/Makefile.in: Regenerate. 5347 53482020-01-20 Jonathan Wakely <jwakely@redhat.com> 5349 5350 * doc/xml/faq.xml: Fix grammar. 5351 * doc/xml/manual/appendix_contributing.xml: Improve instructions. 5352 * doc/xml/manual/spine.xml: Update copyright years. 5353 * doc/html/*: Regenerate. 5354 53552020-01-19 Eric S. Raymond <esr@thyrsus.com> 5356 5357 * doc/xml/faq.xml: Update for SVN -> Git transition. 5358 * doc/xml/manual/appendix_contributing.xml: Likewise. 5359 * doc/xml/manual/status_cxx1998.xml: Likewise. 5360 * doc/xml/manual/status_cxx2011.xml: Likewise. 5361 * doc/xml/manual/status_cxx2014.xml: Likewise. 5362 * doc/xml/manual/status_cxx2017.xml: Likewise. 5363 * doc/xml/manual/status_cxx2020.xml: Likewise. 5364 * doc/xml/manual/status_cxxtr1.xml: Likewise. 5365 * doc/xml/manual/status_cxxtr24733.xml: Likewise. 5366 53672020-01-18 Iain Sandoe <iain@sandoe.co.uk> 5368 5369 * include/Makefile.am: Add coroutine to the std set. 5370 * include/Makefile.in: Regenerated. 5371 * include/std/coroutine: New file. 5372 53732020-01-17 Jonathan Wakely <jwakely@redhat.com> 5374 5375 PR libstdc++/92376 5376 * include/bits/c++config: Only do PSTL config when the header is 5377 present, to fix freestanding. 5378 * libsupc++/new_opa.cc [!_GLIBCXX_HOSTED]: Declare allocation 5379 functions if they were detected by configure. 5380 53812020-01-16 Kai-Uwe Eckhardt <kuehro@gmx.de> 5382 Matthew Bauer <mjbauer95@gmail.com> 5383 Jonathan Wakely <jwakely@redhat.com> 5384 5385 PR bootstrap/64271 (partial) 5386 * config/os/bsd/netbsd/ctype_base.h (ctype_base::mask): Change type 5387 to unsigned short. 5388 (ctype_base::alpha, ctype_base::digit, ctype_base::xdigit) 5389 (ctype_base::print, ctype_base::graph, ctype_base::alnum): Sync 5390 definitions with NetBSD upstream. 5391 (ctype_base::blank): Use _CTYPE_BL. 5392 * config/os/bsd/netbsd/ctype_configure_char.cc (_C_ctype_): Remove 5393 Declaration. 5394 (ctype<char>::classic_table): Use _C_ctype_tab_ instead of _C_ctype_. 5395 (ctype<char>::do_toupper, ctype<char>::do_tolower): Cast char 5396 parameters to unsigned char. 5397 * config/os/bsd/netbsd/ctype_inline.h (ctype<char>::is): Likewise. 5398 53992020-01-16 François Dumont <fdumont@gcc.gnu.org> 5400 5401 PR libstdc++/91263 5402 * include/bits/hashtable.h (_Hashtable<>): Make _Equality<> friend. 5403 * include/bits/hashtable_policy.h: Include <bits/stl_algo.h>. 5404 (_Equality_base): Remove. 5405 (_Equality<>::_M_equal): Review implementation. Use 5406 std::is_permutation. 5407 * testsuite/23_containers/unordered_multiset/operators/1.cc 5408 (Hash, Equal, test02, test03): New. 5409 * testsuite/23_containers/unordered_set/operators/1.cc 5410 (Hash, Equal, test02, test03): New. 5411 54122020-01-15 Jonathan Wakely <jwakely@redhat.com> 5413 5414 PR libstdc++/93267 5415 * include/bits/iterator_concepts.h (__max_diff_type, __max_size_type): 5416 Move here from <bits/range_access.h> and define using __int128 when 5417 available. 5418 (__is_integer_like, __is_signed_integer_like): Move here from 5419 <bits/range_access.h>. 5420 (weakly_incrementable): Use __is_signed_integer_like. 5421 * include/bits/range_access.h (__max_diff_type, __max_size_type) 5422 (__is_integer_like, __is_signed_integer_like): Move to 5423 <bits/iterator_concepts.h>. 5424 (__make_unsigned_like_t): Move here from <ranges>. 5425 * include/std/ranges (__make_unsigned_like_t): Move to 5426 <bits/range_access.h>. 5427 (iota_view): Replace using-directive with using-declarations. 5428 * testsuite/std/ranges/iota/93267.cc: New test. 5429 * testsuite/std/ranges/iota_view.cc: Move to new 'iota' sub-directory. 5430 54312020-01-13 Jonathan Wakely <jwakely@redhat.com> 5432 5433 PR libstdc++/93244 5434 * include/bits/fs_path.h (path::generic_string<C,A>) 5435 [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Convert root-dir to forward-slash. 5436 * testsuite/27_io/filesystem/path/generic/generic_string.cc: Check 5437 root-dir is converted to forward slash in generic pathname. 5438 * testsuite/27_io/filesystem/path/generic/utf.cc: New test. 5439 * testsuite/27_io/filesystem/path/generic/wchar_t.cc: New test. 5440 5441 PR libstdc++/58605 5442 * include/bits/atomic_base.h (__cpp_lib_atomic_value_initialization): 5443 Define. 5444 (__atomic_flag_base, __atomic_base, __atomic_base<_PTp*>) 5445 (__atomic_float): Add default member initializer for C++20. 5446 * include/std/atomic (atomic): Likewise. 5447 (atomic::atomic()): Remove noexcept-specifier on default constructor. 5448 * include/std/version (__cpp_lib_atomic_value_initialization): Define. 5449 * testsuite/29_atomics/atomic/cons/assign_neg.cc: Adjust dg-error line 5450 number. 5451 * testsuite/29_atomics/atomic/cons/copy_neg.cc: Likewise. 5452 * testsuite/29_atomics/atomic/cons/value_init.cc: New test. 5453 * testsuite/29_atomics/atomic_flag/cons/value_init.cc: New test. 5454 * testsuite/29_atomics/atomic_flag/requirements/trivial.cc: Adjust 5455 expected result for is_trivially_default_constructible. 5456 * testsuite/29_atomics/atomic_float/requirements.cc: Likewise. 5457 * testsuite/29_atomics/atomic_float/value_init.cc: New test. 5458 * testsuite/29_atomics/atomic_integral/cons/assign_neg.cc: Likewise. 5459 * testsuite/29_atomics/atomic_integral/cons/copy_neg.cc: Likewise. 5460 * testsuite/29_atomics/atomic_integral/cons/value_init.cc 5461 * testsuite/29_atomics/atomic_integral/requirements/trivial.cc: Adjust 5462 expected results for is_trivially_default_constructible. 5463 * testsuite/util/testsuite_common_types.h (has_trivial_dtor): Add 5464 new test generator. 5465 54662020-01-10 Jonathan Wakely <jwakely@redhat.com> 5467 5468 * testsuite/util/testsuite_iterators.h: Improve comment. 5469 5470 * testsuite/25_algorithms/equal/deque_iterators/1.cc: Don't use C++11 5471 initialization syntax. 5472 5473 PR libstdc++/92285 5474 * include/bits/streambuf_iterator.h (istreambuf_iterator): Make type 5475 of base class independent of __cplusplus value. 5476 [__cplusplus < 201103L] (istreambuf_iterator::reference): Override the 5477 type defined in the base class 5478 * testsuite/24_iterators/istreambuf_iterator/92285.cc: New test. 5479 * testsuite/24_iterators/istreambuf_iterator/requirements/ 5480 base_classes.cc: Adjust expected base class for C++98. 5481 54822020-01-09 Olivier Hainque <hainque@adacore.com> 5483 5484 * doc/xml/manual/appendix_contributing.xml: Document _C2 5485 as a reserved identifier, by VxWorks. 5486 * include/bits/stl_map.h: Rename _C2 template typenames as _Cmp2. 5487 * include/bits/stl_multimap.h: Likewise. 5488 54892020-01-09 Jonathan Wakely <jwakely@redhat.com> 5490 5491 * include/ext/extptr_allocator.h (_ExtPtr_allocator::operator==) 5492 (_ExtPtr_allocator::operator!=): Add missing const qualifiers. 5493 * include/ext/pointer.h (readable_traits<_Pointer_adapter<S>>): Add 5494 partial specialization to disambiguate the two constrained 5495 specializations. 5496 5497 * include/experimental/type_traits (experimental::is_pod_v): Disable 5498 -Wdeprecated-declarations warnings around reference to std::is_pod. 5499 * include/std/type_traits (is_pod_v): Likewise. 5500 * testsuite/18_support/max_align_t/requirements/2.cc: Also check 5501 is_standard_layout and is_trivial. Do not check is_pod for C++20. 5502 * testsuite/20_util/is_pod/requirements/explicit_instantiation.cc: 5503 Add -Wno-deprecated for C++20. 5504 * testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise. 5505 * testsuite/20_util/is_pod/value.cc: Likewise. 5506 * testsuite/experimental/type_traits/value.cc: Likewise. 5507 55082020-01-09 JeanHeyd "ThePhD" Meneide <phdofthehouse@gmail.com> 5509 5510 * include/bits/c++config (_GLIBCXX20_DEPRECATED): Add new macro. 5511 * include/std/type_traits (is_pod, is_pod_v): Deprecate for C++20. 5512 * testuite/20_util/is_pod/deprecated-2a.cc: New test. 5513 55142020-01-09 Jonathan Wakely <jwakely@redhat.com> 5515 5516 PR libstdc++/93205 5517 * include/bits/random.h (operator>>): Check stream operation succeeds. 5518 * include/bits/random.tcc (operator<<): Remove redundant __ostream_type 5519 typedefs. 5520 (operator>>): Remove redundant __istream_type typedefs. Check stream 5521 operations succeed. 5522 (__extract_params): New function to fill a vector from a stream. 5523 * testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error line. 5524 5525 PR libstdc++/93208 5526 * config/abi/pre/gnu.ver: Add new exports. 5527 * include/std/memory_resource (memory_resource::~memory_resource()): 5528 Do not define inline. 5529 (monotonic_buffer_resource::~monotonic_buffer_resource()): Likewise. 5530 * src/c++17/memory_resource.cc (memory_resource::~memory_resource()): 5531 Define. 5532 (monotonic_buffer_resource::~monotonic_buffer_resource()): Define. 5533 * testsuite/20_util/monotonic_buffer_resource/93208.cc: New test. 5534 55352020-01-09 François Dumont <fdumont@gcc.gnu.org> 5536 5537 PR libstdc++/92124 5538 * include/bits/hashtable.h (_Hashtable<>::__alloc_node_gen_t): New 5539 template alias. 5540 (_Hashtable<>::__fwd_value_for): New. 5541 (_Hashtable<>::_M_assign_elements<>): Remove _NodeGenerator template 5542 parameter. 5543 (_Hashtable<>::_M_assign<>): Add _Ht template parameter. 5544 (_Hashtable<>::operator=(const _Hashtable<>&)): Adapt. 5545 (_Hashtable<>::_M_move_assign): Adapt. Replace std::move_if_noexcept 5546 with std::move. 5547 (_Hashtable<>::_Hashtable(const _Hashtable&)): Adapt. 5548 (_Hashtable<>::_Hashtable(const _Hashtable&, const allocator_type&)): 5549 Adapt. 5550 (_Hashtable<>::_Hashtable(_Hashtable&&, const allocator_type&)): 5551 Adapt. 5552 * testsuite/23_containers/unordered_set/92124.cc: New. 5553 55542020-01-08 Jonathan Wakely <jwakely@redhat.com> 5555 5556 PR libstdc++/93201 5557 * src/c++17/fs_ops.cc (do_remove_all): New function implementing more 5558 detailed error reporting for remove_all. Check result of recursive 5559 call before incrementing iterator. 5560 (remove_all(const path&), remove_all(const path&, error_code&)): Use 5561 do_remove_all. 5562 * src/filesystem/ops.cc (remove_all(const path&, error_code&)): Check 5563 result of recursive call before incrementing iterator. 5564 * testsuite/27_io/filesystem/operations/remove_all.cc: Check errors 5565 are reported correctly. 5566 * testsuite/experimental/filesystem/operations/remove_all.cc: Likewise. 5567 55682020-01-07 Thomas Rodgers <trodgers@redhat.com> 5569 5570 * include/std/condition_variable 5571 (condition_variable_any::wait_on): Rename to match current draft 5572 standard. 5573 (condition_variable_any::wait_on_until): Likewise. 5574 (condition_variable_any::wait_on_for): Likewise. 5575 * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc: 5576 Adjust tests to account for renamed methods. 5577 55782020-01-07 François Dumont <fdumont@gcc.gnu.org> 5579 5580 PR libstdc++/92124 5581 * include/bits/stl_tree.h 5582 (_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace 5583 std::move_if_noexcept by std::move. 5584 * testsuite/23_containers/map/92124.cc: New. 5585 * testsuite/23_containers/set/92124.cc: New. 5586 55872020-01-06 Jonathan Wakely <jwakely@redhat.com> 5588 5589 * include/std/stop_token (stop_token): Remove operator!= (LWG 3254). 5590 (stop_source): Likewise (LWG 3362). 5591 * testsuite/30_threads/stop_token/stop_source.cc: Test equality 5592 comparisons. 5593 5594 * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp) 5595 (lexicographical_compare_three_way): Do not depend on 5596 __cpp_lib_concepts. 5597 * include/std/version (__cpp_lib_three_way_comparison): Only define 5598 when __cpp_lib_concepts is defined. 5599 * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise. 5600 56012020-01-03 Jonathan Wakely <jwakely@redhat.com> 5602 5603 * include/bits/stl_algobase.h (lexicographical_compare_three_way): 5604 Only define four-argument overload when __cpp_lib_concepts is defined. 5605 56062020-01-01 John David Anglin <danglin@gcc.gnu.org> 5607 5608 * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. 5609 56102020-01-01 Jakub Jelinek <jakub@redhat.com> 5611 5612 Update copyright years. 5613 5614Copyright (C) 2020 Free Software Foundation, Inc. 5615 5616Copying and distribution of this file, with or without modification, 5617are permitted in any medium without royalty provided the copyright 5618notice and this notice are preserved. 5619