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